View Javadoc
1   package org.codehaus.modello.plugin.java.javasource;
2   
3   import java.io.File;
4   
5   import org.codehaus.modello.AbstractModelloGeneratorTest;
6   
7   public class JavaSourceTest extends AbstractModelloGeneratorTest {
8       public JavaSourceTest() {
9           super("javasource");
10      }
11  
12      public void testJavaSource() {
13          checkJClass();
14          checkJCompUnit();
15          checkJInterface();
16      }
17  
18      private void checkJClass() {
19          JClass testClass = new JClass("org.acme.JClassTest");
20  
21          testClass.addSourceCode("// source code");
22          testClass.addSourceCode("// source code 2");
23  
24          testClass.addImport("java.util.Vector");
25          testClass.appendAnnotation("@SuppressWarnings( \"all\" )");
26          testClass.appendAnnotation("@Deprecated");
27          testClass.addMember(new JField(JType.INT, "x"));
28          JClass jcString = new JClass("String");
29  
30          JField field = null;
31          field = new JField(JType.INT, "_z");
32          field.appendAnnotation("@Deprecated");
33          field.getModifiers().setStatic(true);
34          testClass.addField(field);
35  
36          testClass.getStaticInitializationCode().add("_z = 75;");
37  
38          field = new JField(jcString, "myString");
39          field.getModifiers().makePrivate();
40          testClass.addMember(field);
41  
42          // generics test
43          JType type = new JCollectionType("java.util.List", jcString, true);
44          field = new JField(type, "generics");
45          testClass.addMember(field);
46  
47          type = new JCollectionType("java.util.List", jcString, false);
48          field = new JField(type, "noGenerics");
49          testClass.addMember(field);
50  
51          // -- create constructor
52          JConstructor cons = testClass.createConstructor();
53          cons.appendAnnotation("@Deprecated");
54          cons.getSourceCode().add("this.x = 6;");
55  
56          JMethod jMethod = new JMethod("getX", JType.INT, null);
57          jMethod.appendAnnotation("@Deprecated");
58          jMethod.setSourceCode("return this.x;");
59          testClass.addMethod(jMethod);
60  
61          jMethod = new JMethod("setX", null, null);
62          JParameter param = new JParameter(JType.INT, "x");
63          jMethod.addParameter(param);
64          jMethod.setSourceCode("this.x = x;");
65          testClass.addMethod(jMethod);
66  
67          jMethod = new JMethod("checkParameterAnotation", JType.INT, null);
68          param = new JParameter(JType.LONG, "param");
69          param.appendAnnotation("@Test");
70          param.appendAnnotation("@Test2");
71          jMethod.addParameter(param);
72          jMethod.setSourceCode("return param;");
73          testClass.addMethod(jMethod);
74  
75          // -- create inner-class
76          JClass innerClass = testClass.createInnerClass("Foo");
77          innerClass.appendAnnotation("@Deprecated");
78          innerClass.addImport("java.util.Hashtable");
79          innerClass.addMember(new JField(JType.INT, "_type"));
80  
81          field = new JField(jcString, "_name");
82          field.getModifiers().makePrivate();
83          innerClass.addMember(field);
84  
85          testClass.createInnerClass("Bar");
86  
87          // -- create constructor
88          cons = innerClass.createConstructor();
89          cons.getSourceCode().add("_name = \"foo\";");
90  
91          jMethod = new JMethod("getName", jcString, null);
92          jMethod.setSourceCode("return _name;");
93          innerClass.addMethod(jMethod);
94  
95          testClass.print(getOutputDirectory().toString(), null);
96  
97          assertTrue(new File(getOutputDirectory(), "org/acme/JClassTest.java").exists());
98      }
99  
100     private void checkJCompUnit() {
101         JCompUnit unit = new JCompUnit("com.acme", "JCompUnitTest.java");
102 
103         JClass testClass = new JClass("Test");
104 
105         testClass.addImport("java.util.Vector");
106         testClass.addMember(new JField(JType.INT, "x"));
107 
108         JField field = null;
109         field = new JField(JType.INT, "_z");
110         field.getModifiers().setStatic(true);
111         testClass.addField(field);
112 
113         testClass.getStaticInitializationCode().add("_z = 75;");
114 
115         JClass jcString = new JClass("String");
116         field = new JField(jcString, "myString");
117         field.getModifiers().makePrivate();
118         testClass.addMember(field);
119 
120         // -- create constructor
121         JConstructor cons = testClass.createConstructor();
122         testClass.addConstructor(cons);
123         cons.getSourceCode().add("this.x = 6;");
124 
125         JMethod jMethod = new JMethod("getX", JType.INT, null);
126         jMethod.setSourceCode("return this.x;");
127         testClass.addMethod(jMethod);
128 
129         unit.addClass(testClass);
130 
131         JClass fooClass = new JClass("Foo");
132         unit.addClass(fooClass);
133 
134         unit.print(getOutputDirectory().toString(), null);
135 
136         assertTrue(new File(getOutputDirectory(), "com/acme/JCompUnitTest.java").exists());
137     }
138 
139     private void checkJInterface() {
140         JInterface jInterface = new JInterface("InterfaceTest");
141 
142         // -- add an import
143         jInterface.addImport("java.util.Vector");
144         JClass jString = new JClass("String");
145 
146         // -- add an interface
147         jInterface.addInterface("java.io.Serializable");
148 
149         // -- add a static field
150         JField jField = new JField(new JClass("java.lang.String"), "TEST");
151         jField.setInitString("\"Test\"");
152         jField.getModifiers().setStatic(true);
153         jField.getModifiers().makePublic();
154         jInterface.addField(jField);
155 
156         // -- add a method signature
157         JMethodSignature jMethodSig = new JMethodSignature("getName", jString);
158         jInterface.addMethod(jMethodSig);
159         jInterface.print(getOutputDirectory().toString(), null);
160 
161         assertTrue(new File(getOutputDirectory(), "InterfaceTest.java").exists());
162     }
163 }