@ -70,8 +70,8 @@ public abstract class AnnotationUtils {
@@ -70,8 +70,8 @@ public abstract class AnnotationUtils {
* Get a single { @link Annotation } of { @code annotationType } from the supplied
* annotation : either the given annotation itself or a meta - annotation thereof .
* @param ann the Annotation to check
* @param annotationType the annotation class to look for , both locally and as a meta - annotation
* @return the matching annotation or { @code null } if not found
* @param annotationType the annotation type to look for , both locally and as a meta - annotation
* @return the matching annotation , or { @code null } if none found
* @since 4 . 0
* /
@SuppressWarnings ( "unchecked" )
@ -87,8 +87,8 @@ public abstract class AnnotationUtils {
@@ -87,8 +87,8 @@ public abstract class AnnotationUtils {
* Method , Constructor or Field . Meta - annotations will be searched if the annotation
* is not declared locally on the supplied element .
* @param ae the Method , Constructor or Field from which to get the annotation
* @param annotationType the annotation class to look for , both locally and as a meta - annotation
* @return the matching annotation or { @code null } if not found
* @param annotationType the annotation type to look for , both locally and as a meta - annotation
* @return the matching annotation , or { @code null } if none found
* @since 3 . 1
* /
public static < T extends Annotation > T getAnnotation ( AnnotatedElement ae , Class < T > annotationType ) {
@ -119,7 +119,7 @@ public abstract class AnnotationUtils {
@@ -119,7 +119,7 @@ public abstract class AnnotationUtils {
* Get a single { @link Annotation } of { @code annotationType } from the supplied { @link Method } .
* < p > Correctly handles bridge { @link Method Methods } generated by the compiler .
* @param method the method to look for annotations on
* @param annotationType the annotation class to look for
* @param annotationType the annotation type to look for
* @return the annotations found
* @see org . springframework . core . BridgeMethodResolver # findBridgedMethod ( Method )
* /
@ -135,7 +135,7 @@ public abstract class AnnotationUtils {
@@ -135,7 +135,7 @@ public abstract class AnnotationUtils {
* < p > Correctly handles bridge { @link Method Methods } generated by the compiler .
* @param method the method to look for annotations on
* @param containerAnnotationType the class of the container that holds the annotations
* @param annotationType the annotation class to look for
* @param annotationType the annotation type to look for
* @return the annotations found
* @since 4 . 0
* @see org . springframework . core . BridgeMethodResolver # findBridgedMethod ( Method )
@ -154,7 +154,7 @@ public abstract class AnnotationUtils {
@@ -154,7 +154,7 @@ public abstract class AnnotationUtils {
* < p > Correctly handles bridge { @link Method Methods } generated by the compiler .
* @param annotatedElement the element to look for annotations on
* @param containerAnnotationType the class of the container that holds the annotations
* @param annotationType the annotation class to look for
* @param annotationType the annotation type to look for
* @return the annotations found
* @since 4 . 0
* @see org . springframework . core . BridgeMethodResolver # findBridgedMethod ( Method )
@ -170,13 +170,13 @@ public abstract class AnnotationUtils {
@@ -170,13 +170,13 @@ public abstract class AnnotationUtils {
/ * *
* Find a single { @link Annotation } of { @code annotationType } from the supplied
* { @link Method } , traversing its super methods ( i . e . , from super classes and
* { @link Method } , traversing its super methods ( i . e . , from super classes and
* interfaces ) if no annotation can be found on the given method itself .
* < p > Annotations on methods are not inherited by default , so we need to handle
* this explicitly .
* @param method the method to look for annotations on
* @param annotationType the annotation class to look for
* @return the annotation found , or { @code null } if none found
* @param annotationType the annotation type to look for
* @return the annotation found , or { @code null } if none
* /
public static < A extends Annotation > A findAnnotation ( Method method , Class < A > annotationType ) {
A annotation = getAnnotation ( method , annotationType ) ;
@ -288,8 +288,7 @@ public abstract class AnnotationUtils {
@@ -288,8 +288,7 @@ public abstract class AnnotationUtils {
}
for ( Annotation ann : clazz . getDeclaredAnnotations ( ) ) {
if ( ! isInJavaLangAnnotationPackage ( ann ) & & visited . add ( ann ) ) {
A annotation = findAnnotation ( ann . annotationType ( ) , annotationType ,
visited ) ;
A annotation = findAnnotation ( ann . annotationType ( ) , annotationType , visited ) ;
if ( annotation ! = null ) {
return annotation ;
}
@ -312,8 +311,8 @@ public abstract class AnnotationUtils {
@@ -312,8 +311,8 @@ public abstract class AnnotationUtils {
* < p > The standard { @link Class } API does not provide a mechanism for determining which class
* in an inheritance hierarchy actually declares an { @link Annotation } , so we need to handle
* this explicitly .
* @param annotationType the annotation class to look for , both locally and as a meta - annotation
* @param clazz the class on which to check for the annotation , or { @code null }
* @param annotationType the annotation type to look for , both locally and as a meta - annotation
* @param clazz the class on which to check for the annotation ( may be { @code null } )
* @return the first { @link Class } in the inheritance hierarchy of the specified { @code clazz }
* which declares an annotation for the specified { @code annotationType } , or { @code null }
* if not found
@ -509,8 +508,7 @@ public abstract class AnnotationUtils {
@@ -509,8 +508,7 @@ public abstract class AnnotationUtils {
Annotation [ ] realAnnotations = ( Annotation [ ] ) value ;
AnnotationAttributes [ ] mappedAnnotations = new AnnotationAttributes [ realAnnotations . length ] ;
for ( int i = 0 ; i < realAnnotations . length ; i + + ) {
mappedAnnotations [ i ] = getAnnotationAttributes (
realAnnotations [ i ] , classValuesAsString , true ) ;
mappedAnnotations [ i ] = getAnnotationAttributes ( realAnnotations [ i ] , classValuesAsString , true ) ;
}
attrs . put ( method . getName ( ) , mappedAnnotations ) ;
}
@ -634,7 +632,7 @@ public abstract class AnnotationUtils {
@@ -634,7 +632,7 @@ public abstract class AnnotationUtils {
this . result . add ( ( A ) annotation ) ;
}
else if ( ObjectUtils . nullSafeEquals ( this . containerAnnotationType , annotation . annotationType ( ) ) ) {
result . addAll ( Arrays . asList ( getValue ( annotation ) ) ) ;
this . result . addAll ( Arrays . asList ( getValue ( annotation ) ) ) ;
}
else if ( ! isInJavaLangAnnotationPackage ( annotation ) ) {
process ( annotation . annotationType ( ) ) ;
@ -651,8 +649,8 @@ public abstract class AnnotationUtils {
@@ -651,8 +649,8 @@ public abstract class AnnotationUtils {
return ( A [ ] ) method . invoke ( annotation ) ;
}
catch ( Exception ex ) {
throw new IllegalStateException ( "Unable to read value from repeating annotation container "
+ this . containerAnnotationType . getName ( ) , ex ) ;
throw new IllegalStateException ( "Unable to read value from repeating annotation container " +
this . containerAnnotationType . getName ( ) , ex ) ;
}
}
}