Class TypeQualifierApplications


  • public class TypeQualifierApplications
    extends java.lang.Object
    Figure out where and how type qualifier annotations are applied.
    Author:
    William Pugh, David Hovemeyer
    • Constructor Detail

      • TypeQualifierApplications

        public TypeQualifierApplications()
    • Method Detail

      • clearInstance

        public static void clearInstance()
      • updateAnnotations

        public static void updateAnnotations​(AnnotatedObject object)
      • getDirectApplications

        public static void getDirectApplications​(java.util.Set<TypeQualifierAnnotation> result,
                                                 XMethod o,
                                                 int parameter)
        Populate a Set of TypeQualifierAnnotations representing directly-applied type qualifier annotations on given method parameter.
        Parameters:
        result - Set of TypeQualifierAnnotations
        o - a method
        parameter - a parameter (0 == first parameter)
      • getDirectApplications

        public static void getDirectApplications​(java.util.Set<TypeQualifierAnnotation> result,
                                                 AnnotatedObject o,
                                                 java.lang.annotation.ElementType e)
        Populate a Set of TypeQualifierAnnotations representing directly-applied type qualifier annotations on given AnnotatedObject.
        Parameters:
        result - Set of TypeQualifierAnnotations
        o - an AnnotatedObject
        e - ElementType representing kind of annotated object
      • constructTypeQualifierAnnotation

        public static TypeQualifierAnnotation constructTypeQualifierAnnotation​(AnnotationValue v)
        Resolve a raw AnnotationValue into a TypeQualifierAnnotation.
        Parameters:
        v - a raw AnnotationValue
        Returns:
        a constructed TypeQualifierAnnotation
      • constructTypeQualifierAnnotation

        public static void constructTypeQualifierAnnotation​(java.util.Set<TypeQualifierAnnotation> set,
                                                            AnnotationValue v)
        Resolve a raw AnnotationValue into a TypeQualifierAnnotation, storing result in given Set.
        Parameters:
        set - Set of resolved TypeQualifierAnnotations
        v - a raw AnnotationValue
      • getApplicableApplications

        public static java.util.Collection<TypeQualifierAnnotation> getApplicableApplications​(AnnotatedObject o)
        Get the Collection of resolved TypeQualifierAnnotations representing directly applied and default (outer scope) type qualifier annotations for given AnnotatedObject.

        NOTE: does not properly account for inherited annotations on instance methods. It is ok to call this method to find out generally-relevant TypeQualifierAnnotations, but not to find the effective TypeQualifierAnnotation.

        Parameters:
        o - an AnnotatedObject
        Returns:
        Collection of TypeQualifierAnnotations applicable to the AnnotatedObject
      • getApplicableApplications

        public static java.util.Collection<TypeQualifierAnnotation> getApplicableApplications​(XMethod o,
                                                                                              int parameter)
        Get the Collection of resolved TypeQualifierAnnotations representing directly applied and default (outer scope) type qualifier annotations for given method parameter.

        NOTE: does not properly account for inherited annotations on instance method parameters. It is ok to call this method to find out generally-relevant TypeQualifierAnnotations, but not to find the effective TypeQualifierAnnotation.

        Parameters:
        o - a method
        parameter - a parameter (0 == first parameter)
        Returns:
        Collection of TypeQualifierAnnotations applicable to the method parameter
      • getEffectiveTypeQualifierAnnotation

        public static TypeQualifierAnnotation getEffectiveTypeQualifierAnnotation​(AnnotatedObject o,
                                                                                  TypeQualifierValue<?> typeQualifierValue)
        Get the effective TypeQualifierAnnotation on given AnnotatedObject. Takes into account inherited and default (outer scope) annotations. Also takes exclusive qualifiers into account.
        Parameters:
        o - an AnnotatedObject
        typeQualifierValue - a TypeQualifierValue specifying kind of annotation we want to look up
        Returns:
        the effective TypeQualifierAnnotation, or null if there is no effective TypeQualifierAnnotation on this AnnotatedObject
      • getInheritedTypeQualifierAnnotation

        public static TypeQualifierAnnotation getInheritedTypeQualifierAnnotation​(XMethod o,
                                                                                  TypeQualifierValue<?> typeQualifierValue)
        Get the effective inherited TypeQualifierAnnotation on given instance method.
        Parameters:
        o - an XMethod
        typeQualifierValue - the kind of TypeQualifierValue we are looking for
        Returns:
        effective TypeQualifierAnnotation inherited from overridden supertype methods, or null if there is no inherited TypeQualifierAnnotation
      • getEffectiveTypeQualifierAnnotation

        @CheckForNull
        public static TypeQualifierAnnotation getEffectiveTypeQualifierAnnotation​(XMethod xmethod,
                                                                                  int parameter,
                                                                                  TypeQualifierValue<?> typeQualifierValue)
        Get the effective TypeQualifierAnnotation on given method parameter. Takes into account inherited and default (outer scope) annotations. Also takes exclusive qualifiers into account.
        Parameters:
        xmethod - a method
        parameter - a parameter (0 == first parameter)
        typeQualifierValue - the kind of TypeQualifierValue we are looking for
        Returns:
        effective TypeQualifierAnnotation on the parameter, or null if there is no effective TypeQualifierAnnotation
      • getDirectTypeQualifierAnnotation

        @CheckForNull
        @CheckReturnValue
        public static TypeQualifierAnnotation getDirectTypeQualifierAnnotation​(XMethod xmethod,
                                                                               int parameter,
                                                                               TypeQualifierValue<?> typeQualifierValue)
        Get the TypeQualifierAnnotation directly applied to given method parameter.
        Parameters:
        xmethod - a method
        parameter - a parameter (0 == first parameter)
        typeQualifierValue - the kind of TypeQualifierValue we are looking for
        Returns:
        TypeQualifierAnnotation directly applied to the parameter, or null if there is no directly applied TypeQualifierAnnotation
      • getInheritedTypeQualifierAnnotation

        @CheckForNull
        public static TypeQualifierAnnotation getInheritedTypeQualifierAnnotation​(XMethod xmethod,
                                                                                  int parameter,
                                                                                  TypeQualifierValue<?> typeQualifierValue)
        Get the effective inherited TypeQualifierAnnotation on the given instance method parameter.
        Parameters:
        xmethod - an instance method
        parameter - a parameter (0 == first parameter)
        typeQualifierValue - the kind of TypeQualifierValue we are looking for
        Returns:
        effective inherited TypeQualifierAnnotation on the parameter, or null if there is not effective TypeQualifierAnnotation