KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > spoon > jdiet > VariableProcessor


1 package spoon.jdiet;
2
3 import java.util.Collection JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.Map JavaDoc;
6
7 import spoon.jdiet.rt.MapEntryImpl;
8 import spoon.processing.AbstractProcessor;
9 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 JavaDoc.class)) ) {
30                 ctr.setSimpleName("Vector");
31             }
32             
33             // Transform Iterator declarations into Enumeration
34
else if( ctr.isSubtypeOf(tf.createReference(Iterator JavaDoc.class)) ) {
35                 ctr.setSimpleName("Enumeration");
36             }
37
38             // Transform Map declarations into Hashtable
39
else if( ctr.isSubtypeOf(tf.createReference(Map JavaDoc.class)) ) {
40                 ctr.setSimpleName("Hashtable");
41             }
42             
43             // Transform Map.Entry declarations into MapEntryImpl
44
else if( ctr.isSubtypeOf(tf.createReference(Map.Entry JavaDoc.class)) ) {
45                 lv.setType(tf.createReference(MapEntryImpl.class));
46             }
47         }
48     }
49
50 }
51
Popular Tags