You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2008/05/22 01:19:27 UTC

svn commit: r658929 - in /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb: core/ivm/ util/proxy/

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);
-    }
-
 }



Re: svn commit: r658929 - in /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb: core/ivm/ util/proxy/

Posted by Mohammad Nour El-Din <no...@gmail.com>.
Thanks for clarification :)

On Sat, Jun 7, 2008 at 1:48 AM, David Blevins <da...@visi.com> wrote:
>
> On May 22, 2008, at 3:20 AM, Mohammad Nour El-Din wrote:
>
>> Why we needed this wrapping in the first place ?
>
> It stems from the jdk 1.2 days when there was no proxy support in the VM.
>  It's still sort of nice to have around as it keeps all proxy creation in
> one spot and allows us to switch to other impls, but it's not as important
> as it once was.
>
> -David
>
>
>>
>>
>> On Thu, May 22, 2008 at 2:19 AM,  <db...@apache.org> 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
>>
>
>



-- 
Thanks
- Mohammad Nour

Re: svn commit: r658929 - in /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb: core/ivm/ util/proxy/

Posted by David Blevins <da...@visi.com>.
On May 22, 2008, at 3:20 AM, Mohammad Nour El-Din wrote:

> Why we needed this wrapping in the first place ?

It stems from the jdk 1.2 days when there was no proxy support in the  
VM.  It's still sort of nice to have around as it keeps all proxy  
creation in one spot and allows us to switch to other impls, but it's  
not as important as it once was.

-David


>
>
> On Thu, May 22, 2008 at 2:19 AM,  <db...@apache.org> 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
>


Re: svn commit: r658929 - in /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb: core/ivm/ util/proxy/

Posted by Mohammad Nour El-Din <no...@gmail.com>.
Why we needed this wrapping in the first place ?

On Thu, May 22, 2008 at 2:19 AM,  <db...@apache.org> 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