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