|
||||||||||
PREV CLASS (src) NEXT CLASS (src) | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.jboss.proxy.compiler.Proxies
Routines for converting between strongly-typed interfaces and generic InvocationHandler objects.
Nested Class Summary | |
static interface |
Proxies.ProxyInvocationHandler (src)
A common interface shared by all objects created by Proxies.newInvocationHandler. |
static interface |
Proxies.ProxyTarget (src)
A common interface shared by all objects created by Proxies.newTarget. |
Method Summary | |
static void |
forgetProxyForClass(java.lang.Class clazz)
|
static InvocationHandler (src) |
getInvocationHandler(java.lang.Object target,
java.lang.Class targetType)
|
static InvocationHandler (src) |
getInvocationHandler(java.lang.Object target,
java.lang.Class[] targetTypes)
Utility built on top of newInvocationHandler to find or create a proxy for the given target object. |
static java.lang.reflect.Method[] |
getMethods(java.lang.Class targetType)
Utility which reports the set of valid methods for a target type. |
static java.lang.reflect.Method[] |
getMethods(java.lang.Class[] targetTypes)
|
static java.lang.Object |
getTarget(InvocationHandler (src) invocationHandler)
Utility built on top of newTarget to find or create a proxy for the given InvocationHandler. |
static Proxies.ProxyInvocationHandler (src) |
newInvocationHandler(java.lang.Object target,
java.lang.Class targetType)
Create a new reflective InvocationHandler object InvocationHandler wrapped around the given target object, for the given target type(s). |
static Proxies.ProxyInvocationHandler (src) |
newInvocationHandler(java.lang.Object target,
java.lang.Class[] targetTypes)
|
static Proxies.ProxyTarget (src) |
newTarget(java.lang.ClassLoader parent,
InvocationHandler (src) invocationHandler,
java.lang.Class[] targetTypes)
Create a new target object x which is a proxy for the given InvocationHandler disp. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method Detail |
public static Proxies.ProxyTarget (src) newTarget(java.lang.ClassLoader parent, InvocationHandler (src) invocationHandler, java.lang.Class[] targetTypes) throws java.lang.Exception
The new object will implement each of the given target types. (The target types default to those declared by the InvocationHandler itself.) The new object will also implement the "administrative" interface Proxies.ProxyTarget.
For each "overrideable" (public, non-static, non-final) method T.m of T, calling x.m(...) will immediately cause a corresponding reflective call of the form disp.invoke(RM, new Object[]{ ... }), where RM is the reflective object for m.
The concrete class of this target object will be
something mysterious and indefinite. Many callers will
immediately cast the resulting proxy object to the target type
of the InvocationHandler. For example:
MyInterface x1 = ...;
InvocationHandler i = Proxies.newInvocationHandler(x1, MyInterface.class);
MyInterface x2 = (MyInterface) ((Proxies.ProxyInvocationHandler)i).getTarget();
// x1 == x2
MyInterface x3 = (MyInterface) Proxies.newTarget(i);
// x1 != x3, but calls to x3 are forwarded via i to x1
java.lang.Exception
public static Proxies.ProxyInvocationHandler (src) newInvocationHandler(java.lang.Object target, java.lang.Class targetType)
The new object will be operationally equivalent to target, except that it will support a reflective method invocation sequence (InvocationHandler.invoke) instead of the normal Java method invocation mechanism.
The target type must be specified, since the complete implementation
type of the target object is usually irrelevant to the application.
The target object must match the specified target type.
For example:
MyInterface x1 = ...;
InvocationHandler i = Proxies.newInvocationHandler(x1, MyInterface.class);
public static Proxies.ProxyInvocationHandler (src) newInvocationHandler(java.lang.Object target, java.lang.Class[] targetTypes)
public static java.lang.Object getTarget(InvocationHandler (src) invocationHandler)
If the InvocationHandler implements ProxyInvocationHandler, it is a proxy for some original target object; extract and return that object. Otherwise, just call newTarget.
public static InvocationHandler (src) getInvocationHandler(java.lang.Object target, java.lang.Class[] targetTypes)
If the target implements ProxyTarget, it is a proxy for some original InvocationHandler; extract and return that InvocationHandler. Otherwise, just call newInvocationHandler.
newInvocationHandler(java.lang.Object, java.lang.Class)
public static InvocationHandler (src) getInvocationHandler(java.lang.Object target, java.lang.Class targetType)
public static java.lang.reflect.Method[] getMethods(java.lang.Class targetType)
Also, if the targetType is not a suitable type, an empty array will be returned. The target type must not contain protected abstract methods, must have a nullary constructor, and must not be something silly like an array or primitive type, or a final class.
public static java.lang.reflect.Method[] getMethods(java.lang.Class[] targetTypes)
public static void forgetProxyForClass(java.lang.Class clazz)
|
||||||||||
PREV CLASS (src) NEXT CLASS (src) | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |