## org.jboss.proxy
Class Proxies

    java.lang.Object
      |
      +--org.jboss.proxy.Proxies

public final class Proxies
extends java.lang.Object

Routines for converting between strongly-typed interfaces and generic InvocationHandler objects.

Inner Class Summary
`static interface` `Proxies.ProxyInvocationHandler` A common interface shared by all objects created by `Proxies.newInvocationHandler`.
`static interface` `Proxies.ProxyTarget` A common interface shared by all objects created by `Proxies.newTarget`.

Method Summary
`static InvocationHandler` `getInvocationHandler(java.lang.Object target, java.lang.Class targetType)`
`static InvocationHandler` `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 InvocationHandler)` Utility built on top of `newTarget` to find or create a proxy for the given InvocationHandler.
`static Proxies.ProxyInvocationHandler` `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` `newInvocationHandler(java.lang.Object target, java.lang.Class[] targetTypes)`
`static Proxies.ProxyTarget` `newTarget(java.lang.ClassLoader parent, InvocationHandler 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

### newTarget

    public static Proxies.ProxyTarget newTarget(java.lang.ClassLoader parent,
                                                InvocationHandler InvocationHandler,
                                                java.lang.Class[] targetTypes)

  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`

### newInvocationHandler

    public static Proxies.ProxyInvocationHandler 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).

  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 Proxies.ProxyInvocationHandler newInvocationHandler(java.lang.Object target,
                                                                      java.lang.Class[] targetTypes)

### getTarget

    public static java.lang.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. Otherwise, just call `newTarget`.

### getInvocationHandler

    public static InvocationHandler 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. 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:
    `newInvocationHandler(java.lang.Object, java.lang.Class)`

### getInvocationHandler

    public static InvocationHandler getInvocationHandler(java.lang.Object target,
                                                         java.lang.Class targetType)

### getMethods

    public static java.lang.reflect.Method[] getMethods(java.lang.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. 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.

### getMethods

    public static java.lang.reflect.Method[] getMethods(java.lang.Class[] targetTypes)

Copyright © 2000 The JBoss Organization. All Rights Reserved.