Ich habe eine Annotation erstellt, sie auf ein DTO angewendet und einen Java 1.6 AnnotationProcessor geschrieben. Ich kann sehen, wie man den annotationProcessor eine neue Quelldatei schreiben lässt, was ich nicht machen will, ich kann nicht sehen oder herausfinden, wie man die existierende Klasse modifizieren kann (im Idealfall modifiziere einfach den Byte-Code). Die Änderung ist eigentlich ziemlich trivial, ich möchte nur, dass der Prozessor einen neuen Getter und Setter einfügt, wobei der Name von dem Wert der Annotation kommt, die verarbeitet wird.Wie verwenden Sie Java 1.6 Annotation Processing, um die Kompilierungszeit beim Weben durchzuführen?
Mein Annotationsprozessor sieht so aus;
@SupportedSourceVersion(SourceVersion.RELEASE_6)
@SupportedAnnotationTypes({ "com.kn.salog.annotation.AggregateField" })
public class SalogDTOAnnotationProcessor extends AbstractProcessor {
@Override
public boolean process(final Set<? extends TypeElement> annotations, final RoundEnvironment roundEnv) {
//do some stuff
}
}
Das ist sicherlich eine Lösung, aber ich bin mir ziemlich sicher, dass es nicht die einzige Lösung ist. Was ich tun möchte, könnte von mehreren existierenden Frameworks/Toolsets, zB javassist, getan werden. Ich versuchte zu vermeiden, eine Abhängigkeit einzuführen, die nicht unbedingt notwendig erscheint, aber die Einführung der Annotationsverarbeitung in JDK1.6 sah so aus, als würde die Funktionalität von javassist eingebaut. Vielleicht lag ich aber falsch und brauche immer noch eine 3rd-Party-Tool, um die Kompilierzeit Weben durchzuführen. – Steve