Salut,
Je poste ce message car j'ai un probleme avec l'héritage des annnotations. En effet j'ai créé une annotation A (avec la meta-annotation @Inheritance) ainsi qu' annotation processor et une factory.
Et lorsque je rajouter l'annotation A sur une classe C, lors du traitement effecuté par APT seul la classe C est visité, les classes héritant de C ne sont pas visité.
Est ce un bug connu ?
PS j'utilise JAVA5 et j'utilise "l'annotation processing" d'eclipse.
Un peu de code :
Mon annotation :
La méthode process de mon AnnotationProcessor
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @Target(value = ElementType.TYPE) @Retention(RetentionPolicy.SOURCE) @Inherited public @interface MyAnnot { ... }
Ma Factory :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void process() { MyClassDeclarationVisitor myVisitor = new MyClassDeclarationVisitor(this._env); for (Declaration d : this._env.getTypeDeclarations()) { d.accept(DeclarationVisitors.getSourceOrderDeclarationScanner(myVisitor, DeclarationVisitors.NO_OP)); } }
Merci d'avance pour vos remarques et conseils
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public Collection<String> supportedOptions() { return Collections.emptyList(); } private static ArrayList<String> annotations = new ArrayList<String>(); {annotations.add(MyAnnot.class.getName());} public Collection<String> supportedAnnotationTypes() { return annotations; } public AnnotationProcessor getProcessorFor( Set<AnnotationTypeDeclaration> atds, AnnotationProcessorEnvironment env) { return new MyAnnotProcessor(env); }
Partager