dain 2005/02/16 01:12:38
Modified: modules/openejb-builder/src/java/org/openejb/deployment
BMPContainerBuilder.java CMPContainerBuilder.java
CMPEntityBuilder.java EntityBuilder.java
Log:
Added reentrancy detection, and throw exception when reentering a
non-reentrant entity
Revision Changes Path
1.3 +19 -5
openejb/modules/openejb-builder/src/java/org/openejb/deployment/BMPContainerBuilder.java
Index: BMPContainerBuilder.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/BMPContainerBuilder.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BMPContainerBuilder.java 30 Jan 2005 10:59:10 -0000 1.2
+++ BMPContainerBuilder.java 16 Feb 2005 06:12:38 -0000 1.3
@@ -64,7 +64,7 @@
import org.openejb.dispatch.VirtualOperation;
import org.openejb.entity.BusinessMethod;
import org.openejb.entity.EntityInstanceFactory;
-import org.openejb.entity.EntityInterceptorBuilder;
+import org.openejb.entity.bmp.BMPEntityInterceptorBuilder;
import org.openejb.entity.HomeMethod;
import org.openejb.entity.bmp.BMPCreateMethod;
import org.openejb.entity.bmp.BMPFinderMethod;
@@ -78,15 +78,29 @@
import org.openejb.entity.dispatch.UnsetEntityContextOperation;
/**
- *
- *
* @version $Revision$ $Date$
*/
public class BMPContainerBuilder extends AbstractContainerBuilder {
+ private boolean reentrant;
+
+ public boolean isReentrant() {
+ return reentrant;
+ }
+
+ public void setReentrant(boolean reentrant) {
+ this.reentrant = reentrant;
+ }
+
protected int getEJBComponentType() {
return EJBComponentType.BMP_ENTITY;
}
+ protected InterceptorBuilder
initializeInterceptorBuilder(BMPEntityInterceptorBuilder interceptorBuilder,
InterfaceMethodSignature[] signatures, VirtualOperation[] vtable) {
+ super.initializeInterceptorBuilder(interceptorBuilder, signatures,
vtable);
+ interceptorBuilder.setReentrant(reentrant);
+ return interceptorBuilder;
+ }
+
protected Object buildIt(boolean buildContainer) throws Exception {
// get the bean class
ClassLoader classLoader = getClassLoader();
@@ -98,7 +112,7 @@
VirtualOperation[] vtable =
(VirtualOperation[])vopMap.values().toArray(new
VirtualOperation[vopMap.size()]);
// create and intitalize the interceptor moduleBuilder
- InterceptorBuilder interceptorBuilder =
initializeInterceptorBuilder(new EntityInterceptorBuilder(), signatures,
vtable);
+ InterceptorBuilder interceptorBuilder =
initializeInterceptorBuilder(new BMPEntityInterceptorBuilder(), signatures,
vtable);
// build the context factory
InstanceContextFactory contextFactory = new
BMPInstanceContextFactory(getContainerId(), beanClass,
getUnshareableResources(), getApplicationManagedSecurityResources());
1.12 +12 -2
openejb/modules/openejb-builder/src/java/org/openejb/deployment/CMPContainerBuilder.java
Index: CMPContainerBuilder.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/CMPContainerBuilder.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- CMPContainerBuilder.java 11 Feb 2005 22:30:25 -0000 1.11
+++ CMPContainerBuilder.java 16 Feb 2005 06:12:38 -0000 1.12
@@ -149,6 +149,7 @@
private GlobalSchema globalSchema;
private EJB ejb;
private TransactionManagerDelegate tm;
+ private boolean reentrant;
public boolean isCMP2() {
return cmp2;
@@ -193,10 +194,19 @@
public void setTransactionManagerDelegate(TransactionManagerDelegate tm)
{
this.tm = tm;
}
-
+
+ public boolean isReentrant() {
+ return reentrant;
+ }
+
+ public void setReentrant(boolean reentrant) {
+ this.reentrant = reentrant;
+ }
+
protected InterceptorBuilder
initializeInterceptorBuilder(CMPEntityInterceptorBuilder interceptorBuilder,
InterfaceMethodSignature[] signatures, VirtualOperation[] vtable) {
super.initializeInterceptorBuilder(interceptorBuilder, signatures,
vtable);
interceptorBuilder.setCacheFlushStrategyFactory(globalSchema.getCacheFlushStrategyFactorr());
+ interceptorBuilder.setReentrant(reentrant);
return interceptorBuilder;
}
1.17 +2 -1
openejb/modules/openejb-builder/src/java/org/openejb/deployment/CMPEntityBuilder.java
Index: CMPEntityBuilder.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/CMPEntityBuilder.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- CMPEntityBuilder.java 15 Feb 2005 03:24:06 -0000 1.16
+++ CMPEntityBuilder.java 16 Feb 2005 06:12:38 -0000 1.17
@@ -676,6 +676,7 @@
builder.setTransactionPolicySource(transactionPolicySource);
builder.setTransactedTimerName(earContext.getTransactedTimerName());
builder.setNonTransactedTimerName(earContext.getNonTransactedTimerName());
+ builder.setReentrant(entityBean.getReentrant().getBooleanValue());
Permissions toBeChecked = new Permissions();
ContainerSecurityBuilder containerSecurityBuilder =
getModuleBuilder().getSecurityBuilder();
1.11 +1 -0
openejb/modules/openejb-builder/src/java/org/openejb/deployment/EntityBuilder.java
Index: EntityBuilder.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/EntityBuilder.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- EntityBuilder.java 26 Jan 2005 23:28:01 -0000 1.10
+++ EntityBuilder.java 16 Feb 2005 06:12:38 -0000 1.11
@@ -121,6 +121,7 @@
builder.setTransactionPolicySource(transactionPolicySource);
builder.setTransactedTimerName(earContext.getTransactedTimerName());
builder.setNonTransactedTimerName(earContext.getNonTransactedTimerName());
+ builder.setReentrant(entityBean.getReentrant().getBooleanValue());
Permissions toBeChecked = new Permissions();
ContainerSecurityBuilder containerSecurityBuilder =
getModuleBuilder().getSecurityBuilder();