deferredElementsByAnnotationBuilder); } else { deferredElementNames.add(ElementName.forTypeName(deferredTypeElementEntry.getKey())); PackageElement annotatedPackageElement = (PackageElement) annotatedElement; ElementName annotatedPackageName = ElementName.forPackageName(annotatedPackageElement.getQualifiedName().toString()); boolean validPackage = validElementNames.contains(annotatedPackageName) TypeElement enclosingType = getEnclosingType(annotatedElement); ElementName enclosingTypeName = ElementName.forTypeName(enclosingType.getQualifiedName().toString()); boolean validEnclosingType = validElementNames.contains(enclosingTypeName)
allMissingElements.putAll(missingElements); for (ElementName missingElement : missingElementNames) { if (!missingElements.containsKey(missingElement.name())) { allMissingElements.put(missingElement.name(), missingElement.getElement(elements));
private ImmutableSetMultimap<Class<? extends Annotation>, Element> indexByAnnotation( Set<ElementName> annotatedElements) { ImmutableSet<? extends Class<? extends Annotation>> supportedAnnotationClasses = getSupportedAnnotationClasses(); ImmutableSetMultimap.Builder<Class<? extends Annotation>, Element> deferredElements = ImmutableSetMultimap.builder(); for (ElementName elementName : annotatedElements) { Optional<? extends Element> element = elementName.getElement(elements); if (element.isPresent()) { findAnnotatedElements(element.get(), supportedAnnotationClasses, deferredElements); } } return deferredElements.build(); }
/** * An {@link ElementName} for a type. */ static ElementName forTypeName(String typeName) { return new ElementName(Kind.TYPE_NAME, typeName); }
/** * An {@link ElementName} for a package. */ static ElementName forPackageName(String packageName) { return new ElementName(Kind.PACKAGE_NAME, packageName); }
@Override public ElementName apply(Element element) { return ElementName.forAnnotatedElement(element); } }));
/** * Returns the previously deferred elements. */ private ImmutableMap<String, Optional<? extends Element>> deferredElements() { ImmutableMap.Builder<String, Optional<? extends Element>> deferredElements = ImmutableMap.builder(); for (ElementName elementName : deferredElementNames) { deferredElements.put(elementName.name(), elementName.getElement(elements)); } return deferredElements.build(); }
/** * An {@link ElementName} for an annotated element. If {@code element} is a package, uses the * fully qualified name of the package. If it's a type, uses its fully qualified name. * Otherwise, uses the fully-qualified name of the nearest enclosing type. */ static ElementName forAnnotatedElement(Element element) { return element.getKind() == PACKAGE ? ElementName.forPackageName(((PackageElement) element).getQualifiedName().toString()) : ElementName.forTypeName(getEnclosingType(element).getQualifiedName().toString()); }