@API(status=INTERNAL,
since="1.0")
public final class AnnotationUtils
extends java.lang.Object
These utilities are intended solely for usage within the JUnit framework itself. Any usage by external parties is not supported. Use at your own risk!
Some utilities are published via the maintained AnnotationSupport
class.
Annotation
,
AnnotatedElement
,
AnnotationSupport
Modifier and Type | Field and Description |
---|---|
private static java.util.concurrent.ConcurrentHashMap<java.lang.Class<? extends java.lang.annotation.Annotation>,java.lang.Boolean> |
repeatableAnnotationContainerCache |
Modifier | Constructor and Description |
---|---|
private |
AnnotationUtils() |
Modifier and Type | Method and Description |
---|---|
static java.util.List<java.lang.reflect.Field> |
findAnnotatedFields(java.lang.Class<?> clazz,
java.lang.Class<? extends java.lang.annotation.Annotation> annotationType,
java.util.function.Predicate<java.lang.reflect.Field> predicate)
Find all fields of the supplied class or interface
that are annotated or meta-annotated with the specified
annotationType and match the specified predicate , using
top-down search semantics within the type hierarchy. |
static java.util.List<java.lang.reflect.Field> |
findAnnotatedFields(java.lang.Class<?> clazz,
java.lang.Class<? extends java.lang.annotation.Annotation> annotationType,
java.util.function.Predicate<java.lang.reflect.Field> predicate,
ReflectionUtils.HierarchyTraversalMode traversalMode)
Find all fields of the supplied class or interface
that are annotated or meta-annotated with the specified
annotationType and match the specified predicate . |
static java.util.List<java.lang.reflect.Method> |
findAnnotatedMethods(java.lang.Class<?> clazz,
java.lang.Class<? extends java.lang.annotation.Annotation> annotationType,
ReflectionUtils.HierarchyTraversalMode traversalMode) |
static <A extends java.lang.annotation.Annotation> |
findAnnotation(java.lang.reflect.AnnotatedElement element,
java.lang.Class<A> annotationType) |
private static <A extends java.lang.annotation.Annotation> |
findAnnotation(java.lang.reflect.AnnotatedElement element,
java.lang.Class<A> annotationType,
boolean inherited,
java.util.Set<java.lang.annotation.Annotation> visited) |
static <A extends java.lang.annotation.Annotation> |
findAnnotation(java.util.Optional<? extends java.lang.reflect.AnnotatedElement> element,
java.lang.Class<A> annotationType) |
private static <A extends java.lang.annotation.Annotation> |
findMetaAnnotation(java.lang.Class<A> annotationType,
java.lang.annotation.Annotation[] candidates,
boolean inherited,
java.util.Set<java.lang.annotation.Annotation> visited) |
static java.util.List<java.lang.reflect.Field> |
findPublicAnnotatedFields(java.lang.Class<?> clazz,
java.lang.Class<?> fieldType,
java.lang.Class<? extends java.lang.annotation.Annotation> annotationType) |
static <A extends java.lang.annotation.Annotation> |
findRepeatableAnnotations(java.lang.reflect.AnnotatedElement element,
java.lang.Class<A> annotationType) |
private static <A extends java.lang.annotation.Annotation> |
findRepeatableAnnotations(java.lang.reflect.AnnotatedElement element,
java.lang.Class<A> annotationType,
java.lang.Class<? extends java.lang.annotation.Annotation> containerType,
boolean inherited,
java.util.Set<A> found,
java.util.Set<java.lang.annotation.Annotation> visited) |
private static <A extends java.lang.annotation.Annotation> |
findRepeatableAnnotations(java.lang.annotation.Annotation[] candidates,
java.lang.Class<A> annotationType,
java.lang.Class<? extends java.lang.annotation.Annotation> containerType,
boolean inherited,
java.util.Set<A> found,
java.util.Set<java.lang.annotation.Annotation> visited) |
static <A extends java.lang.annotation.Annotation> |
findRepeatableAnnotations(java.util.Optional<? extends java.lang.reflect.AnnotatedElement> element,
java.lang.Class<A> annotationType) |
static boolean |
isAnnotated(java.lang.reflect.AnnotatedElement element,
java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Determine if an annotation of
annotationType is either
present or meta-present on the supplied
element . |
static boolean |
isAnnotated(java.util.Optional<? extends java.lang.reflect.AnnotatedElement> element,
java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Determine if an annotation of
annotationType is either
present or meta-present on the supplied optional
element . |
private static boolean |
isInJavaLangAnnotationPackage(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType) |
private static boolean |
isRepeatableAnnotationContainer(java.lang.Class<? extends java.lang.annotation.Annotation> candidateContainerType)
Determine if the supplied annotation type is a container for a repeatable
annotation.
|
private static final java.util.concurrent.ConcurrentHashMap<java.lang.Class<? extends java.lang.annotation.Annotation>,java.lang.Boolean> repeatableAnnotationContainerCache
public static boolean isAnnotated(java.util.Optional<? extends java.lang.reflect.AnnotatedElement> element, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
annotationType
is either
present or meta-present on the supplied optional
element
.public static boolean isAnnotated(java.lang.reflect.AnnotatedElement element, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
annotationType
is either
present or meta-present on the supplied
element
.element
- the element on which to search for the annotation; may be
null
annotationType
- the annotation type to search for; never null
true
if the annotation is present or meta-presentfindAnnotation(AnnotatedElement, Class)
,
AnnotationSupport.isAnnotated(AnnotatedElement, Class)
public static <A extends java.lang.annotation.Annotation> java.util.Optional<A> findAnnotation(java.util.Optional<? extends java.lang.reflect.AnnotatedElement> element, java.lang.Class<A> annotationType)
public static <A extends java.lang.annotation.Annotation> java.util.Optional<A> findAnnotation(java.lang.reflect.AnnotatedElement element, java.lang.Class<A> annotationType)
private static <A extends java.lang.annotation.Annotation> java.util.Optional<A> findAnnotation(java.lang.reflect.AnnotatedElement element, java.lang.Class<A> annotationType, boolean inherited, java.util.Set<java.lang.annotation.Annotation> visited)
private static <A extends java.lang.annotation.Annotation> java.util.Optional<A> findMetaAnnotation(java.lang.Class<A> annotationType, java.lang.annotation.Annotation[] candidates, boolean inherited, java.util.Set<java.lang.annotation.Annotation> visited)
public static <A extends java.lang.annotation.Annotation> java.util.List<A> findRepeatableAnnotations(java.util.Optional<? extends java.lang.reflect.AnnotatedElement> element, java.lang.Class<A> annotationType)
AnnotationSupport.findRepeatableAnnotations(Optional, Class)
public static <A extends java.lang.annotation.Annotation> java.util.List<A> findRepeatableAnnotations(java.lang.reflect.AnnotatedElement element, java.lang.Class<A> annotationType)
private static <A extends java.lang.annotation.Annotation> void findRepeatableAnnotations(java.lang.reflect.AnnotatedElement element, java.lang.Class<A> annotationType, java.lang.Class<? extends java.lang.annotation.Annotation> containerType, boolean inherited, java.util.Set<A> found, java.util.Set<java.lang.annotation.Annotation> visited)
private static <A extends java.lang.annotation.Annotation> void findRepeatableAnnotations(java.lang.annotation.Annotation[] candidates, java.lang.Class<A> annotationType, java.lang.Class<? extends java.lang.annotation.Annotation> containerType, boolean inherited, java.util.Set<A> found, java.util.Set<java.lang.annotation.Annotation> visited)
private static boolean isRepeatableAnnotationContainer(java.lang.Class<? extends java.lang.annotation.Annotation> candidateContainerType)
public static java.util.List<java.lang.reflect.Field> findPublicAnnotatedFields(java.lang.Class<?> clazz, java.lang.Class<?> fieldType, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
public static java.util.List<java.lang.reflect.Field> findAnnotatedFields(java.lang.Class<?> clazz, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType, java.util.function.Predicate<java.lang.reflect.Field> predicate)
annotationType
and match the specified predicate
, using
top-down search semantics within the type hierarchy.#findAnnotatedFields(Class, Class, Predicate, HierarchyTraversalMode)
public static java.util.List<java.lang.reflect.Field> findAnnotatedFields(java.lang.Class<?> clazz, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType, java.util.function.Predicate<java.lang.reflect.Field> predicate, ReflectionUtils.HierarchyTraversalMode traversalMode)
annotationType
and match the specified predicate
.clazz
- the class or interface in which to find the fields; never null
annotationType
- the annotation type to search for; never null
predicate
- the field filter; never null
traversalMode
- the hierarchy traversal mode; never null
null
nor mutablepublic static java.util.List<java.lang.reflect.Method> findAnnotatedMethods(java.lang.Class<?> clazz, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType, ReflectionUtils.HierarchyTraversalMode traversalMode)
private static boolean isInJavaLangAnnotationPackage(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)