public class AnnotationProxy
extends java.lang.Object
implements java.lang.reflect.InvocationHandler
Purpose:The purpose of this class is to act as a dynamic proxy that allows JDK Annotation method calls to be made on a non Annotation object.
Responsibilities:
Map of components (method name to value pairs)This class provides a means to invoke JDK Annotation method calls on a non Annotation instance.
Proxy| Modifier and Type | Method and Description |
|---|---|
java.util.Map<java.lang.String,java.lang.Object> |
getComponents()
Return the
Map of method name/value pairs for this proxy
instance. |
static <A extends java.lang.annotation.Annotation> |
getProxy(java.util.Map<java.lang.String,java.lang.Object> components,
java.lang.Class<A> annoClass,
java.lang.ClassLoader cl,
org.eclipse.persistence.internal.helper.ConversionManager conversionMgr)
This is the preferred way to obtain an instance of a dynamic proxy.
|
java.lang.Object |
invoke(java.lang.Object proxy,
java.lang.reflect.Method method,
java.lang.Object[] args)
Invoke a given
Method on this proxy. |
public static <A extends java.lang.annotation.Annotation> A getProxy(java.util.Map<java.lang.String,java.lang.Object> components,
java.lang.Class<A> annoClass,
java.lang.ClassLoader cl,
org.eclipse.persistence.internal.helper.ConversionManager conversionMgr)
ClassLoader (which is used to load the
target Annotation), a Class (which indicates
the target Annotation, i.e.
javax.xml.bind.annotation.XmlElement.class), and a
Map of method name to value pairs, which represent the
method names on the Annotation and the values that are to be
returned from each method call. For example, if this proxy is to be used
for an @XmlElement, the Map should contain the
following keys:
components - Map of method name/value pairs for this proxy
instanceannoClass - The interface for the proxy class to implementcl - The ClassLoader to define the proxy classconversionMgr - ConversionManager instance for converting to the
correct return type in the invoke methodpublic java.util.Map<java.lang.String,java.lang.Object> getComponents()
Map of method name/value pairs for this proxy
instance.Map of method name/value pairs for this proxy
instancepublic java.lang.Object invoke(java.lang.Object proxy,
java.lang.reflect.Method method,
java.lang.Object[] args)
throws java.lang.Throwable
Method on this proxy. The component
Map will be accessed using the given Method's
name, and if an entry exists, the associated value is returned.invoke in interface java.lang.reflect.InvocationHandlerproxy - Satisfy the InvocationHandler interface - not
usedmethod - The Method instance corresponding to the
interface method invoked on the proxy instanceargs - Satisfy the InvocationHandler interface - not
usedjava.lang.Throwable