Why we needed this wrapping in the first place ?

On Thu, May 22, 2008 at 2:19 AM,  <[EMAIL PROTECTED]> wrote:
> Author: dblevins
> Date: Wed May 21 16:19:27 2008
> New Revision: 658929
>
> URL: http://svn.apache.org/viewvc?rev=658929&view=rev
> Log:
> Thinned out the ProxyManager/ProxyFactory abstraction.  Biggest improvement 
> is that InvocationHandlers are no longer needlessly wrapped by a 
> Jdk13InvocationHandler.  Now when debugging you step right into the 
> BaseEjbProxyHandler.
>
> Removed:
>    
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/InvalidatedReferenceHandler.java
>    
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/Jdk13InvocationHandler.java
>    
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/Proxy.java
> Modified:
>    
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
>    
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/InvocationHandler.java
>    
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/Jdk13ProxyFactory.java
>    
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyFactory.java
>    
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyManager.java
>
> Modified: 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
> URL: 
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java?rev=658929&r1=658928&r2=658929&view=diff
> ==============================================================================
> --- 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
>  (original)
> +++ 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
>  Wed May 21 16:19:27 2008
> @@ -220,9 +220,15 @@
>         setDoIntraVmCopy(on);
>     }
>
> +    public InvocationHandler getInvocationHandler() {
> +        return this;
> +    }
> +
>     public Object invoke(Object proxy, Method method, Object[] args) throws 
> Throwable {
>         isValidReference(method);
>
> +        if (args == null) args = new Object[]{};
> +
>         if (method.getDeclaringClass() == Object.class) {
>             final String methodName = method.getName();
>
>
> Modified: 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/InvocationHandler.java
> URL: 
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/InvocationHandler.java?rev=658929&r1=658928&r2=658929&view=diff
> ==============================================================================
> --- 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/InvocationHandler.java
>  (original)
> +++ 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/InvocationHandler.java
>  Wed May 21 16:19:27 2008
> @@ -16,9 +16,8 @@
>  */
>  package org.apache.openejb.util.proxy;
>
> -import java.lang.reflect.Method;
> +public interface InvocationHandler extends 
> java.lang.reflect.InvocationHandler {
>
> -public interface InvocationHandler {
> +    public InvocationHandler getInvocationHandler();
>
> -    public Object invoke(Object proxy, Method method, Object[] args) throws 
> Throwable;
>  }
>
> Modified: 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/Jdk13ProxyFactory.java
> URL: 
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/Jdk13ProxyFactory.java?rev=658929&r1=658928&r2=658929&view=diff
> ==============================================================================
> --- 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/Jdk13ProxyFactory.java
>  (original)
> +++ 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/Jdk13ProxyFactory.java
>  Wed May 21 16:19:27 2008
> @@ -32,46 +32,14 @@
>     }
>
>     public void init(Properties props) throws OpenEJBException {
> -        start();
> -    }
> -
> -    /**
> -     * @org.apache.xbean.InitMethod
> -     */
> -    public void start() throws OpenEJBException {
> -        String version = "";
> -        String badVersion = "1.3.0-";
> -        try {
> -            version = System.getProperty("java.vm.version");
> -        } catch (Exception e) {
> -        }
> -        if (version.indexOf(badVersion) != -1) {
> -            String message = "" +
> -                    "INCOMPATIBLE VM: \n\n" +
> -                    "The Java Virtual Machine you are using contains a 
> bug\n" +
> -                    "in the proxy generation logic.  This bug has been    
> \n" +
> -                    "documented by Sun and has been fixed in later VMs.   
> \n" +
> -                    "Please download the latest 1.3 Virtual Machine.      
> \n" +
> -                    "For more details see:                                   
>  \n" +
> -                    
> "http://developer.java.sun.com/developer/bugParade/bugs/4346224.html\n  ";
> -            throw new OpenEJBException(message);
> -        }
>     }
>
>     public org.apache.openejb.util.proxy.InvocationHandler 
> getInvocationHandler(Object proxy) throws IllegalArgumentException {
> -        Jdk13InvocationHandler handler = (Jdk13InvocationHandler) 
> Proxy.getInvocationHandler(proxy);
> -        if (handler == null)
> -            return null;
> +        InvocationHandler handler = (InvocationHandler) 
> Proxy.getInvocationHandler(proxy);
> +        if (handler == null) return null;
>         return handler.getInvocationHandler();
>     }
>
> -    public Object setInvocationHandler(Object proxy, 
> org.apache.openejb.util.proxy.InvocationHandler handler) throws 
> IllegalArgumentException {
> -        Jdk13InvocationHandler jdk13 = (Jdk13InvocationHandler) 
> Proxy.getInvocationHandler(proxy);
> -        if (jdk13 == null)
> -            throw new IllegalArgumentException("Proxy " + proxy + " 
> unknown!");
> -        return jdk13.setInvocationHandler(handler);
> -    }
> -
>     public Class getProxyClass(Class interfce) throws 
> IllegalArgumentException {
>         return Proxy.getProxyClass(interfce.getClassLoader(), new 
> Class[]{interfce});
>     }
> @@ -90,43 +58,23 @@
>         return Proxy.isProxyClass(cl);
>     }
>
> -    private final static Class[] constructorParams = 
> {java.lang.reflect.InvocationHandler.class};
> -
> -    public Object newProxyInstance(Class proxyClass) throws 
> IllegalArgumentException {
> -        if (!Proxy.isProxyClass(proxyClass))
> -            throw new IllegalArgumentException();
> -        try {
> -            Constructor cons = proxyClass.getConstructor(constructorParams);
> -            return (Object) cons.newInstance(new Object[]{new 
> Jdk13InvocationHandler()});
> -        } catch (NoSuchMethodException e) {
> -            throw (InternalError) new 
> InternalError(e.toString()).initCause(e);
> -        } catch (IllegalAccessException e) {
> -            throw (InternalError) new 
> InternalError(e.toString()).initCause(e);
> -        } catch (InstantiationException e) {
> -            throw (InternalError) new 
> InternalError(e.toString()).initCause(e);
> -        } catch (InvocationTargetException e) {
> -            throw (InternalError) new 
> InternalError(e.toString()).initCause(e);
> -        }
> -    }
> -
>     /*
>      * Returns an instance of a proxy class for the specified interface that 
> dispatches method invocations to
>      * the specified invocation handler.
>      */
>     public Object newProxyInstance(Class interfce, 
> org.apache.openejb.util.proxy.InvocationHandler h) throws 
> IllegalArgumentException {
> -        Jdk13InvocationHandler handler = new Jdk13InvocationHandler(h);
> -        return Proxy.newProxyInstance(interfce.getClassLoader(), new 
> Class[]{interfce}, handler);
> +        return Proxy.newProxyInstance(interfce.getClassLoader(), new 
> Class[]{interfce}, h);
>     }
>
>     /*
>      * Returns an instance of a proxy class for the specified interface that 
> dispatches method invocations to
>      * the specified invocation handler.
>      */
> -    public Object newProxyInstance(Class[] interfaces, 
> org.apache.openejb.util.proxy.InvocationHandler h) throws 
> IllegalArgumentException {
> +    public Object newProxyInstance(Class[] interfaces, 
> org.apache.openejb.util.proxy.InvocationHandler handler) throws 
> IllegalArgumentException {
>         if (interfaces.length < 1) {
>             throw new IllegalArgumentException("It's boring to implement 0 
> interfaces!");
>         }
> -        Jdk13InvocationHandler handler = new Jdk13InvocationHandler(h);
> +
>         try {
>             return Proxy.newProxyInstance(interfaces[0].getClassLoader(), 
> interfaces, handler);
>         } catch (IllegalArgumentException e) {
>
> Modified: 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyFactory.java
> URL: 
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyFactory.java?rev=658929&r1=658928&r2=658929&view=diff
> ==============================================================================
> --- 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyFactory.java
>  (original)
> +++ 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyFactory.java
>  Wed May 21 16:19:27 2008
> @@ -26,8 +26,6 @@
>
>     public InvocationHandler getInvocationHandler(Object proxy) throws 
> IllegalArgumentException;
>
> -    public Object setInvocationHandler(Object proxy, InvocationHandler 
> handler) throws IllegalArgumentException;
> -
>     public Class getProxyClass(Class interfce) throws 
> IllegalArgumentException;
>
>     public Class getProxyClass(Class[] interfaces) throws 
> IllegalArgumentException;
> @@ -49,6 +47,5 @@
>      */
>     public Object newProxyInstance(Class[] interfaces, InvocationHandler h) 
> throws IllegalArgumentException;
>
> -    public Object newProxyInstance(Class proxyClass) throws 
> IllegalArgumentException;
>  }
>
>
> Modified: 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyManager.java
> URL: 
> http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyManager.java?rev=658929&r1=658928&r2=658929&view=diff
> ==============================================================================
> --- 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyManager.java
>  (original)
> +++ 
> openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyManager.java
>  Wed May 21 16:19:27 2008
> @@ -20,7 +20,7 @@
>
>  public class ProxyManager {
>
> -    private static volatile ProxyFactory defaultFactory;
> +    private static volatile ProxyFactory defaultFactory = new 
> Jdk13ProxyFactory();
>     private static final HashMap factories = new HashMap();
>     private static volatile String defaultFactoryName;
>
> @@ -64,11 +64,6 @@
>         return defaultFactory.getInvocationHandler(proxy);
>     }
>
> -    public static Object setInvocationHandler(Object proxy, 
> InvocationHandler handler) {
> -        checkDefaultFactory();
> -        return defaultFactory.setInvocationHandler(proxy, handler);
> -    }
> -
>     public static Class getProxyClass(Class interfaceType) throws 
> IllegalAccessException {
>         return getProxyClass(new Class[]{interfaceType});
>     }
> @@ -92,9 +87,4 @@
>         return defaultFactory.isProxyClass(cl);
>     }
>
> -    public static Object newProxyInstance(Class proxyClass) throws 
> IllegalAccessException {
> -        checkDefaultFactory();
> -        return defaultFactory.newProxyInstance(proxyClass);
> -    }
> -
>  }
>
>
>



-- 
Thanks
- Mohammad Nour

Reply via email to