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
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
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
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
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
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
143 jInterface.addImport("java.util.Vector");
144 JClass jString = new JClass("String");
145
146
147 jInterface.addInterface("java.io.Serializable");
148
149
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
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 }