Transaction.rollback method also calls beforeCompletion - GERONIMO-4449, pull from branch 2.1

git-svn-id: https://svn.apache.org/repos/asf/geronimo/components/txmanager/trunk@725403 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java b/geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java
index 4c27359..d72c8fa 100644
--- a/geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java
+++ b/geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/TransactionImpl.java
@@ -470,7 +470,6 @@
             rms = resourceManagers;
         }
 
-        beforeCompletion();
         endResources();
         try {
             rollbackResources(rms);
diff --git a/geronimo-transaction/src/test/java/org/apache/geronimo/transaction/manager/TestTransactionManager.java b/geronimo-transaction/src/test/java/org/apache/geronimo/transaction/manager/TestTransactionManager.java
index 78c91f3..558b183 100644
--- a/geronimo-transaction/src/test/java/org/apache/geronimo/transaction/manager/TestTransactionManager.java
+++ b/geronimo-transaction/src/test/java/org/apache/geronimo/transaction/manager/TestTransactionManager.java
@@ -18,7 +18,6 @@
 package org.apache.geronimo.transaction.manager;
 
 import javax.transaction.Status;
-import javax.transaction.InvalidTransactionException;
 import javax.transaction.Transaction;
 import javax.transaction.TransactionManager;
 import javax.transaction.xa.XAResource;
diff --git a/geronimo-transaction/src/test/java/org/apache/geronimo/transaction/manager/TransactionSynchronizationRegistryTest.java b/geronimo-transaction/src/test/java/org/apache/geronimo/transaction/manager/TransactionSynchronizationRegistryTest.java
index f487887..d1e6345 100644
--- a/geronimo-transaction/src/test/java/org/apache/geronimo/transaction/manager/TransactionSynchronizationRegistryTest.java
+++ b/geronimo-transaction/src/test/java/org/apache/geronimo/transaction/manager/TransactionSynchronizationRegistryTest.java
@@ -78,20 +78,25 @@
         assertTrue("interposedSync afterCompletion was not called", interposedSync.getAfterCount() != -1);
     }
 
+    private void checkInterposedSyncCalledOnRollback() {
+        assertTrue("interposedSync afterCompletion was not called", interposedSync.getAfterCount() != -1);
+    }
+    
     public void testInterposedSynchIsCalledOnRollback() throws Exception {
         setUpInterposedSync();
         tm.rollback();
-        checkInterposedSyncCalled();
+        checkInterposedSyncCalledOnRollback();
     }
     
-    /*public void testNormalSynchIsNotCalledOnRollback() throws Exception {
+    // check normal synch before completion is not called on rollback
+    public void testNormalSynchBeforeCompletion() throws Exception {
     	normalSync = new CountingSync();
     	tm.begin();
     	tm.getTransaction().registerSynchronization(normalSync);
         tm.rollback();
         assertFalse(normalSync.beforeCompletionCalled());
         assertTrue(normalSync.afterCompletionCalled());
-    }*/
+    }
 
     public void testInterposedSynchIsCalledOnMarkRollback() throws Exception {
         setUpInterposedSync();
@@ -126,11 +131,16 @@
         assertTrue("interposedSync beforeCompletion was not called after normalSync beforeCompletion", interposedSync.getBeforeCount() > normalSync.getBeforeCount());
         assertTrue("interposedSync afterCompletion was not called before normalSync beforeCompletion", interposedSync.getAfterCount() < normalSync.getAfterCount());
     }
+    
+    private void checkSyncCallOrderOnRollback() {
+        checkInterposedSyncCalledOnRollback();
+        assertTrue("interposedSync afterCompletion was not called before normalSync beforeCompletion", interposedSync.getAfterCount() < normalSync.getAfterCount());
+    }
 
     public void testSynchCallOrderOnRollback() throws Exception {
         setUpSyncs();
         tm.rollback();
-        checkSyncCallOrder();
+        checkSyncCallOrderOnRollback();
     }
 
     public void testSynchCallOrderOnMarkRollback() throws Exception {
@@ -163,12 +173,12 @@
         private boolean afterCalled = false;
 
         public void beforeCompletion() {
-        	beforeCalled = true;
+            beforeCalled = true;
             beforeCount = beforeCounter++;
         }
 
         public void afterCompletion(int i) {
-        	afterCalled = true;
+            afterCalled = true;
             afterCount = afterCounter++;
         }