< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacRoundEnvironment.java

Print this page




 153     private class AnnotationSetScanner extends
 154         ElementScanningIncludingTypeParameters<Set<Element>, TypeElement> {
 155         // Insertion-order preserving set
 156         private Set<Element> annotatedElements = new LinkedHashSet<>();
 157 
 158         AnnotationSetScanner(Set<Element> defaultSet) {
 159             super(defaultSet);
 160         }
 161 
 162         @Override @DefinedBy(Api.LANGUAGE_MODEL)
 163         public Set<Element> scan(Element e, TypeElement annotation) {
 164             for (AnnotationMirror annotMirror :  eltUtils.getAllAnnotationMirrors(e)) {
 165                 if (annotation.equals(mirrorAsElement(annotMirror))) {
 166                     annotatedElements.add(e);
 167                     break;
 168                 }
 169             }
 170             e.accept(this, annotation);
 171             return annotatedElements;
 172         }












 173     }
 174 
 175     // Could be written as a local class inside getElementsAnnotatedWithAny
 176     private class AnnotationSetMultiScanner extends
 177         ElementScanningIncludingTypeParameters<Set<Element>, Set<TypeElement>> {
 178         // Insertion-order preserving set
 179         private Set<Element> annotatedElements = new LinkedHashSet<>();
 180 
 181         AnnotationSetMultiScanner(Set<Element> defaultSet) {
 182             super(defaultSet);
 183         }
 184 
 185         @Override @DefinedBy(Api.LANGUAGE_MODEL)
 186         public Set<Element> scan(Element e, Set<TypeElement> annotations) {
 187             for (AnnotationMirror annotMirror : eltUtils.getAllAnnotationMirrors(e)) {
 188                 if (annotations.contains(mirrorAsElement(annotMirror))) {
 189                     annotatedElements.add(e);
 190                     break;
 191                 }
 192             }
 193             e.accept(this, annotations);
 194             return annotatedElements;
 195         }












 196     }
 197 
 198     private static abstract class ElementScanningIncludingTypeParameters<R, P>
 199         extends ElementScanner9<R, P> {
 200 
 201         protected ElementScanningIncludingTypeParameters(R defaultValue) {
 202             super(defaultValue);
 203         }
 204 
 205         @Override @DefinedBy(Api.LANGUAGE_MODEL)
 206         public R visitType(TypeElement e, P p) {
 207             // Type parameters are not considered to be enclosed by a type
 208             scan(e.getTypeParameters(), p);
 209             return super.visitType(e, p);
 210         }
 211 
 212         @Override @DefinedBy(Api.LANGUAGE_MODEL)
 213         public R visitExecutable(ExecutableElement e, P p) {
 214             // Type parameters are not considered to be enclosed by an executable
 215             scan(e.getTypeParameters(), p);




 153     private class AnnotationSetScanner extends
 154         ElementScanningIncludingTypeParameters<Set<Element>, TypeElement> {
 155         // Insertion-order preserving set
 156         private Set<Element> annotatedElements = new LinkedHashSet<>();
 157 
 158         AnnotationSetScanner(Set<Element> defaultSet) {
 159             super(defaultSet);
 160         }
 161 
 162         @Override @DefinedBy(Api.LANGUAGE_MODEL)
 163         public Set<Element> scan(Element e, TypeElement annotation) {
 164             for (AnnotationMirror annotMirror :  eltUtils.getAllAnnotationMirrors(e)) {
 165                 if (annotation.equals(mirrorAsElement(annotMirror))) {
 166                     annotatedElements.add(e);
 167                     break;
 168                 }
 169             }
 170             e.accept(this, annotation);
 171             return annotatedElements;
 172         }
 173 
 174         @Override @DefinedBy(Api.LANGUAGE_MODEL)
 175         public Set<Element> visitModule(ModuleElement e, TypeElement annotation) {
 176             // Do not scan a module
 177             return annotatedElements;
 178         }
 179 
 180         @Override @DefinedBy(Api.LANGUAGE_MODEL)
 181         public Set<Element> visitPackage(PackageElement e, TypeElement annotation) {
 182             // Do not scan a package
 183             return annotatedElements;
 184         }
 185     }
 186 
 187     // Could be written as a local class inside getElementsAnnotatedWithAny
 188     private class AnnotationSetMultiScanner extends
 189         ElementScanningIncludingTypeParameters<Set<Element>, Set<TypeElement>> {
 190         // Insertion-order preserving set
 191         private Set<Element> annotatedElements = new LinkedHashSet<>();
 192 
 193         AnnotationSetMultiScanner(Set<Element> defaultSet) {
 194             super(defaultSet);
 195         }
 196 
 197         @Override @DefinedBy(Api.LANGUAGE_MODEL)
 198         public Set<Element> scan(Element e, Set<TypeElement> annotations) {
 199             for (AnnotationMirror annotMirror : eltUtils.getAllAnnotationMirrors(e)) {
 200                 if (annotations.contains(mirrorAsElement(annotMirror))) {
 201                     annotatedElements.add(e);
 202                     break;
 203                 }
 204             }
 205             e.accept(this, annotations);
 206             return annotatedElements;
 207         }
 208 
 209         @Override @DefinedBy(Api.LANGUAGE_MODEL)
 210         public Set<Element> visitModule(ModuleElement e, Set<TypeElement> annotations) {
 211             // Do not scan a module
 212             return annotatedElements;
 213         }
 214 
 215         @Override @DefinedBy(Api.LANGUAGE_MODEL)
 216         public Set<Element> visitPackage(PackageElement e, Set<TypeElement> annotations) {
 217             // Do not scan a package
 218             return annotatedElements;
 219         }
 220     }
 221 
 222     private static abstract class ElementScanningIncludingTypeParameters<R, P>
 223         extends ElementScanner9<R, P> {
 224 
 225         protected ElementScanningIncludingTypeParameters(R defaultValue) {
 226             super(defaultValue);
 227         }
 228 
 229         @Override @DefinedBy(Api.LANGUAGE_MODEL)
 230         public R visitType(TypeElement e, P p) {
 231             // Type parameters are not considered to be enclosed by a type
 232             scan(e.getTypeParameters(), p);
 233             return super.visitType(e, p);
 234         }
 235 
 236         @Override @DefinedBy(Api.LANGUAGE_MODEL)
 237         public R visitExecutable(ExecutableElement e, P p) {
 238             // Type parameters are not considered to be enclosed by an executable
 239             scan(e.getTypeParameters(), p);


< prev index next >