Class AnnotationSupport
- java.lang.Object
-
- org.junit.platform.commons.support.AnnotationSupport
-
@API(status=MAINTAINED, since="1.0") public final class AnnotationSupport extends Object
Common annotation support.- Since:
- 1.0
- See Also:
ClassSupport
,ReflectionSupport
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static List<Method>
findAnnotatedMethods(Class<?> clazz, Class<? extends Annotation> annotationType, HierarchyTraversalMode traversalMode)
Find all methods of the supplied class or interface that are annotated or meta-annotated with the specifiedannotationType
.static <A extends Annotation>
Optional<A>findAnnotation(AnnotatedElement element, Class<A> annotationType)
Find the first annotation ofannotationType
that is either directly present, meta-present, or indirectly present on the suppliedelement
.static <A extends Annotation>
Optional<A>findAnnotation(Optional<? extends AnnotatedElement> element, Class<A> annotationType)
Find the first annotation ofannotationType
that is either present or meta-present on the supplied optionalelement
.static List<Field>
findPublicAnnotatedFields(Class<?> clazz, Class<?> fieldType, Class<? extends Annotation> annotationType)
Find allpublic
fields of the supplied class or interface that are of the specifiedfieldType
and annotated or meta-annotated with the specifiedannotationType
.static <A extends Annotation>
List<A>findRepeatableAnnotations(AnnotatedElement element, Class<A> annotationType)
Find all repeatable annotations ofannotationType
that are either present, indirectly present, or meta-present on the suppliedAnnotatedElement
.static boolean
isAnnotated(AnnotatedElement element, Class<? extends Annotation> annotationType)
Determine if an annotation ofannotationType
is either present or meta-present on the suppliedelement
.
-
-
-
Method Detail
-
isAnnotated
public static boolean isAnnotated(AnnotatedElement element, Class<? extends Annotation> annotationType)
Determine if an annotation ofannotationType
is either present or meta-present on the suppliedelement
.- See Also:
findAnnotation(AnnotatedElement, Class)
-
findAnnotation
public static <A extends Annotation> Optional<A> findAnnotation(Optional<? extends AnnotatedElement> element, Class<A> annotationType)
Find the first annotation ofannotationType
that is either present or meta-present on the supplied optionalelement
.- See Also:
findAnnotation(AnnotatedElement, Class)
-
findAnnotation
public static <A extends Annotation> Optional<A> findAnnotation(AnnotatedElement element, Class<A> annotationType)
Find the first annotation ofannotationType
that is either directly present, meta-present, or indirectly present on the suppliedelement
.If the element is a class and the annotation is neither directly present nor meta-present on the class, this method will additionally search on interfaces implemented by the class before finding an annotation that is indirectly present on the class.
- Returns:
- an
Optional
containing the annotation; nevernull
but potentially empty
-
findRepeatableAnnotations
public static <A extends Annotation> List<A> findRepeatableAnnotations(AnnotatedElement element, Class<A> annotationType)
Find all repeatable annotations ofannotationType
that are either present, indirectly present, or meta-present on the suppliedAnnotatedElement
.This method extends the functionality of
AnnotatedElement.getAnnotationsByType(Class)
with additional support for meta-annotations.In addition, if the element is a class and the repeatable annotation is
@Inherited
, this method will search on superclasses first in order to support top-down semantics. The result is that this algorithm finds repeatable annotations that would be shadowed and therefore not visible according to Java's standard semantics for inherited, repeatable annotations, but most developers will naturally assume that all repeatable annotations in JUnit are discovered regardless of whether they are declared stand-alone, in a container, or as a meta-annotation (e.g., multiple declarations of@ExtendWith
within a test class hierarchy).If the element is a class and the repeatable annotation is not discovered within the class hierarchy, this method will additionally search on interfaces implemented by each class in the hierarchy.
If the supplied
element
isnull
, this method simply returns an empty list.- Parameters:
element
- the element to search on, potentiallynull
annotationType
- the repeatable annotation type to search for; nevernull
- Returns:
- the list of all such annotations found; neither
null
nor mutable - See Also:
Repeatable
,Inherited
-
findPublicAnnotatedFields
public static List<Field> findPublicAnnotatedFields(Class<?> clazz, Class<?> fieldType, Class<? extends Annotation> annotationType)
Find allpublic
fields of the supplied class or interface that are of the specifiedfieldType
and annotated or meta-annotated with the specifiedannotationType
.Consult the Javadoc for
Class.getFields()
for details on inheritance and ordering.- Parameters:
clazz
- the class or interface in which to find the fields; nevernull
fieldType
- the type of field to find; nevernull
annotationType
- the annotation type to search for; nevernull
- Returns:
- the list of all such fields found; neither
null
nor mutable - See Also:
Class.getFields()
-
findAnnotatedMethods
public static List<Method> findAnnotatedMethods(Class<?> clazz, Class<? extends Annotation> annotationType, HierarchyTraversalMode traversalMode)
Find all methods of the supplied class or interface that are annotated or meta-annotated with the specifiedannotationType
.- Parameters:
clazz
- the class or interface in which to find the methods; nevernull
annotationType
- the annotation type to search for; nevernull
traversalMode
- the hierarchy traversal mode; nevernull
- Returns:
- the list of all such methods found; neither
null
nor mutable
-
-