[jboss-cvs] jboss-seam/src/main/org/jboss/seam/interceptors ...

Gavin King gavin.king at jboss.com
Sun Oct 15 12:30:45 EDT 2006


  User: gavin   
  Date: 06/10/15 12:30:45

  Modified:    src/main/org/jboss/seam/interceptors 
                        TransactionInterceptor.java
  Log:
  fix JBSEAM-416
  
  Revision  Changes    Path
  1.8       +18 -33    jboss-seam/src/main/org/jboss/seam/interceptors/TransactionInterceptor.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: TransactionInterceptor.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/interceptors/TransactionInterceptor.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -b -r1.7 -r1.8
  --- TransactionInterceptor.java	10 Oct 2006 06:43:16 -0000	1.7
  +++ TransactionInterceptor.java	15 Oct 2006 16:30:45 -0000	1.8
  @@ -4,56 +4,41 @@
   
   import javax.interceptor.AroundInvoke;
   import javax.interceptor.InvocationContext;
  -import javax.transaction.UserTransaction;
   
  -import org.apache.commons.logging.Log;
  -import org.apache.commons.logging.LogFactory;
   import org.jboss.seam.annotations.Interceptor;
   import org.jboss.seam.annotations.Transactional;
  -import org.jboss.seam.util.Transactions;
  +import org.jboss.seam.util.Work;
   
   @Interceptor(stateless=true,
                around={RollbackInterceptor.class, BusinessProcessInterceptor.class, ConversationInterceptor.class})
   public class TransactionInterceptor extends AbstractInterceptor
   {
  -   private static final Log log = LogFactory.getLog(TransactionInterceptor.class);
      
      @AroundInvoke
  -   public Object doInTransactionIfNecessary(InvocationContext invocation) throws Exception
  +   public Object doInTransactionIfNecessary(final InvocationContext invocation) throws Exception
      {
  -      boolean begin = ( isTransactional( invocation.getMethod() ) || isTransactional( getComponent().getBeanClass() ) ) &&
  -            !Transactions.isTransactionActiveOrMarkedRollback();
  -      UserTransaction userTransaction = begin ? Transactions.getUserTransaction() : null;
  -
  -      if (begin) 
  -      {
  -         log.debug("beginning transaction");
  -         userTransaction.begin();
  -      }
  -      try
  +      return new Work()
         {
  -         Object result = invocation.proceed();
  -         if (begin) 
  +
  +         @Override
  +         protected Object work() throws Exception
            {
  -            log.debug("committing transaction");
  -            userTransaction.commit();
  -         }
  -         return result;
  +            return invocation.proceed();
         }
  -      catch (Exception e)
  -      {
  -         if (begin) 
  +
  +         @Override
  +         protected boolean isTransactional()
            {
  -            log.debug("rolling back transaction");
  -            userTransaction.rollback();
  -         }
  -         throw e;
  -      }
  +            return isTransactional( invocation.getMethod() ) || 
  +                  isTransactional( getComponent().getBeanClass() );
      }
   
  -   private static boolean isTransactional(AnnotatedElement element)
  +         private boolean isTransactional(AnnotatedElement element)
      {
         return element.isAnnotationPresent(Transactional.class);
      }
   
  +      }.workInTransaction();      
  +   }
  +
   }
  
  
  



More information about the jboss-cvs-commits mailing list