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

Gavin King gavin.king at jboss.com
Sat Jul 21 01:41:37 EDT 2007


  User: gavin   
  Date: 07/07/21 01:41:37

  Modified:    src/main/org/jboss/seam/transaction      
                        CMTTransaction.java EjbSynchronizations.java
                        EntityTransaction.java SeSynchronizations.java
                        Synchronizations.java UTTransaction.java
  Log:
  JBSEAM-1604
  
  Revision  Changes    Path
  1.6       +4 -4      jboss-seam/src/main/org/jboss/seam/transaction/CMTTransaction.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: CMTTransaction.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/CMTTransaction.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -b -r1.5 -r1.6
  --- CMTTransaction.java	19 Jul 2007 10:45:44 -0000	1.5
  +++ CMTTransaction.java	21 Jul 2007 05:41:37 -0000	1.6
  @@ -38,7 +38,7 @@
      public void begin() throws NotSupportedException, SystemException
      {
         ejbContext.getUserTransaction().begin();
  -      getSynchronizations().afterBegin();
  +      getSynchronizations().afterTransactionBegin();
      }
   
      public void commit() throws RollbackException, HeuristicMixedException,
  @@ -47,7 +47,7 @@
         UserTransaction userTransaction = ejbContext.getUserTransaction();
         boolean success = false;
         Synchronizations synchronizations = getSynchronizations();
  -      synchronizations.beforeCommit();
  +      synchronizations.beforeTransactionCommit();
         try
         {
            userTransaction.commit();
  @@ -55,7 +55,7 @@
         }
         finally
         {
  -         synchronizations.afterCommit(success);
  +         synchronizations.afterTransactionCommit(success);
         }
      }
   
  @@ -68,7 +68,7 @@
         }
         finally
         {
  -         getSynchronizations().afterRollback();
  +         getSynchronizations().afterTransactionRollback();
         }
      }
   
  
  
  
  1.3       +30 -4     jboss-seam/src/main/org/jboss/seam/transaction/EjbSynchronizations.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: EjbSynchronizations.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/EjbSynchronizations.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- EjbSynchronizations.java	20 Jul 2007 07:40:32 -0000	1.2
  +++ EjbSynchronizations.java	21 Jul 2007 05:41:37 -0000	1.3
  @@ -18,6 +18,8 @@
   import org.jboss.seam.annotations.Name;
   import org.jboss.seam.annotations.Scope;
   import org.jboss.seam.annotations.intercept.BypassInterceptors;
  +import org.jboss.seam.log.LogProvider;
  +import org.jboss.seam.log.Logging;
   
   /**
    * Receives JTA transaction completion notifications from 
  @@ -38,6 +40,8 @@
   @TransactionAttribute(TransactionAttributeType.SUPPORTS)
   public class EjbSynchronizations implements LocalEjbSynchronizations, SessionSynchronization
   {
  +   private static final LogProvider log = Logging.getLogProvider(EjbSynchronizations.class);
  +   
      //maintain two lists to work around a bug in JBoss EJB3 where a new SessionSynchronization
      //gets registered each time the bean is called
      protected LinkedList<SynchronizationRegistry> synchronizations = new LinkedList<SynchronizationRegistry>();
  @@ -45,11 +49,13 @@
      
      public void afterBegin()
      {
  +      log.debug("afterBegin");
         synchronizations.addLast( new SynchronizationRegistry() );
      }
      
      public void beforeCompletion() throws EJBException, RemoteException
      {
  +      log.debug("beforeCompletion");
         SynchronizationRegistry sync = synchronizations.removeLast();
         sync.beforeTransactionCompletion();
         committing.addLast(sync);
  @@ -57,25 +63,45 @@
      
      public void afterCompletion(boolean success) throws EJBException, RemoteException
      {
  +      log.debug("afterCompletion");
  +      if ( committing.isEmpty() )
  +      {
  +         if (success)
  +         {
  +            throw new IllegalStateException("beforeCompletion was never called");
  +         }
  +         else
  +         {
  +            synchronizations.removeLast().afterTransactionCompletion(false);
  +         }
  +      }
  +      else
  +      {
         committing.removeFirst().afterTransactionCompletion(success);
      }
  +   }
      
      public boolean isAwareOfContainerTransactions()
      {
         return true;
      }
      
  -   public void afterCommit(boolean success)
  +   public void afterTransactionBegin()
  +   {
  +      //noop, let JTA notify us
  +   }
  +   
  +   public void afterTransactionCommit(boolean success)
      {
         //noop, let JTA notify us
      }
      
  -   public void afterRollback()
  +   public void afterTransactionRollback()
      {
         //noop, let JTA notify us
      }
      
  -   public void beforeCommit()
  +   public void beforeTransactionCommit()
      {
         //noop, let JTA notify us
      }
  
  
  
  1.9       +4 -4      jboss-seam/src/main/org/jboss/seam/transaction/EntityTransaction.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: EntityTransaction.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/EntityTransaction.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -b -r1.8 -r1.9
  --- EntityTransaction.java	19 Jul 2007 10:45:44 -0000	1.8
  +++ EntityTransaction.java	21 Jul 2007 05:41:37 -0000	1.9
  @@ -79,7 +79,7 @@
         try
         {
            getDelegate().begin();
  -         getSynchronizations().afterBegin();
  +         getSynchronizations().afterTransactionBegin();
         }
         catch (RuntimeException re)
         {
  @@ -105,14 +105,14 @@
            }
            else
            {
  -            getSynchronizations().beforeCommit();
  +            getSynchronizations().beforeTransactionCommit();
               delegate.commit();
               success = true;
            }
         }
         finally
         {
  -         getSynchronizations().afterCommit(success);
  +         getSynchronizations().afterTransactionCommit(success);
         }
      }
   
  @@ -129,7 +129,7 @@
         }
         finally
         {
  -         getSynchronizations().afterRollback();
  +         getSynchronizations().afterTransactionRollback();
         }
      }
   
  
  
  
  1.2       +4 -4      jboss-seam/src/main/org/jboss/seam/transaction/SeSynchronizations.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: SeSynchronizations.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/SeSynchronizations.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- SeSynchronizations.java	19 Jul 2007 10:45:44 -0000	1.1
  +++ SeSynchronizations.java	21 Jul 2007 05:41:37 -0000	1.2
  @@ -30,22 +30,22 @@
   {
      protected Stack<SynchronizationRegistry> synchronizations = new Stack<SynchronizationRegistry>();
      
  -   public void afterBegin()
  +   public void afterTransactionBegin()
      {
         synchronizations.push( new SynchronizationRegistry() );
      }
      
  -   public void afterCommit(boolean success)
  +   public void afterTransactionCommit(boolean success)
      {
         synchronizations.pop().afterTransactionCompletion(success);
      }
      
  -   public void afterRollback()
  +   public void afterTransactionRollback()
      {
         synchronizations.pop().afterTransactionCompletion(false);
      }
      
  -   public void beforeCommit()
  +   public void beforeTransactionCommit()
      {
         synchronizations.peek().beforeTransactionCompletion();
      }
  
  
  
  1.2       +4 -4      jboss-seam/src/main/org/jboss/seam/transaction/Synchronizations.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Synchronizations.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/Synchronizations.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- Synchronizations.java	19 Jul 2007 10:45:44 -0000	1.1
  +++ Synchronizations.java	21 Jul 2007 05:41:37 -0000	1.2
  @@ -10,10 +10,10 @@
    */
   public interface Synchronizations
   {
  -   public void afterBegin();
  -   public void afterCommit(boolean success);
  -   public void afterRollback();
  -   public void beforeCommit();
  +   public void afterTransactionBegin();
  +   public void afterTransactionCommit(boolean success);
  +   public void afterTransactionRollback();
  +   public void beforeTransactionCommit();
      public void registerSynchronization(Synchronization sync);
      public boolean isAwareOfContainerTransactions();
   }
  \ No newline at end of file
  
  
  
  1.8       +11 -4     jboss-seam/src/main/org/jboss/seam/transaction/UTTransaction.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: UTTransaction.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/transaction/UTTransaction.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -b -r1.7 -r1.8
  --- UTTransaction.java	19 Jul 2007 10:45:44 -0000	1.7
  +++ UTTransaction.java	21 Jul 2007 05:41:37 -0000	1.8
  @@ -7,6 +7,9 @@
   import javax.transaction.Synchronization;
   import javax.transaction.SystemException;
   
  +import org.jboss.seam.log.LogProvider;
  +import org.jboss.seam.log.Logging;
  +
   /**
    * Wraps JTA transaction management in a Seam UserTransaction 
    * interface.
  @@ -17,6 +20,7 @@
    */
   public class UTTransaction extends AbstractUserTransaction
   {
  +   private static final LogProvider log = Logging.getLogProvider(UTTransaction.class);
      
      private final javax.transaction.UserTransaction delegate;
   
  @@ -31,16 +35,18 @@
      
      public void begin() throws NotSupportedException, SystemException
      {
  +      log.debug("beginning JTA transaction");
         delegate.begin();
  -      getSynchronizations().afterBegin();
  +      getSynchronizations().afterTransactionBegin();
      }
   
      public void commit() throws RollbackException, HeuristicMixedException,
               HeuristicRollbackException, SecurityException, IllegalStateException, SystemException
      {
  +      log.debug("committing JTA transaction");
         boolean success = false;
         Synchronizations synchronizations = getSynchronizations();
  -      synchronizations.beforeCommit();
  +      synchronizations.beforeTransactionCommit();
         try
         {
            delegate.commit();
  @@ -48,19 +54,20 @@
         }
         finally
         {
  -         synchronizations.afterCommit(success);
  +         synchronizations.afterTransactionCommit(success);
         }
      }
   
      public void rollback() throws IllegalStateException, SecurityException, SystemException
      {
  +      log.debug("rolling back JTA transaction");
         try
         {
            delegate.rollback();
         }
         finally
         {
  -         getSynchronizations().afterRollback();
  +         getSynchronizations().afterTransactionRollback();
         }
      }
   
  
  
  



More information about the jboss-cvs-commits mailing list