Ich wechselte von FreeMarker zu meinem eigenen Java-Quellcode-Generierungsprogramm. Die Quellen sind von hier zugänglich: https://source.mysema.com/svn/mysema/projects/codegen/trunk/
Es ist so konzipiert, dass Sie nur die API aufrufen und die Ausgabe richtig formatiert ist. Hier ein Beispiel:
JavaWriter writer = new JavaWriter(new StringWriter());
writer.beginClass("FieldTests");
writer.privateField("String", "privateField");
writer.privateStaticFinal("String", "privateStaticFinal", "\"val\"");
writer.protectedField("String","protectedField");
writer.field("String","field");
writer.publicField("String","publicField");
writer.publicStaticFinal("String", "publicStaticFinal", "\"val\"");
writer.publicFinal("String", "publicFinalField");
writer.publicFinal("String", "publicFinalField2", "\"val\"");
writer.end();
Welche verwandelt sich in
public class FieldTests {
private String privateField;
private static final String privateStaticFinal = "val";
protected String protectedField;
String field;
public String publicField;
public static final String publicStaticFinal = "val";
public final String publicFinalField;
public final String publicFinalField2 = "val";
}
ich das codegen Dienstprogramm für Querydsl entwickelt, die Spiegel Java Domain-Typen in Abfragetypen. Daher sind die Anforderungen an die Serialisierung sehr komplex. Mit FreeMarker Vorlagen einfach skalieren nicht. Es gab zu viel Anpassung in der Ausgabe, die in Java besser zu steuern ist als eine Vorlagensprachensyntax.
Dies ist keine Werbung für das Codegen-Modul. Ich wollte nur betonen, dass FreeMarker für eine hochgradig anpassbare Serialisierung nicht skalierbar ist.
http://stackoverflow.com/questions/996646/stand-alone-java-code-formatter-beautifier-pretty-printer –