Author: dblevins
Date: Fri Aug 17 21:44:06 2012
New Revision: 1374448

URL: http://svn.apache.org/viewvc?rev=1374448&view=rev
Log:
OPENEJB-1885 Simplify EJB proxy code

Removed:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyGenerator.java
Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImpl.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyEJB.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyManager.java
    
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImplTest.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java?rev=1374448&r1=1374447&r2=1374448&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java
 Fri Aug 17 21:44:06 2012
@@ -28,7 +28,7 @@ import org.apache.openejb.core.stateful.
 import org.apache.openejb.core.stateless.StatelessEjbObjectHandler;
 import org.apache.openejb.jee.SessionType;
 import org.apache.openejb.spi.SecurityService;
-import org.apache.openejb.util.proxy.LocalBeanProxyFactory;
+import org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl;
 import org.apache.openejb.util.proxy.ProxyManager;
 
 import javax.ejb.EJBLocalObject;
@@ -133,7 +133,7 @@ public abstract class BaseSessionContext
             }
 
             if (InterfaceType.LOCALBEAN.equals(interfaceType)) {
-                return 
LocalBeanProxyFactory.newProxyInstance(di.getClassLoader(), di.getBeanClass(), 
handler);
+                return 
LocalBeanProxyGeneratorImpl.newProxyInstance(di.getClassLoader(), 
di.getBeanClass(), handler);
             } else {
                 List<Class> interfaces = new ArrayList<Class>();
                 interfaces.addAll(di.getInterfaces(interfaceType));

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java?rev=1374448&r1=1374447&r2=1374448&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
 Fri Aug 17 21:44:06 2012
@@ -30,7 +30,7 @@ import org.apache.openejb.core.stateless
 import org.apache.openejb.spi.ApplicationServer;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
-import org.apache.openejb.util.proxy.LocalBeanProxyFactory;
+import org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl;
 import org.apache.openejb.util.proxy.ProxyManager;
 
 import javax.ejb.AccessLocalException;
@@ -135,7 +135,7 @@ public abstract class EjbHomeProxyHandle
             // TODO Is it correct for ManagedBean injection via managed bean 
class?
             if ((InterfaceType.LOCALBEAN.equals(objectInterfaceType) || 
getBeanContext().getComponentType().equals(BeanType.MANAGED))
                     && !getBeanContext().isDynamicallyImplemented()) {
-                return 
LocalBeanProxyFactory.newProxyInstance(handler.getBeanContext().getClassLoader(),
 handler.getBeanContext().getBeanClass(), handler);
+                return 
LocalBeanProxyGeneratorImpl.newProxyInstance(handler.getBeanContext().getClassLoader(),
 handler.getBeanContext().getBeanClass(), handler);
             } else {
                 List<Class> proxyInterfaces = new 
ArrayList<Class>(handler.getInterfaces().size() + 1);
                 proxyInterfaces.addAll(handler.getInterfaces());

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImpl.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImpl.java?rev=1374448&r1=1374447&r2=1374448&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImpl.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImpl.java
 Fri Aug 17 21:44:06 2012
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb.util.proxy;
 
+import org.apache.openejb.util.Debug;
 import org.apache.xbean.asm.ClassWriter;
 import org.apache.xbean.asm.Label;
 import org.apache.xbean.asm.MethodVisitor;
@@ -37,13 +38,42 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-public class LocalBeanProxyGeneratorImpl implements LocalBeanProxyGenerator, 
Opcodes {
+public class LocalBeanProxyGeneratorImpl implements Opcodes {
     private static final String[] SERIALIZABLE = new 
String[]{Serializable.class.getName().replace('.', '/')};
     public static final java.lang.reflect.InvocationHandler 
NON_BUSINESS_HANDLER = new NonBusinessHandler();
 
     static final String BUSSINESS_HANDLER_NAME = "businessHandler";
     static final String NON_BUSINESS_HANDLER_NAME = "nonBusinessHandler";
 
+    public static Object newProxyInstance(ClassLoader cl, Class interfce, 
java.lang.reflect.InvocationHandler h) throws IllegalArgumentException {
+        try {
+            final LocalBeanProxyGeneratorImpl generator = new 
LocalBeanProxyGeneratorImpl();
+
+            final Class proxyClass = generator.createProxy(interfce, cl);
+            final Object object = generator.constructProxy(proxyClass, h);
+
+            return object;
+        } catch (Throwable e) {
+            throw new InternalError(Debug.printStackTrace(e));
+        }
+    }
+
+    public static java.lang.reflect.InvocationHandler 
getInvocationHandler(Object proxy) {
+        try {
+            final Field field = 
proxy.getClass().getDeclaredField(BUSSINESS_HANDLER_NAME);
+            field.setAccessible(true);
+            try {
+                return (java.lang.reflect.InvocationHandler) field.get(proxy);
+            } finally {
+                field.setAccessible(false);
+            }
+        } catch (NoSuchFieldException e) {
+            throw new IllegalArgumentException(e);
+        } catch (IllegalAccessException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+
     public Object constructProxy(final Class clazz, final 
java.lang.reflect.InvocationHandler handler) throws IllegalStateException {
 
         final Object instance = Unsafe.allocateInstance(clazz);

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyEJB.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyEJB.java?rev=1374448&r1=1374447&r2=1374448&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyEJB.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyEJB.java
 Fri Aug 17 21:44:06 2012
@@ -29,7 +29,7 @@ public class ProxyEJB {
 
     public static Object proxy(final BeanContext beanContext, final Class<?>[] 
itfs) {
         if (beanContext.isLocalbean()) {
-            return 
LocalBeanProxyFactory.newProxyInstance(itfs[0].getClassLoader(), itfs[0], new 
Handler(beanContext));
+            return 
LocalBeanProxyGeneratorImpl.newProxyInstance(itfs[0].getClassLoader(), itfs[0], 
new Handler(beanContext));
         }
         return Proxy.newProxyInstance(itfs[0].getClassLoader(), itfs, new 
Handler(beanContext));
     }

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyManager.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyManager.java?rev=1374448&r1=1374447&r2=1374448&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyManager.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyManager.java
 Fri Aug 17 21:44:06 2012
@@ -61,7 +61,7 @@ public class ProxyManager {
 
     public static java.lang.reflect.InvocationHandler 
getInvocationHandler(Object proxy) {
         if (proxy.getClass().getName().endsWith("$LocalBeanProxy")) {
-            return LocalBeanProxyFactory.getInvocationHandler(proxy);
+            return LocalBeanProxyGeneratorImpl.getInvocationHandler(proxy);
         }
         checkDefaultFactory();
         return defaultFactory.getInvocationHandler(proxy);

Modified: 
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImplTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImplTest.java?rev=1374448&r1=1374447&r2=1374448&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImplTest.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImplTest.java
 Fri Aug 17 21:44:06 2012
@@ -177,7 +177,7 @@ public class LocalBeanProxyGeneratorImpl
        private SampleLocalBean loadProxy(TestInvocationHandler 
invocationHandler) throws Exception {
                ClassLoader cl = Thread.currentThread().getContextClassLoader();
                
-               return (SampleLocalBean) 
LocalBeanProxyFactory.newProxyInstance(cl, SampleLocalBean.class, 
invocationHandler);
+               return (SampleLocalBean) 
LocalBeanProxyGeneratorImpl.newProxyInstance(cl, SampleLocalBean.class, 
invocationHandler);
        }
 
        public void testShouldReturnCorrectMethodSignatures() throws Exception {


Reply via email to