Coder
This is version . It is not the current version, and thus it cannot be edited.
Back to current version   Restore this version

Intersult Coder ist ein Werkzeug zur Analyse und zum Generieren von Code. Wichtige Bestandteile sind:

Reflector#

Der com.intersult.code.Reflector kann genutzt werden, um Informationen über Java-Klassen zu gewinnen.

Da der Reflector die reflektierten Klassen in internen Listen ansammelt, kann es nützlich sein den Reflector nach Gebrauch dem Garbage-Collector zu übergeben. Für diesen Fall kann ein Reflector durch new Reflector() einfach erzeugt werden. Für alle anderen Fälle kann die Default-Instanz Reflector.INSTANCE verwendet werden.

    JavaClass stringClass = Reflector.INSTANCE.reflect(String.class);
    System.out.println(stringClass.getTypeNameSimple(true));

Erklärung: Der Reflector erzeugt aus der String.class-Klasse eine JavaClass, die erweiterte Methoden enthält, wie zum Beispiel getTypeName und getTypeNameSimple.

Generator#

Viele Fälle der Code-Generierung, z.B. aus XML-Schema (XSD) oder WSDL können mit Plugins abgedeckt werden, wie dem Abraxas Maven Plugin.

Für die Implementierung eigener Maven-Plugins oder anderer Art von Code-Generierung kann die Klasse com.intersult.code.Generator direkt verwendet werden. Die Verwendung ist dabei sehr einfach:

    JavaClass javaClass = new JavaClass("com.intersult.test", "Test");
    javaClass.generatePath();
    Generator.generateClass(Reflector.INSTANCE, javaClass);

Erklärung: Es wird eine neue Klasse com.intersult.test.Test erzeugt. Die Methode generatePath erzeugt den Package-Pfad, der nicht in jedem Fall erwünscht sein kann. Der Generator schreibt dann mit generateClass die Klasse in Dateien. Der Java-Standard ist dabei so definiert, dass Unterklassen (Sub-Classes) in getrennte Dateien geschrieben werden mit dem Namensmuster <Hauptklasse>$<Unterklasse>.

Optional kann eine Liste übergeben werden, in der die generierten Dateien eingetragen werden:

    List<File> files = new ArrayList<File>();
    Generator.generateClass(Reflector.INSTANCE, javaClass, list);