[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