You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by dj...@apache.org on 2010/08/12 09:11:27 UTC

svn commit: r984662 - in /openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/ container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/core/ containe...

Author: djencks
Date: Thu Aug 12 07:11:26 2010
New Revision: 984662

URL: http://svn.apache.org/viewvc?rev=984662&view=rev
Log:
localBean means the bean class is one of the exposed interfaces, and we need to use our own proxy generator to build proxies for it

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java
    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java
    openejb/trunk/openejb3/container/openejb-junit/src/main/java/org/apache/openejb/junit/LocalClientRunner.java
    openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/DeploymentIndexTest.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java?rev=984662&r1=984661&r2=984662&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InterfaceType.java Thu Aug 12 07:11:26 2010
@@ -67,6 +67,7 @@ public enum InterfaceType {
         switch(this){
             case BUSINESS_LOCAL: return true;
             case BUSINESS_REMOTE: return true;
+            case LOCALBEAN: return true;
         }
         return false;
     }
@@ -87,6 +88,7 @@ public enum InterfaceType {
             case EJB_LOCAL: return true;
             case BUSINESS_LOCAL: return true;
             case BUSINESS_LOCAL_HOME: return true;
+            case LOCALBEAN: return true;
         }
         return false;
     }

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java?rev=984662&r1=984661&r2=984662&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java Thu Aug 12 07:11:26 2010
@@ -145,7 +145,7 @@ class EnterpriseBeanBuilder {
 
         CoreDeploymentInfo deployment;
         if (BeanType.MESSAGE_DRIVEN != ejbType) {
-            deployment = new CoreDeploymentInfo(bean.ejbDeploymentId, compJndiContext, moduleContext, ejbClass, home, remote, localhome, local, serviceEndpoint, businessLocals, businessRemotes, primaryKey, ejbType);
+            deployment = new CoreDeploymentInfo(bean.ejbDeploymentId, compJndiContext, moduleContext, ejbClass, home, remote, localhome, local, serviceEndpoint, businessLocals, businessRemotes, primaryKey, ejbType, bean.localbean && ejbType.isSession());
         } else {
             MessageDrivenBeanInfo messageDrivenBeanInfo = (MessageDrivenBeanInfo) bean;
             Class mdbInterface = loadClass(messageDrivenBeanInfo.mdbInterface, "classNotFound.mdbInterface");
@@ -226,8 +226,6 @@ class EnterpriseBeanBuilder {
             // Allow dependsOn to work for all session beans
             deployment.getDependsOn().addAll(bean.dependsOn);
 
-            // @LocalBean should work for any kind of Session Bean
-            deployment.setLocalbean(bean.localbean);
         }
 
         if (ejbType == BeanType.SINGLETON) {

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java?rev=984662&r1=984661&r2=984662&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java Thu Aug 12 07:11:26 2010
@@ -38,6 +38,7 @@ import org.apache.openejb.core.stateful.
 import org.apache.openejb.core.singleton.SingletonEjbObjectHandler;
 import org.apache.openejb.core.managed.ManagedObjectHandler;
 import org.apache.openejb.spi.SecurityService;
+import org.apache.openejb.util.proxy.LocalBeanProxyFactory;
 import org.apache.openejb.util.proxy.ProxyManager;
 
 /**
@@ -122,10 +123,14 @@ public abstract class BaseSessionContext
                 default: throw new IllegalStateException("Bean is not a session bean: "+di.getComponentType());
             }
 
-            List<Class> interfaces = new ArrayList<Class>();
-            interfaces.addAll(di.getInterfaces(interfaceType));
-            interfaces.add(IntraVmProxy.class);
-            return ProxyManager.newProxyInstance(interfaces.toArray(new Class[interfaces.size()]), handler);
+            if (InterfaceType.LOCALBEAN.equals(interfaceType)) {
+                return LocalBeanProxyFactory.newProxyInstance(di.getClassLoader(), di.getBeanClass(), handler);
+            } else {
+                List<Class> interfaces = new ArrayList<Class>();
+                interfaces.addAll(di.getInterfaces(interfaceType));
+                interfaces.add(IntraVmProxy.class);
+                return ProxyManager.newProxyInstance(interfaces.toArray(new Class[interfaces.size()]), handler);
+            }
         } catch (IllegalAccessException iae) {
             throw new InternalErrorException("Could not create IVM proxy for " + interfce.getName() + " interface", iae);
         }

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java?rev=984662&r1=984661&r2=984662&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java Thu Aug 12 07:11:26 2010
@@ -120,7 +120,7 @@ public class CoreDeploymentInfo extends 
     private final Map<Class, ExceptionType> exceptions = new HashMap<Class, ExceptionType>();
 
     private boolean loadOnStartup;
-    private boolean localbean;
+    private final boolean localbean;
     private Duration accessTimeout;
     private Duration statefulTimeout;
 
@@ -171,8 +171,8 @@ public class CoreDeploymentInfo extends 
                               Class localHomeInterface,
                               Class localInterface,
                               Class serviceEndpointInterface, List<Class> businessLocals, List<Class> businessRemotes, Class pkClass,
-                              BeanType componentType
-    ) throws SystemException {
+                              BeanType componentType,
+                              boolean localBean) throws SystemException {
         super(id, moduleContext.getOptions());
         this.moduleContext = moduleContext;
         this.jndiContext = jndiContext;
@@ -196,6 +196,7 @@ public class CoreDeploymentInfo extends 
         this.serviceEndpointInterface = serviceEndpointInterface;
 
         this.componentType = componentType;
+        this.localbean = localBean;
 
 //        if (businessLocal != null && localHomeInterface == null){
 //            this.localHomeInterface = BusinessLocalHome.class;
@@ -238,6 +239,9 @@ public class CoreDeploymentInfo extends 
         for (Class businessLocal : this.businessLocals) {
             addInterface(businessLocal, InterfaceType.BUSINESS_LOCAL);
         }
+        if (localBean) {
+            addInterface(beanClass, InterfaceType.LOCALBEAN);
+        }
     }
 
     /**
@@ -324,6 +328,7 @@ public class CoreDeploymentInfo extends 
             }
         }
         createMethodMap();
+        localbean = false;
     }
 
 
@@ -1018,10 +1023,6 @@ public class CoreDeploymentInfo extends 
         return localbean;
     }
 
-    public void setLocalbean(boolean localbean) {
-        this.localbean = localbean;
-    }
-
     public Class getBusinessLocalBeanInterface() {
         if (this.isLocalbean()) {
             return this.beanClass;

Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java?rev=984662&r1=984661&r2=984662&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/AuthorBean.java Thu Aug 12 07:11:26 2010
@@ -45,7 +45,7 @@ public class AuthorBean implements Entit
                     null, null,
                     null,
                     String.class, 
-                    BeanType.CMP_ENTITY);
+                    BeanType.CMP_ENTITY, false);
             ((CoreDeploymentInfo)deploymentInfo).createMethodMap();
         } catch (SystemException e) {
             throw new RuntimeException(e);

Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java?rev=984662&r1=984661&r2=984662&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/cmp/jpa/BookBean.java Thu Aug 12 07:11:26 2010
@@ -45,7 +45,7 @@ public class BookBean implements EntityB
                     null, null,
                     null,
                     String.class,
-                    BeanType.CMP_ENTITY);
+                    BeanType.CMP_ENTITY, false);
             ((CoreDeploymentInfo)deploymentInfo).createMethodMap();
         } catch (SystemException e) {
             throw new RuntimeException(e);

Modified: openejb/trunk/openejb3/container/openejb-junit/src/main/java/org/apache/openejb/junit/LocalClientRunner.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-junit/src/main/java/org/apache/openejb/junit/LocalClientRunner.java?rev=984662&r1=984661&r2=984662&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-junit/src/main/java/org/apache/openejb/junit/LocalClientRunner.java (original)
+++ openejb/trunk/openejb3/container/openejb-junit/src/main/java/org/apache/openejb/junit/LocalClientRunner.java Thu Aug 12 07:11:26 2010
@@ -107,7 +107,7 @@ public class LocalClientRunner extends B
 
     private CoreDeploymentInfo createDeployment(Class<?> testClass) {
         try {
-            return new CoreDeploymentInfo(null, new IvmContext(), new ModuleContext("", new AppContext("", SystemInstance.get(), testClass.getClassLoader(), new IvmContext(), new IvmContext()), new IvmContext()), testClass, null, null, null, null, null, null, null, null, BeanType.MANAGED);
+            return new CoreDeploymentInfo(null, new IvmContext(), new ModuleContext("", new AppContext("", SystemInstance.get(), testClass.getClassLoader(), new IvmContext(), new IvmContext()), new IvmContext()), testClass, null, null, null, null, null, null, null, null, BeanType.MANAGED, false);
         } catch (SystemException e) {
             throw new IllegalStateException(e);
         }

Modified: openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/DeploymentIndexTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/DeploymentIndexTest.java?rev=984662&r1=984661&r2=984662&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/DeploymentIndexTest.java (original)
+++ openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/DeploymentIndexTest.java Thu Aug 12 07:11:26 2010
@@ -40,7 +40,7 @@ public class DeploymentIndexTest {
     @Before
     public void setUp() throws SystemException {
         method = Method.class.getMethods()[0];
-        deploymentInfo = new CoreDeploymentInfo("aDeploymentId", null, new ModuleContext("", new AppContext("", SystemInstance.get(), null, null, null), null), DeploymentIndexTest.class, null, null, null, null, null, null, null, null, null);
+        deploymentInfo = new CoreDeploymentInfo("aDeploymentId", null, new ModuleContext("", new AppContext("", SystemInstance.get(), null, null, null), null), DeploymentIndexTest.class, null, null, null, null, null, null, null, null, null, false);
         deploymentIndex = new DeploymentIndex(new DeploymentInfo[] { deploymentInfo, deploymentInfo });
     }