geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From djen...@apache.org
Subject svn commit: r159722 - geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/interceptor/TransactionContextBeforeAfter.java
Date Fri, 01 Apr 2005 19:42:55 GMT
Author: djencks
Date: Fri Apr  1 11:42:54 2005
New Revision: 159722

URL: http://svn.apache.org/viewcvs?view=rev&rev=159722
Log:
make the tcba more reliable

Modified:
    geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/interceptor/TransactionContextBeforeAfter.java

Modified: geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/interceptor/TransactionContextBeforeAfter.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/interceptor/TransactionContextBeforeAfter.java?view=diff&r1=159721&r2=159722
==============================================================================
--- geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/interceptor/TransactionContextBeforeAfter.java
(original)
+++ geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/interceptor/TransactionContextBeforeAfter.java
Fri Apr  1 11:42:54 2005
@@ -30,7 +30,7 @@
  * @version $Rev:  $ $Date:  $
  */
 public class TransactionContextBeforeAfter implements BeforeAfter {
-    
+
     private final BeforeAfter next;
     private final int oldTxIndex;
     private final int newTxIndex;
@@ -58,39 +58,42 @@
     }
 
     public void after(Object[] context, HttpRequest httpRequest, HttpResponse httpResponse)
{
-        if (next != null) {
-            next.after(context, httpRequest, httpResponse);
-        }
-        TransactionContext oldTransactionContext = (TransactionContext) context[oldTxIndex];
-        TransactionContext newTransactionContext = (TransactionContext) context[newTxIndex];
         try {
-            if (newTransactionContext != null) {
-                if (newTransactionContext != transactionContextManager.getContext()) {
-                    transactionContextManager.getContext().rollback();
-                    newTransactionContext.rollback();
-                    throw new RuntimeException("WRONG EXCEPTION! returned from servlet call
with wrong tx context");
-                }
-                newTransactionContext.commit();
-
-            } else {
-                if (oldTransactionContext != transactionContextManager.getContext()) {
-                    if (transactionContextManager.getContext() != null) {
+            if (next != null) {
+                next.after(context, httpRequest, httpResponse);
+            }
+        } finally {
+            TransactionContext oldTransactionContext = (TransactionContext) context[oldTxIndex];
+            TransactionContext newTransactionContext = (TransactionContext) context[newTxIndex];
+            try {
+                if (newTransactionContext != null) {
+                    if (newTransactionContext != transactionContextManager.getContext())
{
                         transactionContextManager.getContext().rollback();
+                        newTransactionContext.rollback();
+                        throw new RuntimeException("WRONG EXCEPTION! returned from servlet
call with wrong tx context");
+                    }
+                    newTransactionContext.commit();
+
+                } else {
+                    if (oldTransactionContext != transactionContextManager.getContext())
{
+                        if (transactionContextManager.getContext() != null) {
+                            transactionContextManager.getContext().rollback();
+                        }
+                        throw new RuntimeException("WRONG EXCEPTION! returned from servlet
call with wrong tx context");
                     }
-                    throw new RuntimeException("WRONG EXCEPTION! returned from servlet call
with wrong tx context");
                 }
+            } catch (SystemException e) {
+                throw new RuntimeException("WRONG EXCEPTION!", e);
+            } catch (HeuristicMixedException e) {
+                throw new RuntimeException("WRONG EXCEPTION!", e);
+            } catch (HeuristicRollbackException e) {
+                throw new RuntimeException("WRONG EXCEPTION!", e);
+            } catch (RollbackException e) {
+                throw new RuntimeException("WRONG EXCEPTION!", e);
+            } finally {
+                //this is redundant when we enter with an inheritable context and nothing
goes wrong.
+                transactionContextManager.setContext(oldTransactionContext);
             }
-        } catch (SystemException e) {
-            throw new RuntimeException("WRONG EXCEPTION!", e);
-        } catch (HeuristicMixedException e) {
-            throw new RuntimeException("WRONG EXCEPTION!", e);
-        } catch (HeuristicRollbackException e) {
-            throw new RuntimeException("WRONG EXCEPTION!", e);
-        } catch (RollbackException e) {
-            throw new RuntimeException("WRONG EXCEPTION!", e);
-        } finally {
-            //this is redundant when we enter with an inheritable context and nothing goes
wrong.
-            transactionContextManager.setContext(oldTransactionContext);
         }
     }
 



Mime
View raw message