[jboss-cvs] jboss-seam/src/ioc/org/jboss/seam/ioc/spring ...

Michael Youngstrom youngm at gmail.com
Fri Jul 6 13:39:03 EDT 2007


  User: myoungstrom
  Date: 07/07/06 13:39:03

  Modified:    src/ioc/org/jboss/seam/ioc/spring  SpringTransaction.java
  Log:
  Fixed dangling transaction bug.
  
  Revision  Changes    Path
  1.2       +17 -15    jboss-seam/src/ioc/org/jboss/seam/ioc/spring/SpringTransaction.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: SpringTransaction.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/ioc/org/jboss/seam/ioc/spring/SpringTransaction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- SpringTransaction.java	3 Jul 2007 20:36:29 -0000	1.1
  +++ SpringTransaction.java	6 Jul 2007 17:39:03 -0000	1.2
  @@ -26,7 +26,7 @@
   import org.springframework.transaction.TransactionSystemException;
   import org.springframework.transaction.UnexpectedRollbackException;
   import org.springframework.transaction.support.DefaultTransactionDefinition;
  -import org.springframework.transaction.support.TransactionSynchronization;
  +import org.springframework.transaction.support.TransactionSynchronizationAdapter;
   import org.springframework.transaction.support.TransactionSynchronizationManager;
   
   @Name("org.jboss.seam.transaction.transaction")
  @@ -97,9 +97,14 @@
            try {
               if(currentTransaction == null) {
                  transaction = platformTransactionManager.getValue().getTransaction(definition);
  +               if(transaction.isNewTransaction()) {
  +                  return Status.STATUS_COMMITTED;
  +               }
               } else {
                  transaction = currentTransaction;
               }
  +            //If SynchronizationManager things it has an active transaction but our transaction is a new one
  +            //then we must be in the middle of committing
               if(transaction.isCompleted()) {
                  if(transaction.isRollbackOnly()) {
                     return Status.STATUS_ROLLEDBACK;
  @@ -113,14 +118,10 @@
               }
            } finally {
               if(currentTransaction == null) {
  -               if(transaction.isNewTransaction()) {
  -                  throw new IllegalStateException("Our transactions are in a bad state");
  -               } else {
                     platformTransactionManager.getValue().commit(transaction);
                  }
               }
            }
  -      }
         return Status.STATUS_NO_TRANSACTION;
      }
   
  @@ -209,8 +210,15 @@
      }
      
      
  -   public class JtaSpringSynchronizationAdapter implements TransactionSynchronization
  +   public class JtaSpringSynchronizationAdapter extends TransactionSynchronizationAdapter
  +   {
  +      
  +      @Override
  +      public int getOrder()
      {
  +         return SeamLifecycleUtils.SEAM_LIFECYCLE_SYNCHRONIZATION_ORDER-1;
  +      }
  +      
         private final Synchronization sync;
   
         public JtaSpringSynchronizationAdapter(Synchronization sync)
  @@ -218,22 +226,16 @@
            this.sync = sync;
         }
   
  -      public void afterCommit() { }
  -
  +      @Override
         public void afterCompletion(int status)
         {
            sync.afterCompletion(status);
         }
   
  -      public void beforeCommit(boolean arg0) { }
  -
  +      @Override
         public void beforeCompletion()
         {
            sync.beforeCompletion();
         }
  -
  -      public void resume() { }
  -
  -      public void suspend() { }
      }
   }
  
  
  



More information about the jboss-cvs-commits mailing list