[jbosscache-commits] JBoss Cache SVN: r7579 - core/trunk/src/main/java/org/jboss/cache/transaction.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Fri Jan 23 06:18:14 EST 2009
Author: manik.surtani at jboss.com
Date: 2009-01-23 06:18:14 -0500 (Fri, 23 Jan 2009)
New Revision: 7579
Modified:
core/trunk/src/main/java/org/jboss/cache/transaction/DummyBaseTransactionManager.java
Log:
JBCACHE-1469: DummyBaseTransactionManager behaves incorrectly with Status.STATUS_MARKED_ROLLBACK
Modified: core/trunk/src/main/java/org/jboss/cache/transaction/DummyBaseTransactionManager.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/transaction/DummyBaseTransactionManager.java 2009-01-23 09:00:21 UTC (rev 7578)
+++ core/trunk/src/main/java/org/jboss/cache/transaction/DummyBaseTransactionManager.java 2009-01-23 11:18:14 UTC (rev 7579)
@@ -39,7 +39,7 @@
*/
public class DummyBaseTransactionManager implements TransactionManager, java.io.Serializable
{
- static ThreadLocal<Transaction> thread_local = new ThreadLocal<Transaction>();
+ static ThreadLocal<DummyTransaction> thread_local = new ThreadLocal<DummyTransaction>();
private static final long serialVersionUID = -6716097342564237376l;
/**
@@ -57,8 +57,10 @@
{
Transaction currentTx;
if ((currentTx = getTransaction()) != null)
+ {
throw new NotSupportedException(Thread.currentThread() +
" is already associated with a transaction (" + currentTx + ")");
+ }
DummyTransaction tx = new DummyTransaction(this);
setTransaction(tx);
}
@@ -90,13 +92,22 @@
IllegalStateException, SystemException
{
int status;
- Transaction tx = getTransaction();
+ DummyTransaction tx = getTransaction();
if (tx == null)
+ {
throw new IllegalStateException("thread not associated with transaction");
+ }
status = tx.getStatus();
if (status == Status.STATUS_MARKED_ROLLBACK)
- throw new RollbackException();
- tx.commit();
+ {
+ tx.setStatus(Status.STATUS_ROLLEDBACK);
+ rollback();
+ throw new RollbackException("Transaction status is Status.STATUS_MARKED_ROLLBACK");
+ }
+ else
+ {
+ tx.commit();
+ }
// Disassociate tx from thread.
setTransaction(null);
@@ -121,7 +132,9 @@
{
Transaction tx = getTransaction();
if (tx == null)
+ {
throw new IllegalStateException("no transaction associated with thread");
+ }
tx.rollback();
// Disassociate tx from thread.
@@ -145,7 +158,9 @@
{
Transaction tx = getTransaction();
if (tx == null)
+ {
throw new IllegalStateException("no transaction associated with calling thread");
+ }
tx.setRollbackOnly();
}
@@ -176,7 +191,7 @@
* If the transaction service fails in an
* unexpected way.
*/
- public Transaction getTransaction() throws SystemException
+ public DummyTransaction getTransaction() throws SystemException
{
return thread_local.get();
}
@@ -243,7 +258,7 @@
*/
public void setTransaction(Transaction tx)
{
- thread_local.set(tx);
+ thread_local.set((DummyTransaction) tx);
}
}
More information about the jbosscache-commits
mailing list