He creado una anotación, la he aplicado a un DTO y he escrito un Javatat style annotationProcessor. Puedo ver cómo hacer que el procesador de anotaciones escriba un nuevo archivo fuente, que no es lo que quiero hacer, no puedo ver ni averiguar cómo modificar la clase existente (lo ideal es modificar el código de bytes). La modificación es realmente bastante trivial, todo lo que quiero que el procesador haga es insertar un nuevo getter y setter donde el nombre proviene del valor de la anotación que se está procesando.¿Cómo se usa Java 1.6 Annotation Processing para realizar el tiempo de compilación?
Mi procesador de anotaciones se ve así;
@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
}
}
Sin duda es una solución, pero estoy bastante seguro de que no es la única solución. Lo que quiero hacer podría ser hecho por varios frameworks/conjuntos de herramientas existentes, por ejemplo, javassist. Estaba tratando de evitar introducir una dependencia que no parece ser estrictamente necesaria, sin embargo, la introducción del procesamiento de anotaciones en JDK1.6 parecía que la funcionalidad de javassist estaba siendo procesada. Tal vez estaba equivocado y aún necesito un Herramienta de terceros para realizar el tiempo de compilación. – Steve