| java.lang.Object org.jboss.proxy.compiler.Proxies
Proxies | final public class Proxies (Code) | | Routines for converting between strongly-typed interfaces and
generic InvocationHandler objects.
version: $Revision: 57209 $ author: Unknown author: Jason Dillon |
Inner Class :public interface ProxyTarget extends Serializable | |
Method Summary | |
public static void | forgetProxyForClass(Class clazz) | public static InvocationHandler | getInvocationHandler(Object target, Class targetTypes) Utility built on top of newInvocationHandler to find
or create a proxy for the given target object.
It is the inverse of getTarget.
If the target implements ProxyTarget, it is a proxy
for some original InvocationHandler; extract and return that
InvocationHandler. | public static InvocationHandler | getInvocationHandler(Object target, Class targetType) | public static Method[] | getMethods(Class targetType) Utility which reports the set of valid methods for a target type.
It is exactly the set of public, abstract methods
returned by targetType.getMethods(), which are neither
static nor final.
Also, if the targetType is not a suitable type, an empty array
will be returned. | public static Method[] | getMethods(Class targetTypes) | public static Object | getTarget(InvocationHandler invocationHandler) Utility built on top of newTarget to find
or create a proxy for the given InvocationHandler.
It is the inverse of getInvocationHandler.
If the InvocationHandler implements ProxyInvocationHandler,
it is a proxy for some original target object; extract and return
that object. | public static ProxyInvocationHandler | newInvocationHandler(Object target, Class targetType) Create a new reflective InvocationHandler object
InvocationHandler wrapped around the given target object, for
the given target type(s). | public static ProxyInvocationHandler | newInvocationHandler(Object target, Class targetTypes) | public static ProxyTarget | newTarget(ClassLoader parent, InvocationHandler invocationHandler, Class targetTypes) Create a new target object x which is a proxy for
the given InvocationHandler disp. |
forgetProxyForClass | public static void forgetProxyForClass(Class clazz)(Code) | | |
getInvocationHandler | public static InvocationHandler getInvocationHandler(Object target, Class targetTypes)(Code) | | Utility built on top of newInvocationHandler to find
or create a proxy for the given target object.
It is the inverse of getTarget.
If the target implements ProxyTarget, it is a proxy
for some original InvocationHandler; extract and return that
InvocationHandler. Otherwise, just call newInvocationHandler.
See Also: Proxies.newInvocationHandler |
getMethods | public static Method[] getMethods(Class targetType)(Code) | | Utility which reports the set of valid methods for a target type.
It is exactly the set of public, abstract methods
returned by targetType.getMethods(), which are neither
static nor final.
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.
|
getTarget | public static Object getTarget(InvocationHandler invocationHandler)(Code) | | Utility built on top of newTarget to find
or create a proxy for the given InvocationHandler.
It is the inverse of getInvocationHandler.
If the InvocationHandler implements ProxyInvocationHandler,
it is a proxy for some original target object; extract and return
that object. Otherwise, just call newTarget.
|
newInvocationHandler | public static ProxyInvocationHandler newInvocationHandler(Object target, Class targetType)(Code) | | Create a new reflective InvocationHandler object
InvocationHandler wrapped around the given target object, for
the given target type(s).
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);
|
newInvocationHandler | public static ProxyInvocationHandler newInvocationHandler(Object target, Class targetTypes)(Code) | | |
newTarget | public static ProxyTarget newTarget(ClassLoader parent, InvocationHandler invocationHandler, Class targetTypes) throws Exception(Code) | | Create a new target object x which is a proxy for
the given InvocationHandler disp. The new object will be
equivalent to disp, except that it will support normal Java
method invocation, in place of the InvocationHandler.invoke
protocol, for each method supported by the InvocationHandler.
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
|
|
|