dain        2005/02/16 01:12:38

  Modified:    modules/core/src/java/org/openejb/entity/cmp
                        CMPEntityInterceptorBuilder.java
  Log:

  Added reentrancy detection, and throw exception when reentering a 
non-reentrant entity
  
  Revision  Changes    Path
  1.3       +13 -4     
openejb/modules/core/src/java/org/openejb/entity/cmp/CMPEntityInterceptorBuilder.java
  
  Index: CMPEntityInterceptorBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/entity/cmp/CMPEntityInterceptorBuilder.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CMPEntityInterceptorBuilder.java  12 Feb 2005 18:44:00 -0000      1.2
  +++ CMPEntityInterceptorBuilder.java  16 Feb 2005 06:12:38 -0000      1.3
  @@ -70,7 +70,8 @@
    */
   public class CMPEntityInterceptorBuilder extends AbstractInterceptorBuilder {
       private CacheFlushStrategyFactory strategyFactory;
  -    
  +    private boolean reentrant;
  +
       public CacheFlushStrategyFactory getCacheFlushStrategyFactory() {
           return strategyFactory;
       }
  @@ -78,7 +79,15 @@
       public void setCacheFlushStrategyFactory(CacheFlushStrategyFactory 
strategyFactory) {
           this.strategyFactory = strategyFactory;
       }
  -    
  +
  +    public boolean isReentrant() {
  +        return reentrant;
  +    }
  +
  +    public void setReentrant(boolean reentrant) {
  +        this.reentrant = reentrant;
  +    }
  +
       public TwoChains buildInterceptorChains() {
           if (transactionContextManager == null) {
               throw new IllegalStateException("Transaction context manager 
must be set before building the interceptor chain");
  @@ -113,7 +122,7 @@
           if (trackedConnectionAssociator != null) {
               firstInterceptor = new 
ConnectionTrackingInterceptor(firstInterceptor, trackedConnectionAssociator);
           }
  -        firstInterceptor = new EntityInstanceInterceptor(firstInterceptor, 
containerId, instancePool);
  +        firstInterceptor = new EntityInstanceInterceptor(firstInterceptor, 
containerId, instancePool, reentrant);
           firstInterceptor = new InTxCacheInterceptor(firstInterceptor, 
strategyFactory);
           firstInterceptor = new 
TransactionContextInterceptor(firstInterceptor, transactionContextManager, 
transactionPolicyManager);
           firstInterceptor = new SystemExceptionInterceptor(firstInterceptor, 
ejbName);
  
  
  

Reply via email to