Class TypeQualifierApplications

java.lang.Object
edu.umd.cs.findbugs.ba.jsr305.TypeQualifierApplications

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

    • TypeQualifierApplications

      public TypeQualifierApplications()
  • Method Details

    • clearInstance

      public static void clearInstance()
    • updateAnnotations

      public static void updateAnnotations(AnnotatedObject object)
    • getDirectApplications

      public static void getDirectApplications(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(Set<TypeQualifierAnnotation> result, AnnotatedObject o, 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(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 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 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