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

Reply via email to