Skip to content

Instantly share code, notes, and snippets.

@edefazio
Last active January 22, 2017 02:53
Show Gist options
  • Save edefazio/0e566868ab5f134720cfde6db24b9b11 to your computer and use it in GitHub Desktop.
Save edefazio/0e566868ab5f134720cfde6db24b9b11 to your computer and use it in GitHub Desktop.
varcode example build enum Model
package usecase.model;
import varcode.java.Java;
import varcode.java.adhoc.Export;
import varcode.java.model._enum;
public class ModelEnum
{
static _enum _ModelOfEnum = _enum.of(
"package usecase.model;",
"import java.util.UUID;",
"import java.io.Serializable",
"/** Enum Javadoc comment */",
"@Deprecated",
"public enum ModelOfEnum implements Serializable" )
.staticBlock( "System.out.println( \"In Enum Static Block\" );" )
.field( "private static final long serialVersionUID = 42L;" )
.property( // a "property is a field with getter method
"/** Field JavaDoc */",
"@Deprecated",
"public final int memberField;" )
.method(
"/** Method Javadoc*/",
"@Deprecated",
"public String getId( String prefix )",
"return prefix + UUID.randomUUID().toString();" )
.mainMethod( "System.out.println( \"Hello Enum Main Method\");" )
.constructor(
"/** constructor Javadoc */",
"@Deprecated",
"private ModelOfEnum( int fieldValue )",
"this.memberField = fieldValue;" )
.constant( "A", 1 )
.constant( "B", 2 );
public static void main( String[] args )
{
Export.dir( "C:\\MyApp\\src\\main\\java" ).toFile( _ModelOfEnum );
Class enumClass = _ModelOfEnum.loadClass();
Object[] constants = enumClass.getEnumConstants();
Java.callMain( constants[0] ); //call the main method using Enum class
Java.call( constants[0], "getId", "somePrefix" ); //call static method on constant instance
//export the "C:/MyApp/target/classes/usecase/model/ModelOfEnum.class"
Export.dir( "C:\\MyApp\\target\\classes" ).toFile( enumClass ); //export the enum .class to a file
}
}
@edefazio
Copy link
Author

edefazio commented Jan 22, 2017

contents of the exported .java source code at "C:/MyApp/src/main/java/usecase/model/ModelEnum.java"

package usecase.model;

import java.io.Serializable;
import java.util.UUID;;

/**
 *  Enum Javadoc comment 
 */
@Deprecated
public enum ModelOfEnum
{
    A( 1 ),
    B( 2 );

    private static final long serialVersionUID = 42L;
    /**
     *  Field JavaDoc 
     */
    @Deprecated
    public final int memberField;
    /**
     *  constructor Javadoc 
     */
    @Deprecated
    private ModelOfEnum( int fieldValue )
    {
        this.memberField = fieldValue;
    }

    public static void main( String[] args )
    {
        System.out.println( "Hello Enum Main Method");
    }
    public int getMemberField(  )
    {
        return this.memberField;
    }
    /**
     *  Method Javadoc
     */
    @Deprecated
    public String getId( String prefix )
    {
        return prefix + UUID.randomUUID().toString();
    }
    static
    {
        System.out.println( "In Enum Static Block" );
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment