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 instance
public 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