Class AnnotationAnalyzer
java.lang.Object
org.glassfish.pfl.basic.algorithm.AnnotationAnalyzer
Given an AnnotatedElement, fetch all of the inherited annotations.
This include annotations on methods that may be
overridden. Uses ClassAnalyzer to linearize the inheritance hierarchy.
This also includes any added annotations for Class and Method.
Constructor, Field, Parameter, and Package annotations are just translated
from the standard reflective calls.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Map
<AnnotatedElement, Map<Class<?>, Annotation>> private final Map
<AnnotatedElement, Map<Class<?>, Annotation>> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addAnnotation
(AnnotatedElement element, Annotation annotation) Add an annotation to element, which must be a Class, Method, or Constructor.void
addInheritedAnnotations
(Class<?> cls, Class<?> ancestor) Add all annotations on cls (including inherited annotations and its methods (including overridden methods in super classes and interfaces) to super (which must be a super class or interface of cls).<A extends Annotation>
AgetAnnotation
(AnnotatedElement elem, Class<A> cls) Map
<Class<?>, Annotation> getAnnotations
(Class<?> cls) Return a map of all annotations defined on cls and its super classes and interfaces in ClassAnalyzer order.private Map
<Class<?>, Annotation> getAnnotations
(Class<?> cls, boolean includeAddedAnnotations) Map
<Class<?>, Annotation> getAnnotations
(Package pkg) Same as pkg.getAnnotations, with the result converted to a map.Map
<Class<?>, Annotation> Return all annotations on the element, including any added annotations.Map
<Class<?>, Annotation> getAnnotations
(Constructor<?> cons) Same as cons.getAnnotations, with the result converted to a map.Map
<Class<?>, Annotation> getAnnotations
(Field fld) Same as fld.getAnnotations, with the result converted to a map.Map
<Class<?>, Annotation> getAnnotations
(Method method) Return a map of all annotations defined in method and its overriden methods in the inheritance order of the ClassAnalyzer for the method's defining class.private Map
<Class<?>, Annotation> getAnnotations
(Method method, boolean includeAddedAnnotations) List
<Map<Class<?>, Annotation>> getParameterAnnotations
(Constructor<?> cons) Same as cons.getParameterAnnotations, with the result converted to a list of maps.List
<Map<Class<?>, Annotation>> getParameterAnnotations
(Method method) Same as cons.getParameterAnnotations, with the result converted to a list of maps.private Map
<Class<?>, Annotation> makeAnnoMap
(Annotation[] annos) private <K,
V> void putIfNotPresent
(Map<K, V> map, K key, V value)
-
Field Details
-
annotationCache
-
addedAnnotations
-
-
Constructor Details
-
AnnotationAnalyzer
public AnnotationAnalyzer()
-
-
Method Details
-
putIfNotPresent
-
addAnnotation
Add an annotation to element, which must be a Class, Method, or Constructor.- Parameters:
element
-annotation
-
-
addInheritedAnnotations
Add all annotations on cls (including inherited annotations and its methods (including overridden methods in super classes and interfaces) to super (which must be a super class or interface of cls).- Parameters:
cls
-
-
getAnnotations
Return a map of all annotations defined on cls and its super classes and interfaces in ClassAnalyzer order. Annotations nearer the front of the list replace those later in the list of the same type.- Parameters:
cls
- Class to analyze.- Returns:
- Map from annotation class to annotation value.
-
getAnnotations
-
getAnnotations
Return a map of all annotations defined in method and its overriden methods in the inheritance order of the ClassAnalyzer for the method's defining class.- Parameters:
method
- The method to analyze- Returns:
- A map from annotation class to annotation
-
getAnnotations
-
makeAnnoMap
-
getParameterAnnotations
Same as cons.getParameterAnnotations, with the result converted to a list of maps.- Parameters:
method
- A Java Method- Returns:
- A list of maps from annotation class to annotation value
-
getAnnotations
Same as cons.getAnnotations, with the result converted to a map.- Parameters:
cons
- A Java Constructor- Returns:
- A map from annotation class to annotation value
-
getParameterAnnotations
Same as cons.getParameterAnnotations, with the result converted to a list of maps.- Parameters:
cons
- A Java Constructor- Returns:
- A list of maps from annotation class to annotation value
-
getAnnotations
Same as fld.getAnnotations, with the result converted to a map.- Parameters:
fld
- A Java Field- Returns:
- A map from annotation class to annotation value
-
getAnnotations
Same as pkg.getAnnotations, with the result converted to a map.- Parameters:
pkg
- A Java Package- Returns:
- A map from annotation class to annotation value
-
getAnnotations
Return all annotations on the element, including any added annotations. Really just a convenience wrapper for the other getAnnotations methods.- Parameters:
elem
- AnnotatedElement- Returns:
- A map from annotation class to annotation value.
-
getAnnotation
-