You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2004/11/02 23:20:53 UTC

svn commit: rev 56427 - in geronimo/trunk/modules/transaction/src: java/org/apache/geronimo/transaction test/org/apache/geronimo/transaction/context

Author: djencks
Date: Tue Nov  2 14:20:51 2004
New Revision: 56427

Modified:
   geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/TransactionManagerProxy.java
   geronimo/trunk/modules/transaction/src/test/org/apache/geronimo/transaction/context/TransactionContextManagerTest.java
Log:
Need to propagate the suspend/resume calls to the underlying tx manager for RequiresNew ejb calls to work.  Also need to end all txs in tests to avoid later InterruptedExceptions later in the build

Modified: geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/TransactionManagerProxy.java
==============================================================================
--- geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/TransactionManagerProxy.java	(original)
+++ geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/TransactionManagerProxy.java	Tue Nov  2 14:20:51 2004
@@ -62,7 +62,6 @@
 
     private final ExtendedTransactionManager delegate;
     private final XidImporter importer;
-    private final ThreadLocal threadTx = new ThreadLocal();
     private final Recovery recovery;
     private final ReferenceCollection resourceManagers;
     private List recoveryErrors = new ArrayList();
@@ -151,7 +150,6 @@
 
     public Transaction begin(long transactionTimeoutMilliseconds) throws NotSupportedException, SystemException {
         Transaction tx = delegate.begin(transactionTimeoutMilliseconds);
-        threadTx.set(tx);
         return tx;
     }
 
@@ -165,52 +163,27 @@
     }
 
     public Transaction getTransaction() throws SystemException {
-        return (Transaction) threadTx.get();
+        return delegate.getTransaction();
     }
 
     public Transaction suspend() throws SystemException {
-        Transaction tx = getTransaction();
-        threadTx.set(null);
-        return tx;
+        return delegate.suspend();
     }
 
     public void resume(Transaction tx) throws IllegalStateException, InvalidTransactionException, SystemException {
-        if (threadTx.get() != null) {
-            throw new IllegalStateException("Transaction already associated with current thread");
-        }
-        threadTx.set(tx);
+        delegate.resume(tx);
     }
 
     public void commit() throws HeuristicMixedException, HeuristicRollbackException, IllegalStateException, RollbackException, SecurityException, SystemException {
-        Transaction tx = getTransaction();
-        if (tx == null) {
-            throw new IllegalStateException("No transaction associated with current thread");
-        }
-        try {
-            tx.commit();
-        } finally {
-            threadTx.set(null);
-        }
+        delegate.commit();
     }
 
     public void rollback() throws IllegalStateException, SecurityException, SystemException {
-        Transaction tx = getTransaction();
-        if (tx == null) {
-            throw new IllegalStateException("No transaction associated with current thread");
-        }
-        try {
-            tx.rollback();
-        } finally {
-            threadTx.set(null);
-        }
+        delegate.rollback();
     }
 
     public void setRollbackOnly() throws IllegalStateException, SystemException {
-        Transaction tx = getTransaction();
-        if (tx == null) {
-            throw new IllegalStateException("No transaction associated with current thread");
-        }
-        tx.setRollbackOnly();
+        delegate.setRollbackOnly();
     }
 
 

Modified: geronimo/trunk/modules/transaction/src/test/org/apache/geronimo/transaction/context/TransactionContextManagerTest.java
==============================================================================
--- geronimo/trunk/modules/transaction/src/test/org/apache/geronimo/transaction/context/TransactionContextManagerTest.java	(original)
+++ geronimo/trunk/modules/transaction/src/test/org/apache/geronimo/transaction/context/TransactionContextManagerTest.java	Tue Nov  2 14:20:51 2004
@@ -38,7 +38,7 @@
     private XidFactory xidFactory = new XidFactoryImpl("geronimo.test.tm".getBytes());
 
     protected void setUp() throws Exception {
-        TransactionManagerProxy tm = new GeronimoTransactionManager(10, null, null);
+        TransactionManagerProxy tm = new GeronimoTransactionManager(1000, null, null);
         transactionContextManager = new TransactionContextManager(tm, tm, tm);
     }
 
@@ -48,9 +48,9 @@
 
     public void testImportedTxLifecycle() throws Exception {
         Xid xid = xidFactory.createXid();
-        transactionContextManager.begin(xid, 0);
+        transactionContextManager.begin(xid, 1000);
         transactionContextManager.end(xid);
-        transactionContextManager.begin(xid, 0);
+        transactionContextManager.begin(xid, 1000);
         transactionContextManager.end(xid);
         transactionContextManager.prepare(xid);
         transactionContextManager.commit(xid, false);
@@ -58,24 +58,30 @@
 
     public void testNoConcurrentWorkSameXid() throws Exception {
         Xid xid = xidFactory.createXid();
-        transactionContextManager.begin(xid, 0);
+        transactionContextManager.begin(xid, 1000);
         try {
-            transactionContextManager.begin(xid, 0);
+            transactionContextManager.begin(xid, 1000);
             fail("should not be able begin same xid twice");
         } catch (ImportedTransactionActiveException e) {
             //expected
+        } finally {
+            transactionContextManager.end(xid);
+            transactionContextManager.rollback(xid);
         }
     }
 
     public void testOnlyOneImportedTxAtATime() throws Exception {
         Xid xid1 = xidFactory.createXid();
         Xid xid2 = xidFactory.createXid();
-        transactionContextManager.begin(xid1, 0);
+        transactionContextManager.begin(xid1, 1000);
         try {
-            transactionContextManager.begin(xid2, 0);
+            transactionContextManager.begin(xid2, 1000);
             fail("should not be able to begin a 2nd tx without ending the first");
         } catch (IllegalStateException e) {
             //expected
+        } finally {
+            transactionContextManager.end(xid1);
+            transactionContextManager.rollback(xid1);
         }
     }
 }