Author: gatfora
Date: Mon Dec  4 03:15:04 2006
New Revision: 482136

URL: http://svn.apache.org/viewvc?view=rev&rev=482136
Log:
Applying patch for SANDESHA2-57

Modified:
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java?view=diff&rev=482136&r1=482135&r2=482136
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
 Mon Dec  4 03:15:04 2006
@@ -58,7 +58,7 @@
 
        private static final long serialVersionUID = -7187928423123306156L;
 
-       private static final Log log = 
LogFactory.getLog(SandeshaGlobalInHandler.class.getName());
+       private static final Log log = 
LogFactory.getLog(SandeshaGlobalInHandler.class);
        
        public InvocationResponse invoke(MessageContext msgContext) throws 
AxisFault {
 
@@ -80,31 +80,8 @@
                        return returnValue; // Reinjected messages are not 
processed by Sandesha2 inflow
                                                                                
                        // handlers
 
-               StorageManager storageManager = null;
-               try {
-                       storageManager = SandeshaUtil
-                                       
.getSandeshaStorageManager(configContext, configContext.getAxisConfiguration());
-                       if (storageManager == null) {
-                               log.debug("Sandesha2 cannot proceed. The 
StorageManager is not available " + returnValue);
-                               return returnValue;
-                       }
-               } catch (SandeshaException e1) {
-                       // TODO make this a log
-                       log.debug("Sandesha2 cannot proceed. Exception thrown 
when looking for the StorageManager", e1);
-                       return returnValue;
-               }
-
                boolean withinTransaction = false;
-               String withinTransactionStr = (String) 
msgContext.getProperty(Sandesha2Constants.WITHIN_TRANSACTION);
-               if (withinTransactionStr != null && 
Sandesha2Constants.VALUE_TRUE.equals(withinTransactionStr)) {
-                       withinTransaction = true;
-               }
-
                Transaction transaction = null;
-               if (!withinTransaction) {
-                       transaction = storageManager.getTransaction();
-                       
msgContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
-               }
                boolean rolebacked = false;
 
                try {
@@ -151,6 +128,30 @@
                                return returnValue;
                        }
 
+                       String withinTransactionStr = (String) 
msgContext.getProperty(Sandesha2Constants.WITHIN_TRANSACTION);
+                       if (withinTransactionStr != null && 
Sandesha2Constants.VALUE_TRUE.equals(withinTransactionStr)) {
+                               withinTransaction = true;
+                       }
+
+                       StorageManager storageManager = null;
+                       try {
+                               storageManager = SandeshaUtil
+                                               
.getSandeshaStorageManager(configContext, configContext.getAxisConfiguration());
+                               if (storageManager == null) {
+                                       log.debug("Sandesha2 cannot proceed. 
The StorageManager is not available " + returnValue);
+                                       return returnValue;
+                               }
+                       } catch (SandeshaException e1) {
+                               // TODO make this a log
+                               log.debug("Sandesha2 cannot proceed. Exception 
thrown when looking for the StorageManager", e1);
+                               return returnValue;
+                       }
+
+                       if (!withinTransaction) {
+                               transaction = storageManager.getTransaction();
+                               
msgContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
+                       }
+
                        RMMsgContext rmMessageContext = 
MsgInitializer.initializeMessage(msgContext);
 
                        // Dropping duplicates
@@ -180,7 +181,7 @@
                        msgContext.pause();
                        returnValue = InvocationResponse.SUSPEND;
 
-                       if (!withinTransaction) {
+                       if (!withinTransaction && transaction != null) {
                                try {
                                        transaction.rollback();
                                        
msgContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
@@ -196,7 +197,7 @@
                                log.debug("Exit: 
SandeshaGlobalInHandler::invoke ", e);
                        throw new AxisFault(message, e);
                } finally {
-                       if (!withinTransaction && !rolebacked) {
+                       if (!withinTransaction && !rolebacked && transaction != 
null) {
                                try {
                                        transaction.commit();
                                        
msgContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to