package org.codehaus.modello.plugin.java.javasource; import java.io.File; import org.codehaus.modello.AbstractModelloGeneratorTest; public class JavaSourceTest extends AbstractModelloGeneratorTest { public JavaSourceTest() { super( "javasource" ); } public void testJavaSource() { checkJClass(); checkJCompUnit(); checkJInterface(); } private void checkJClass() { JClass testClass = new JClass( "org.acme.JClassTest" ); testClass.addSourceCode( "// source code" ); testClass.addSourceCode( "// source code 2" ); testClass.addImport( "java.util.Vector" ); testClass.appendAnnotation( "@SuppressWarnings( \"all\" )" ); testClass.appendAnnotation( "@Deprecated" ); testClass.addMember( new JField( JType.INT, "x" ) ); JClass jcString = new JClass( "String" ); JField field = null; field = new JField( JType.INT, "_z" ); field.appendAnnotation( "@Deprecated" ); field.getModifiers().setStatic( true ); testClass.addField( field ); testClass.getStaticInitializationCode().add( "_z = 75;" ); field = new JField( jcString, "myString" ); field.getModifiers().makePrivate(); testClass.addMember( field ); // generics test JType type = new JCollectionType( "java.util.List", jcString, true ); field = new JField( type, "generics" ); testClass.addMember( field ); type = new JCollectionType( "java.util.List", jcString, false ); field = new JField( type, "noGenerics" ); testClass.addMember( field ); //-- create constructor JConstructor cons = testClass.createConstructor(); cons.appendAnnotation( "@Deprecated" ); cons.getSourceCode().add( "this.x = 6;" ); JMethod jMethod = new JMethod( "getX", JType.INT, null ); jMethod.appendAnnotation( "@Deprecated" ); jMethod.setSourceCode( "return this.x;" ); testClass.addMethod( jMethod ); jMethod = new JMethod( "setX", null, null ); JParameter param = new JParameter( JType.INT, "x" ); jMethod.addParameter( param ); jMethod.setSourceCode( "this.x = x;" ); testClass.addMethod( jMethod ); jMethod = new JMethod( "checkParameterAnotation", JType.INT, null ); param = new JParameter( JType.LONG, "param" ); param.appendAnnotation( "@Test" ); param.appendAnnotation( "@Test2" ); jMethod.addParameter( param ); jMethod.setSourceCode( "return param;" ); testClass.addMethod( jMethod ); //-- create inner-class JClass innerClass = testClass.createInnerClass( "Foo" ); innerClass.appendAnnotation( "@Deprecated" ); innerClass.addImport( "java.util.Hashtable" ); innerClass.addMember( new JField( JType.INT, "_type" ) ); field = new JField( jcString, "_name" ); field.getModifiers().makePrivate(); innerClass.addMember( field ); testClass.createInnerClass( "Bar" ); //-- create constructor cons = innerClass.createConstructor(); cons.getSourceCode().add( "_name = \"foo\";" ); jMethod = new JMethod( "getName", jcString, null ); jMethod.setSourceCode( "return _name;" ); innerClass.addMethod( jMethod ); testClass.print( getOutputDirectory().toString(), null ); assertTrue( new File( getOutputDirectory(), "org/acme/JClassTest.java" ).exists() ); } private void checkJCompUnit() { JCompUnit unit = new JCompUnit( "com.acme", "JCompUnitTest.java" ); JClass testClass = new JClass( "Test" ); testClass.addImport( "java.util.Vector" ); testClass.addMember( new JField( JType.INT, "x" ) ); JField field = null; field = new JField( JType.INT, "_z" ); field.getModifiers().setStatic( true ); testClass.addField( field ); testClass.getStaticInitializationCode().add( "_z = 75;" ); JClass jcString = new JClass( "String" ); field = new JField( jcString, "myString" ); field.getModifiers().makePrivate(); testClass.addMember( field ); // -- create constructor JConstructor cons = testClass.createConstructor(); testClass.addConstructor( cons ); cons.getSourceCode().add( "this.x = 6;" ); JMethod jMethod = new JMethod( "getX", JType.INT, null ); jMethod.setSourceCode( "return this.x;" ); testClass.addMethod( jMethod ); unit.addClass( testClass ); JClass fooClass = new JClass( "Foo" ); unit.addClass( fooClass ); unit.print( getOutputDirectory().toString(), null ); assertTrue( new File( getOutputDirectory(), "com/acme/JCompUnitTest.java" ).exists() ); } private void checkJInterface() { JInterface jInterface = new JInterface( "InterfaceTest" ); // -- add an import jInterface.addImport( "java.util.Vector" ); JClass jString = new JClass( "String" ); // -- add an interface jInterface.addInterface( "java.io.Serializable" ); // -- add a static field JField jField = new JField( new JClass( "java.lang.String" ), "TEST" ); jField.setInitString( "\"Test\"" ); jField.getModifiers().setStatic( true ); jField.getModifiers().makePublic(); jInterface.addField( jField ); // -- add a method signature JMethodSignature jMethodSig = new JMethodSignature( "getName", jString ); jInterface.addMethod( jMethodSig ); jInterface.print( getOutputDirectory().toString(), null ); assertTrue( new File( getOutputDirectory(), "InterfaceTest.java" ).exists() ); } }