Package edu.umd.cs.findbugs.ba.jsr305
Class TypeQualifierApplications
java.lang.Object
edu.umd.cs.findbugs.ba.jsr305.TypeQualifierApplications
Figure out where and how type qualifier annotations are applied.
- Author:
- William Pugh, David Hovemeyer
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
static TypeQualifierAnnotation
Resolve a raw AnnotationValue into a TypeQualifierAnnotation.static void
Resolve a raw AnnotationValue into a TypeQualifierAnnotation, storing result in given Set.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.static Collection
<TypeQualifierAnnotation> Get the Collection of resolved TypeQualifierAnnotations representing directly applied and default (outer scope) type qualifier annotations for given AnnotatedObject.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.static void
getDirectApplications
(Set<TypeQualifierAnnotation> result, AnnotatedObject o, ElementType e) Populate a Set of TypeQualifierAnnotations representing directly-applied type qualifier annotations on given AnnotatedObject.static TypeQualifierAnnotation
getDirectTypeQualifierAnnotation
(XMethod xmethod, int parameter, TypeQualifierValue<?> typeQualifierValue) Get the TypeQualifierAnnotation directly applied to given method parameter.static TypeQualifierAnnotation
getEffectiveTypeQualifierAnnotation
(XMethod xmethod, int parameter, TypeQualifierValue<?> typeQualifierValue) Get the effective TypeQualifierAnnotation on given method parameter.static TypeQualifierAnnotation
getEffectiveTypeQualifierAnnotation
(AnnotatedObject o, TypeQualifierValue<?> typeQualifierValue) Get the effective TypeQualifierAnnotation on given AnnotatedObject.static TypeQualifierAnnotation
getInheritedTypeQualifierAnnotation
(XMethod xmethod, int parameter, TypeQualifierValue<?> typeQualifierValue) Get the effective inherited TypeQualifierAnnotation on the given instance method parameter.static TypeQualifierAnnotation
getInheritedTypeQualifierAnnotation
(XMethod o, TypeQualifierValue<?> typeQualifierValue) Get the effective inherited TypeQualifierAnnotation on given instance method.static void
updateAnnotations
(AnnotatedObject object)
-
Constructor Details
-
TypeQualifierApplications
public TypeQualifierApplications()
-
-
Method Details
-
clearInstance
public static void clearInstance() -
updateAnnotations
-
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 TypeQualifierAnnotationso
- a methodparameter
- 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 TypeQualifierAnnotationso
- an AnnotatedObjecte
- ElementType representing kind of annotated object
-
constructTypeQualifierAnnotation
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 TypeQualifierAnnotationsv
- a raw AnnotationValue
-
getApplicableApplications
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 methodparameter
- 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 AnnotatedObjecttypeQualifierValue
- 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 XMethodtypeQualifierValue
- 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 methodparameter
- 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 methodparameter
- 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 methodparameter
- 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
-