01: package spoon.jdiet;
02:
03: import java.util.Collection;
04: import java.util.Iterator;
05: import java.util.Map;
06:
07: import spoon.jdiet.rt.MapEntryImpl;
08: import spoon.processing.AbstractProcessor;
09: import spoon.reflect.declaration.CtVariable;
10: import spoon.reflect.factory.TypeFactory;
11: import spoon.reflect.reference.CtTypeReference;
12:
13: /**
14: * This processor replaces variable (local variables, parameters and fields)
15: * declarations with a J2ME compliant equivalent declaration.
16: *
17: * @author Lionel Seinturier <Lionel.Seinturier@lifl.fr>
18: */
19: public class VariableProcessor extends AbstractProcessor<CtVariable> {
20:
21: public void process(CtVariable lv) {
22:
23: TypeFactory tf = getFactory().Type();
24: CtTypeReference ctr = lv.getType();
25:
26: if (!ctr.isPrimitif()) {
27:
28: // Transform Collection declarations into Vector
29: if (ctr.isSubtypeOf(tf.createReference(Collection.class))) {
30: ctr.setSimpleName("Vector");
31: }
32:
33: // Transform Iterator declarations into Enumeration
34: else if (ctr
35: .isSubtypeOf(tf.createReference(Iterator.class))) {
36: ctr.setSimpleName("Enumeration");
37: }
38:
39: // Transform Map declarations into Hashtable
40: else if (ctr.isSubtypeOf(tf.createReference(Map.class))) {
41: ctr.setSimpleName("Hashtable");
42: }
43:
44: // Transform Map.Entry declarations into MapEntryImpl
45: else if (ctr.isSubtypeOf(tf
46: .createReference(Map.Entry.class))) {
47: lv.setType(tf.createReference(MapEntryImpl.class));
48: }
49: }
50: }
51:
52: }
|