Class ElementQualifierHierarchy

    • Field Detail

      • topsMap

        protected final java.util.Map<QualifierKind,​javax.lang.model.element.AnnotationMirror> topsMap
        A mapping from top QualifierKinds to their corresponding AnnotationMirror.
      • bottomsMap

        protected final java.util.Map<QualifierKind,​javax.lang.model.element.AnnotationMirror> bottomsMap
        A mapping from bottom QualifierKinds to their corresponding AnnotationMirror.
      • kindToElementlessQualifier

        protected final java.util.Map<QualifierKind,​javax.lang.model.element.AnnotationMirror> kindToElementlessQualifier
        A mapping from QualifierKind to AnnotationMirror for all qualifiers whose annotations do not have elements.
    • Constructor Detail

      • ElementQualifierHierarchy

        protected ElementQualifierHierarchy​(java.util.Collection<java.lang.Class<? extends java.lang.annotation.Annotation>> qualifierClasses,
                                            javax.lang.model.util.Elements elements,
                                            GenericAnnotatedTypeFactory<?,​?,​?,​?> atypeFactory)
        Creates a ElementQualifierHierarchy from the given classes.
        Parameters:
        qualifierClasses - classes of annotations that are the qualifiers for this hierarchy
        elements - element utils
        atypeFactory - the associated type factory
    • Method Detail

      • createQualifierKindHierarchy

        protected QualifierKindHierarchy createQualifierKindHierarchy​(@UnderInitialization ElementQualifierHierarchy this,
                                                                      java.util.Collection<java.lang.Class<? extends java.lang.annotation.Annotation>> qualifierClasses)
        Create the QualifierKindHierarchy. (Subclasses may override to return a subclass of QualifierKindHierarchy.)
        Parameters:
        qualifierClasses - classes of annotations that are the qualifiers for this hierarchy
        Returns:
        the newly created qualifier kind hierarchy
      • createElementlessQualifierMap

        @RequiresNonNull({"this.qualifierKindHierarchy","this.elements"})
        protected java.util.Map<QualifierKind,​javax.lang.model.element.AnnotationMirror> createElementlessQualifierMap​(@UnderInitialization ElementQualifierHierarchy this)
        Creates a mapping from QualifierKind to AnnotationMirror for all qualifiers whose annotations do not have elements.
        Returns:
        the mapping
      • createTopsMap

        @RequiresNonNull({"this.qualifierKindHierarchy","this.elements"})
        protected java.util.Map<QualifierKind,​javax.lang.model.element.AnnotationMirror> createTopsMap​(@UnderInitialization ElementQualifierHierarchy this)
        Creates a mapping from QualifierKind to AnnotationMirror, where the QualifierKind is top and the AnnotationMirror is top in their respective hierarchies.

        This implementation works if the top annotation has no elements, or if it has elements, provides a default, and that default is the top. Otherwise, subclasses must override this.

        Returns:
        a mapping from top QualifierKind to top AnnotationMirror
      • createBottomsMap

        @RequiresNonNull({"this.qualifierKindHierarchy","this.elements"})
        protected java.util.Map<QualifierKind,​javax.lang.model.element.AnnotationMirror> createBottomsMap​(@UnderInitialization ElementQualifierHierarchy this)
        Creates a mapping from QualifierKind to AnnotationMirror, where the QualifierKind is bottom and the AnnotationMirror is bottom in their respective hierarchies.

        This implementation works if the bottom annotation has no elements, or if it has elements, provides a default, and that default is the bottom. Otherwise, subclasses must override this.

        Returns:
        a mapping from bottom QualifierKind to bottom AnnotationMirror
      • getQualifierKind

        protected QualifierKind getQualifierKind​(javax.lang.model.element.AnnotationMirror anno)
        Returns the qualifier kind for the given annotation.
        Parameters:
        anno - an annotation mirror that is in this hierarchy
        Returns:
        the qualifier kind for the given annotation
      • getQualifierKind

        protected QualifierKind getQualifierKind​(@CanonicalName java.lang.String name)
        Returns the qualifier kind for the annotation with the canonical name name.
        Parameters:
        name - fully qualified annotation name
        Returns:
        the qualifier kind for the annotation named name
      • getTopAnnotation

        public javax.lang.model.element.AnnotationMirror getTopAnnotation​(javax.lang.model.element.AnnotationMirror start)
        Description copied from class: QualifierHierarchy
        Return the top qualifier for the given qualifier, that is, the qualifier that is a supertype of qualifier but no further supertypes exist.
        Specified by:
        getTopAnnotation in class QualifierHierarchy
        Parameters:
        start - any qualifier from one of the qualifier hierarchies represented by this
        Returns:
        the top qualifier of qualifier's hierarchy
      • getPolymorphicAnnotation

        public @Nullable javax.lang.model.element.AnnotationMirror getPolymorphicAnnotation​(javax.lang.model.element.AnnotationMirror start)
        Description copied from class: QualifierHierarchy
        Returns the polymorphic qualifier for the hierarchy containing qualifier, or null if there is no polymorphic qualifier in that hierarchy.
        Specified by:
        getPolymorphicAnnotation in class QualifierHierarchy
        Parameters:
        start - any qualifier from one of the qualifier hierarchies represented by this
        Returns:
        the polymorphic qualifier for the hierarchy containing qualifier, or null if there is no polymorphic qualifier in that hierarchy
      • isPolymorphicQualifier

        public boolean isPolymorphicQualifier​(javax.lang.model.element.AnnotationMirror qualifier)
        Description copied from class: QualifierHierarchy
        Returns true if the qualifier is a polymorphic qualifier; otherwise, returns false.
        Specified by:
        isPolymorphicQualifier in class QualifierHierarchy
        Parameters:
        qualifier - qualifier
        Returns:
        true if the qualifier is a polymorphic qualifier; otherwise, returns false.
      • getBottomAnnotation

        public javax.lang.model.element.AnnotationMirror getBottomAnnotation​(javax.lang.model.element.AnnotationMirror start)
        Description copied from class: QualifierHierarchy
        Return the bottom for the given qualifier, that is, the qualifier that is a subtype of qualifier but no further subtypes exist.
        Specified by:
        getBottomAnnotation in class QualifierHierarchy
        Parameters:
        start - any qualifier from one of the qualifier hierarchies represented by this
        Returns:
        the bottom qualifier of qualifier's hierarchy
      • findAnnotationInHierarchy

        public @Nullable javax.lang.model.element.AnnotationMirror findAnnotationInHierarchy​(java.util.Collection<? extends javax.lang.model.element.AnnotationMirror> annos,
                                                                                             javax.lang.model.element.AnnotationMirror top)
        Description copied from class: QualifierHierarchy
        Returns the annotation in qualifiers that is in the hierarchy for which top is top.
        Overrides:
        findAnnotationInHierarchy in class QualifierHierarchy
        Parameters:
        annos - set of annotations to search
        top - the top annotation in the hierarchy to which the returned annotation belongs
        Returns:
        annotation in the same hierarchy as annotationMirror, or null if one is not found