A
- the annotation typefinal class SynthesizedMergedAnnotationInvocationHandler<A extends java.lang.annotation.Annotation>
extends java.lang.Object
implements java.lang.reflect.InvocationHandler
InvocationHandler
for an Annotation
that Spring has
synthesized (i.e. wrapped in a dynamic proxy) with additional
functionality such as attribute alias handling.Annotation
,
AnnotationUtils.synthesizeAnnotation(Annotation, AnnotatedElement)
Modifier and Type | Field and Description |
---|---|
private MergedAnnotation<?> |
annotation |
private AttributeMethods |
attributes |
private java.lang.Integer |
hashCode |
private java.lang.Class<A> |
type |
Modifier | Constructor and Description |
---|---|
private |
SynthesizedMergedAnnotationInvocationHandler(MergedAnnotation<A> annotation,
java.lang.Class<A> type) |
Modifier and Type | Method and Description |
---|---|
private boolean |
annotationEquals(java.lang.Object other)
See
Annotation.equals(Object) for a definition of the required algorithm. |
private int |
annotationHashCode()
See
Annotation.hashCode() for a definition of the required algorithm. |
private java.lang.Integer |
computeHashCode() |
(package private) static <A extends java.lang.annotation.Annotation> |
createProxy(MergedAnnotation<A> annotation,
java.lang.Class<A> type) |
private java.lang.Object |
getAttributeValue(java.lang.reflect.Method method) |
private int |
getValueHashCode(java.lang.Object value) |
java.lang.Object |
invoke(java.lang.Object proxy,
java.lang.reflect.Method method,
java.lang.Object[] args) |
private boolean |
isAnnotationTypeMethod(java.lang.reflect.Method method) |
private static boolean |
isVisible(java.lang.ClassLoader classLoader,
java.lang.Class<?> interfaceClass) |
private final MergedAnnotation<?> annotation
private final java.lang.Class<A extends java.lang.annotation.Annotation> type
private final AttributeMethods attributes
@Nullable private volatile java.lang.Integer hashCode
private SynthesizedMergedAnnotationInvocationHandler(MergedAnnotation<A> annotation, java.lang.Class<A> type)
public java.lang.Object invoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
invoke
in interface java.lang.reflect.InvocationHandler
private boolean isAnnotationTypeMethod(java.lang.reflect.Method method)
private boolean annotationEquals(java.lang.Object other)
Annotation.equals(Object)
for a definition of the required algorithm.other
- the other object to compare againstprivate int annotationHashCode()
Annotation.hashCode()
for a definition of the required algorithm.private java.lang.Integer computeHashCode()
private int getValueHashCode(java.lang.Object value)
private java.lang.Object getAttributeValue(java.lang.reflect.Method method)
static <A extends java.lang.annotation.Annotation> A createProxy(MergedAnnotation<A> annotation, java.lang.Class<A> type)
private static boolean isVisible(java.lang.ClassLoader classLoader, java.lang.Class<?> interfaceClass)