77import javax .lang .model .element .*;
88import javax .lang .model .type .DeclaredType ;
99import javax .lang .model .type .TypeKind ;
10- import javax .lang .model .type .TypeMirror ;
1110import javax .lang .model .util .ElementScanner8 ;
1211import javax .lang .model .util .Elements ;
1312import javax .lang .model .util .Types ;
14- import java .lang .reflect .Field ;
15- import java .lang .reflect .Method ;
1613import java .util .*;
1714
1815public class JoobyProcessorRoundEnvironment {
@@ -30,27 +27,23 @@ public class JoobyProcessorRoundEnvironment {
3027 public Set <? extends Element > getElementsAnnotatedWith (TypeElement a ) {
3128
3229 Set <Element > result = Collections .emptySet ();
33- ElementScanner8 <Set <Element >, TypeElement > scanner = new AnnotationSetScanner (result );
30+ ElementScanner8 <Set <Element >, TypeElement > scanner = new JoobyAnnotationSetScanner (result );
3431
3532 for (Element element : rootElements )
3633 result = scanner .scan (element , a );
3734
3835 return result ;
3936 }
4037
41- // Could be written as a local class inside getElementsAnnotatedWith
42- private class AnnotationSetScanner extends
43- ElementScanningIncludingTypeParameters <Set <Element >, TypeElement > {
44- // Insertion-order preserving set
38+ private class JoobyAnnotationSetScanner extends ElementScanner8 <Set <Element >, TypeElement > {
4539 private Set <Element > annotatedElements = new LinkedHashSet <>();
4640
47- AnnotationSetScanner (Set <Element > defaultSet ) {
41+ JoobyAnnotationSetScanner (Set <Element > defaultSet ) {
4842 super (defaultSet );
4943 }
5044
5145 @ Override
5246 public Set <Element > scan (Element e , TypeElement annotation ) {
53- //System.out.println("\t\t" + e);
5447 for (AnnotationMirror annotMirror : eltUtils .getAllAnnotationMirrors (e )) {
5548 if (annotation .equals (mirrorAsElement (annotMirror ))) {
5649 annotatedElements .add (e );
@@ -61,33 +54,18 @@ public Set<Element> scan(Element e, TypeElement annotation) {
6154 return annotatedElements ;
6255 }
6356
64- }
65-
66- private static abstract class ElementScanningIncludingTypeParameters <R , P >
67- extends ElementScanner8 <R , P > {
68-
69- protected ElementScanningIncludingTypeParameters (R defaultValue ) {
70- super (defaultValue );
71- }
72-
7357 @ Override
74- public R visitType (TypeElement e , P p ) {
75- // Type parameters are not considered to be enclosed by a type
58+ public Set <Element > visitType (TypeElement e , TypeElement p ) {
7659 if (e .getSuperclass ().getKind () == TypeKind .DECLARED ) {
77- //System.out.println(e + " <<<< " + e.getSuperclass());
78- TypeElement superElement = (TypeElement ) ((DeclaredType ) e .getSuperclass ()).asElement ();
60+ javax .lang .model .element .TypeElement superElement = (javax .lang .model .element .TypeElement ) ((DeclaredType ) e .getSuperclass ()).asElement ();
7961 List <Element > clonedElements = new ArrayList <>();
8062 for (Element enclosedElement : superElement .getEnclosedElements ()) {
8163 if (enclosedElement .getKind () == ElementKind .METHOD && enclosedElement .getAnnotationMirrors ().size () > 0 ) {
8264 Symbol .MethodSymbol methodSymbol = ((Symbol .MethodSymbol )enclosedElement ).clone ((Symbol .ClassSymbol )e );
8365 methodSymbol .appendAttributes ( ((Symbol .MethodSymbol )enclosedElement ).getAnnotationMirrors () );
84- //System.out.println("\t\tEnclosing: " + methodSymbol.getEnclosingElement() + "::" + methodSymbol + " #" + methodSymbol.getAnnotationMirrors().size());
8566 methodSymbol .params = ((Symbol .MethodSymbol )enclosedElement ).params ;
8667 methodSymbol .extraParams = ((Symbol .MethodSymbol )enclosedElement ).extraParams ;
8768 methodSymbol .capturedLocals = ((Symbol .MethodSymbol )enclosedElement ).capturedLocals ;
88- //Symbol.MethodSymbol w = (Symbol.MethodSymbol)enclosedElement;
89- //System.out.println("\t\t\tEnclosed (orig):" + w.params);
90- //System.out.println("\t\t\tEnclosed (copy):" + methodSymbol.params);
9169 clonedElements .add (methodSymbol );
9270 }
9371 }
0 commit comments