Author: dain
Date: Tue Feb 15 16:02:56 2005
New Revision: 153979

URL: http://svn.apache.org/viewcvs?view=rev&rev=153979
Log:
Changed transaction context commit to return a boolean indicating if the 
transation actually committed.
UserTransaction uses the boolean flag to determine if the tx rolledback and if 
so, throws a RolledbackException

Modified:
    
geronimo/trunk/modules/client/src/java/org/apache/geronimo/client/AppClientContainer.java
    
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/OnlineUserTransaction.java
    
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/InheritableTransactionContext.java
    
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/TransactionContext.java
    
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/UnspecifiedTransactionContext.java

Modified: 
geronimo/trunk/modules/client/src/java/org/apache/geronimo/client/AppClientContainer.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/client/src/java/org/apache/geronimo/client/AppClientContainer.java?view=diff&r1=153978&r2=153979
==============================================================================
--- 
geronimo/trunk/modules/client/src/java/org/apache/geronimo/client/AppClientContainer.java
 (original)
+++ 
geronimo/trunk/modules/client/src/java/org/apache/geronimo/client/AppClientContainer.java
 Tue Feb 15 16:02:56 2005
@@ -24,6 +24,7 @@
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
 import org.apache.geronimo.transaction.context.TransactionContext;
 import org.apache.geronimo.transaction.context.TransactionContextManager;
+import org.apache.geronimo.transaction.context.UnspecifiedTransactionContext;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 
@@ -79,7 +80,7 @@
         ClassLoader contextClassLoader = thread.getContextClassLoader();
         thread.setContextClassLoader(classLoader);
         TransactionContext oldTransactionContext = 
transactionContextManager.getContext();
-        TransactionContext currentTransactionContext = null;
+        UnspecifiedTransactionContext currentTransactionContext = null;
         try {
             jndiContext.startClient(appClientModuleName, kernel, classLoader);
             currentTransactionContext = 
transactionContextManager.newUnspecifiedTransactionContext();

Modified: 
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/OnlineUserTransaction.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/OnlineUserTransaction.java?view=diff&r1=153978&r2=153979
==============================================================================
--- 
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/OnlineUserTransaction.java
 (original)
+++ 
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/OnlineUserTransaction.java
 Tue Feb 15 16:02:56 2005
@@ -64,7 +64,9 @@
         }
         BeanTransactionContext beanContext = (BeanTransactionContext) ctx;
         try {
-            beanContext.commit();
+            if (!beanContext.commit()) {
+                throw new RollbackException();
+            }
         } finally {
             UnspecifiedTransactionContext oldContext = 
beanContext.getOldContext();
             transactionContextManager.setContext(oldContext);

Modified: 
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/InheritableTransactionContext.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/InheritableTransactionContext.java?view=diff&r1=153978&r2=153979
==============================================================================
--- 
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/InheritableTransactionContext.java
 (original)
+++ 
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/InheritableTransactionContext.java
 Tue Feb 15 16:02:56 2005
@@ -99,19 +99,25 @@
         threadAssociated = true;
     }
 
-    public void commit() throws HeuristicMixedException, 
HeuristicRollbackException, SystemException, RollbackException {
+    public boolean commit() throws HeuristicMixedException, 
HeuristicRollbackException, SystemException, RollbackException {
         boolean wasCommitted = false;
         try {
-            checkRolledback();
+            if (isRolledback()) {
+                return false;
+            }
 
             flushState();
 
-            checkRolledback();
+            if (isRolledback()) {
+                return false;
+            }
 
             // todo we need to flush anyone enrolled during before and then 
call before on any flushed...
             beforeCommit();
 
-            checkRolledback();
+            if (isRolledback()) {
+                return false;
+            }
 
             txnManager.commit();
             wasCommitted = true;
@@ -127,9 +133,10 @@
                 transaction = null;
             }
         }
+        return wasCommitted;
     }
 
-    private void checkRolledback() throws SystemException, RollbackException {
+    private boolean isRolledback() throws SystemException {
         int status;
         try {
             status = transaction.getStatus();
@@ -141,12 +148,13 @@
         if (status == Status.STATUS_MARKED_ROLLBACK) {
             // we need to rollback
             txnManager.rollback();
-            throw new RollbackException();
+            return true;
         } else if (status == Status.STATUS_ROLLEDBACK ||
                 status == Status.STATUS_ROLLING_BACK) {
             // already rolled back
-            throw new RollbackException();
+            return true;
         }
+        return false;
     }
 
     private void rollbackAndThrow(String message, Throwable throwable) throws 
HeuristicMixedException, HeuristicRollbackException, SystemException, 
RollbackException {

Modified: 
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/TransactionContext.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/TransactionContext.java?view=diff&r1=153978&r2=153979
==============================================================================
--- 
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/TransactionContext.java
 (original)
+++ 
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/TransactionContext.java
 Tue Feb 15 16:02:56 2005
@@ -59,13 +59,11 @@
     private Map managedConnections;
     private InTxCache inTxCache;
 
-//    public abstract void begin() throws SystemException, 
NotSupportedException;
-
     public abstract void suspend() throws SystemException;
 
     public abstract void resume() throws SystemException, 
InvalidTransactionException;
 
-    public abstract void commit() throws HeuristicMixedException, 
HeuristicRollbackException, RollbackException, SystemException;
+    public abstract boolean commit() throws HeuristicMixedException, 
HeuristicRollbackException, RollbackException, SystemException;
 
     public abstract void rollback() throws SystemException;
 

Modified: 
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/UnspecifiedTransactionContext.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/UnspecifiedTransactionContext.java?view=diff&r1=153978&r2=153979
==============================================================================
--- 
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/UnspecifiedTransactionContext.java
 (original)
+++ 
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/transaction/context/UnspecifiedTransactionContext.java
 Tue Feb 15 16:02:56 2005
@@ -18,7 +18,6 @@
 package org.apache.geronimo.transaction.context;
 
 import javax.transaction.Transaction;
-import javax.transaction.SystemException;
 
 import org.apache.geronimo.transaction.ConnectionReleaser;
 
@@ -36,7 +35,7 @@
     public void resume() {
     }
 
-    public void commit() {
+    public boolean commit() {
         try {
             flushState();
         } catch (Error e) {
@@ -46,6 +45,7 @@
         } catch (Throwable e) {
             log.error("Unable to flush state, continuing", e);
         }
+        return true;
     }
 
     public void rollback() {


Reply via email to