Thanks for clarification :)

On Sat, Jun 7, 2008 at 1:48 AM, David Blevins <[EMAIL PROTECTED]> 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,  <[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
>>
>
>



-- 
Thanks
- Mohammad Nour

Reply via email to