Author: mlovett
Date: Tue Dec 19 06:46:08 2006
New Revision: 488693

URL: http://svn.apache.org/viewvc?view=rev&rev=488693
Log:
Associate the Sandesha transaction with the thread that is running the code 
instead of the message context

Modified:
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Invoker.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Sender.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
 Tue Dec 19 06:46:08 2006
@@ -541,8 +541,6 @@
        
        String POLLING_MANAGER = "PollingManager";
        
-       String WITHIN_TRANSACTION = "WithinTransaction";
-       
        String STORAGE_MANAGER_PARAMETER  = "Sandesha2StorageManager";
        
        String POST_FAILURE_MESSAGE = "PostFailureMessage";

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
 Tue Dec 19 06:46:08 2006
@@ -110,20 +110,10 @@
                SequencePropertyBeanMgr seqPropMgr = 
storageManager.getSequencePropertyBeanMgr();
                RMSBeanMgr createSeqMgr = storageManager.getRMSBeanMgr();
 
-               String withinTransactionStr = (String) 
configurationContext.getProperty(Sandesha2Constants.WITHIN_TRANSACTION);
-               boolean withinTransaction = false;
-               if (withinTransactionStr != null && 
Sandesha2Constants.VALUE_TRUE.equals(withinTransactionStr))
-                       withinTransaction = true;
-
                Transaction reportTransaction = null;
-               if (!withinTransaction) {
-                       reportTransaction = storageManager.getTransaction();
-                       
configurationContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
-               }
-
-               boolean rolebacked = false;
 
                try {
+                       reportTransaction = storageManager.getTransaction();
 
                        
sequenceReport.setInternalSequenceID(internalSequenceID);
 
@@ -177,16 +167,12 @@
                        fillOutgoingSequenceInfo(sequenceReport, 
internalSequenceID, outSequenceID, seqPropMgr);
 
                } catch (Exception e) {
-                       if (!withinTransaction && reportTransaction!=null) {
+                       if (reportTransaction!=null) {
                                reportTransaction.rollback();
-                               
configurationContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-                               rolebacked = true;
+                               reportTransaction = null;
                        }
                } finally {
-                       if (!withinTransaction && !rolebacked && 
reportTransaction!=null) {
-                               reportTransaction.commit();
-                               
configurationContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-                       }
+                       if (reportTransaction!=null) reportTransaction.commit();
                }
 
                return sequenceReport;
@@ -237,20 +223,10 @@
                SandeshaReport sandeshaReport = new SandeshaReport();
                SequencePropertyBean internalSequenceFindBean = new 
SequencePropertyBean();
 
-               String withinTransactionStr = (String) 
configurationContext.getProperty(Sandesha2Constants.WITHIN_TRANSACTION);
-               boolean withinTransaction = false;
-               if (withinTransactionStr != null && 
Sandesha2Constants.VALUE_TRUE.equals(withinTransactionStr))
-                       withinTransaction = true;
-
                Transaction reportTransaction = null;
-               if (!withinTransaction) {
-                       reportTransaction = storageManager.getTransaction();
-                       
configurationContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
-               }
-
-               boolean rolebacked = false;
 
                try {
+                       reportTransaction = storageManager.getTransaction();
 
                        
internalSequenceFindBean.setName(Sandesha2Constants.SequenceProperties.INTERNAL_SEQUENCE_ID);
                        Collection collection = 
seqPropMgr.find(internalSequenceFindBean);
@@ -285,16 +261,12 @@
                        }
 
                } catch (Exception e) {
-                       if (!withinTransaction && reportTransaction!=null) {
+                       if (reportTransaction!=null) {
                                reportTransaction.rollback();
-                               
configurationContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-                               rolebacked = true;
+                               reportTransaction = null;
                        }
                } finally {
-                       if (!withinTransaction && !rolebacked && 
reportTransaction!=null) {
-                               reportTransaction.commit();
-                               
configurationContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-                       }
+                       if (reportTransaction!=null) reportTransaction.commit();
                }
 
                return sandeshaReport;
@@ -641,13 +613,14 @@
                String sequenceID = null;
                
                try
-               {                       
+               {
+                       transaction = storageManager.getTransaction();
                        sequenceID = 
SandeshaUtil.getSequenceIDFromInternalSequenceID(internalSequenceID, 
storageManager);              
                }
                finally
                {
                        // Commit the transaction as it was only a retrieve
-                       transaction.commit();
+                       if(transaction != null) transaction.commit();
                }
                
                if (sequenceID == null)
@@ -683,17 +656,18 @@
                StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(configurationContext,configurationContext.getAxisConfiguration());
 
                // Get a transaction to obtain sequence information
-               Transaction transaction = storageManager.getTransaction();
-               
+               Transaction transaction = null;
                String sequenceID = null;
                
                try
                {
+                       transaction = storageManager.getTransaction();
                        sequenceID = 
SandeshaUtil.getSequenceIDFromInternalSequenceID(internalSequenceID, 
storageManager);
                }
                finally
                {
-                       transaction.commit();
+                       // Commit the tran whatever happened
+                       if(transaction != null) transaction.commit();
                }
                
                if (sequenceID == null)
@@ -802,21 +776,12 @@
        public static void forceDispatchOfInboundMessages(ConfigurationContext 
configContext, 
                        String sequenceID,
                        boolean allowLaterDeliveryOfMissingMessages)throws 
SandeshaException{
-               String withinTransactionStr = (String) 
configContext.getProperty(Sandesha2Constants.WITHIN_TRANSACTION);
-               boolean withinTransaction = false;
-               if (withinTransactionStr != null && 
Sandesha2Constants.VALUE_TRUE.equals(withinTransactionStr))
-                       withinTransaction = true;
 
                Transaction reportTransaction = null;
-               if (!withinTransaction) {
-                       StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(configContext, 
configContext.getAxisConfiguration());
-                       reportTransaction = storageManager.getTransaction();
-                       
configContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
-               }
-
-               boolean rolledback = false;
 
                try {
+                       StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(configContext, 
configContext.getAxisConfiguration());
+                       reportTransaction = storageManager.getTransaction();
 
                        //only do this if we are running inOrder
                        
if(SandeshaUtil.getPropertyBean(configContext.getAxisConfiguration()).isInOrder()){
@@ -830,16 +795,12 @@
                        }
                        
                } catch (Exception e) {
-                       if (!withinTransaction && reportTransaction!=null) {
+                       if (reportTransaction!=null) {
                                reportTransaction.rollback();
-                               
configContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-                               rolledback = true;
+                               reportTransaction = null;
                        }
                } finally {
-                       if (!withinTransaction && !rolledback && 
reportTransaction!=null) {
-                               reportTransaction.commit();
-                               
configContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-                       }
+                       if(reportTransaction != null) 
reportTransaction.commit();
                }
        }
 
@@ -869,17 +830,18 @@
                StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(configurationContext,configurationContext.getAxisConfiguration());
                
                // Get a transaction for getting the sequence properties
-               Transaction transaction = storageManager.getTransaction();
-
+               Transaction transaction = null;
                String sequenceID = null;
                
                try
                {
+                       transaction = storageManager.getTransaction();
                        sequenceID = 
SandeshaUtil.getSequenceIDFromInternalSequenceID(internalSequenceID, 
storageManager);
                }
                finally
                {
-                       transaction.commit();
+                       // Commit the tran whatever happened
+                       if(transaction != null) transaction.commit();
                }
                
                if (sequenceID == null)
@@ -1061,20 +1023,10 @@
                StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(configCtx,configCtx.getAxisConfiguration());
                SequencePropertyBeanMgr seqPropMgr = 
storageManager.getSequencePropertyBeanMgr();
 
-               String withinTransactionStr = (String) 
configCtx.getProperty(Sandesha2Constants.WITHIN_TRANSACTION);
-               boolean withinTransaction = false;
-               if (withinTransactionStr != null && 
Sandesha2Constants.VALUE_TRUE.equals(withinTransactionStr))
-                       withinTransaction = true;
-
                Transaction reportTransaction = null;
-               if (!withinTransaction) {
-                       reportTransaction = storageManager.getTransaction();
-                       
configCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
-               }
-               
-               boolean rolebacked = false;
 
                try {
+                       reportTransaction = storageManager.getTransaction();
 
                        SequenceReport sequenceReport = new SequenceReport();
 
@@ -1083,7 +1035,6 @@
 
                        Iterator iter = completedMessageList.iterator();
                        while (iter.hasNext()) {
-                               ;
                                sequenceReport.addCompletedMessage((Long) 
iter.next());
                        }
 
@@ -1101,16 +1052,12 @@
                        return sequenceReport;
 
                } catch (Exception e) {
-                       if (!withinTransaction && reportTransaction!=null) {
+                       if (reportTransaction!=null) {
                                reportTransaction.rollback();
-                               
configCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-                               rolebacked = true;
+                               reportTransaction = null;
                        }
                } finally {
-                       if (!withinTransaction && !rolebacked && 
reportTransaction!=null) {
-                               reportTransaction.commit();
-                               
configCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-                       }
+                       if (reportTransaction!=null) reportTransaction.commit();
                }
 
                return null;
@@ -1142,17 +1089,18 @@
                StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(configurationContext,configurationContext.getAxisConfiguration());
 
                // Get a transaction to obtain sequence information
-               Transaction transaction = storageManager.getTransaction();
-               
+               Transaction transaction = null;
                String sequenceID = null;
                
                try
                {
+                       transaction = storageManager.getTransaction();
                        sequenceID = 
SandeshaUtil.getSequenceIDFromInternalSequenceID(internalSequenceID, 
storageManager);
                }
                finally
                {
-                       transaction.commit();
+                       // Commit the tran whatever happened
+                       if(transaction != null) transaction.commit();
                }
                
                if (sequenceID == null)
@@ -1328,15 +1276,14 @@
                StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(configurationContext,configurationContext.getAxisConfiguration());
                SequencePropertyBeanMgr seqPropMgr = 
storageManager.getSequencePropertyBeanMgr();
                
-               Transaction transaction = storageManager.getTransaction();
-
+               Transaction transaction = null;
                String resultString = null;
     
                try 
-               {               
+               {
+                       transaction = storageManager.getTransaction();
                        // Lookup the last failed to send error
                        SequencePropertyBean errorBean = 
seqPropMgr.retrieve(internalSequenceId, 
Sandesha2Constants.SequenceProperties.LAST_FAILED_TO_SEND_ERROR);
-               
                        
                        // Get the value from the 
                        if (errorBean != null)
@@ -1344,7 +1291,8 @@
                }
                finally
                {
-                       transaction.commit();
+                       // Commit the tran whatever happened
+                       if(transaction != null) transaction.commit();
                }
                
                if (log.isDebugEnabled())
@@ -1387,12 +1335,13 @@
                SequencePropertyBeanMgr seqPropMgr = 
storageManager.getSequencePropertyBeanMgr();
                
                // Create a transaction for the retrieve operation
-               Transaction transaction = storageManager.getTransaction();
-       
+               Transaction transaction = null;
                long resultTime = -1;
 
                try
-               {               
+               {
+                       transaction = storageManager.getTransaction();
+                       
                        // Lookup the last failed to send error
                        SequencePropertyBean errorTSBean = 
                                seqPropMgr.retrieve(internalSequenceId, 
Sandesha2Constants.SequenceProperties.LAST_FAILED_TO_SEND_ERROR_TIMESTAMP);
@@ -1404,7 +1353,7 @@
                finally
                {
                        // commit the transaction as it was only a retrieve
-                       transaction.commit();
+                       if(transaction != null) transaction.commit();
                }
                
                if (log.isDebugEnabled())

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=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
 Tue Dec 19 06:46:08 2006
@@ -75,9 +75,7 @@
                        return returnValue; // Reinjected messages are not 
processed by Sandesha2 inflow
                                                                                
                        // handlers
 
-               boolean withinTransaction = false;
                Transaction transaction = null;
-               boolean rolebacked = false;
 
                try {
                        
@@ -90,11 +88,6 @@
                                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
@@ -109,10 +102,7 @@
                                return returnValue;
                        }
 
-                       if (!withinTransaction) {
-                               transaction = storageManager.getTransaction();
-                               
msgContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
-                       }
+                       transaction = storageManager.getTransaction();
 
                        RMMsgContext rmMessageContext = 
MsgInitializer.initializeMessage(msgContext);
 
@@ -143,11 +133,10 @@
                        msgContext.pause();
                        returnValue = InvocationResponse.SUSPEND;
 
-                       if (!withinTransaction && transaction != null) {
+                       if (transaction != null) {
                                try {
                                        transaction.rollback();
-                                       
msgContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-                                       rolebacked = true;
+                                       transaction = null;
                                } catch (Exception e1) {
                                        String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.rollbackError, 
e1.toString());
                                        log.debug(message, e);
@@ -159,10 +148,9 @@
                                log.debug("Exit: 
SandeshaGlobalInHandler::invoke ", e);
                        throw new AxisFault(message, e);
                } finally {
-                       if (!withinTransaction && !rolebacked && transaction != 
null) {
+                       if (transaction != null) {
                                try {
                                        transaction.commit();
-                                       
msgContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
                                } catch (Exception e) {
                                        String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.commitError, e.toString());
                                        if (log.isDebugEnabled())

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
 Tue Dec 19 06:46:08 2006
@@ -85,20 +85,10 @@
                
                StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(context, context.getAxisConfiguration());
 
-               boolean withinTransaction = false;
-               String withinTransactionStr = (String) 
msgCtx.getProperty(Sandesha2Constants.WITHIN_TRANSACTION);
-               if (withinTransactionStr != null && 
Sandesha2Constants.VALUE_TRUE.equals(withinTransactionStr)) {
-                       withinTransaction = true;
-               }
-
                Transaction transaction = null;
-               if (!withinTransaction) {
-                       transaction = storageManager.getTransaction();
-                       
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
-               }
-               boolean rolebacked = false;
 
                try {
+                       transaction = storageManager.getTransaction();
 
                        AxisService axisService = msgCtx.getAxisService();
                        if (axisService == null) {
@@ -146,11 +136,10 @@
                        msgCtx.pause();
                        returnValue = InvocationResponse.SUSPEND;
                        
-                       if (!withinTransaction) {
+                       if (transaction != null) {
                                try {
                                        transaction.rollback();
-                                       
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-                                       rolebacked = true;
+                                       transaction = null;
                                } catch (Exception e1) {
                                        String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.rollbackError, 
e1.toString());
                                        log.debug(message, e);
@@ -161,10 +150,9 @@
                        throw new AxisFault(message, e);
                } 
                finally {
-                       if (!withinTransaction && !rolebacked) {
+                       if (transaction != null) {
                                try {
                                        transaction.commit();
-                                       
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
                                } catch (Exception e) {
                                        String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.commitError, e.toString());
                                        log.debug(message, e);

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
 Tue Dec 19 06:46:08 2006
@@ -113,20 +113,11 @@
                
msgCtx.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE, "true");
                StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(context, context.getAxisConfiguration());
 
-               boolean withinTransaction = false;
-               String withinTransactionStr = (String) 
msgCtx.getProperty(Sandesha2Constants.WITHIN_TRANSACTION);
-               if (withinTransactionStr != null && 
Sandesha2Constants.VALUE_TRUE.equals(withinTransactionStr)) {
-                       withinTransaction = true;
-               }
-
                Transaction transaction = null;
-               if (!withinTransaction) {
-                       transaction = storageManager.getTransaction();
-                       
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
-               }
-               boolean rolebacked = false;
 
                try {
+                       transaction = storageManager.getTransaction();
+                       
                        // getting rm message
                        RMMsgContext rmMsgCtx = 
MsgInitializer.initializeMessage(msgCtx);
 
@@ -172,11 +163,10 @@
                        returnValue = InvocationResponse.SUSPEND;
 
                        // rolling back the transaction
-                       if (!withinTransaction) {
+                       if (transaction != null) {
                                try {
                                        transaction.rollback();
-                                       
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-                                       rolebacked = true;
+                                       transaction = null;
                                } catch (Exception e1) {
                                        String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.rollbackError, 
e1.toString());
                                        log.debug(message, e);
@@ -186,10 +176,9 @@
                        String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.outMsgError, e.toString());
                        throw new AxisFault(message, e);
                } finally {
-                       if (!withinTransaction && !rolebacked) {
+                       if (transaction != null) {
                                try {
                                        transaction.commit();
-                                       
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
                                } catch (Exception e) {
                                        String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.commitError, e.toString());
                                        log.debug(message, e);

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 Tue Dec 19 06:46:08 2006
@@ -505,9 +505,6 @@
                createSeqMsg.setRelationships(null); // create seq msg does not
                                                                                
                // relateTo anything
                
-               // Set that the create sequence message is part of a 
transaction.
-               createSeqMsg.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
-               
                String createSequenceMessageStoreKey = SandeshaUtil.getUUID(); 
// the key that will be used to store 
                                                                                
                                                           //the create 
sequence message.
                

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
 Tue Dec 19 06:46:08 2006
@@ -25,7 +25,6 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.sandesha2.RMMsgContext;
-import org.apache.sandesha2.Sandesha2Constants;
 import org.apache.sandesha2.i18n.SandeshaMessageHelper;
 import org.apache.sandesha2.i18n.SandeshaMessageKeys;
 import org.apache.sandesha2.msgprocessors.MsgProcessor;
@@ -57,23 +56,12 @@
                // that we will have a MsgProcessor every time.
                MsgProcessor msgProcessor = 
MsgProcessorFactory.getMessageProcessor(rmMsgCtx);
                if(msgProcessor != null) {
-                       boolean withinTransaction = false;
-                       String withinTransactionStr = (String) 
msgCtx.getProperty(Sandesha2Constants.WITHIN_TRANSACTION);
-                       if (withinTransactionStr != null && 
Sandesha2Constants.VALUE_TRUE.equals(withinTransactionStr)) {
-                               withinTransaction = true;
-                       }
-
                        Transaction transaction = null;
-                       if (!withinTransaction) {
+                       
+                       try {
                                ConfigurationContext context = 
msgCtx.getConfigurationContext();
                                StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(context, 
context.getAxisConfiguration());                                
                                transaction = storageManager.getTransaction();
-                               
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
-                       }
-                       
-                       boolean rolledBack = false;
-                       
-                       try {
 
                                msgProcessor.processInMessage(rmMsgCtx);
 
@@ -83,11 +71,10 @@
                                // message should not be sent in a exception 
situation.
                                msgCtx.pause();
        
-                               if (!withinTransaction) {
+                               if (transaction != null) {
                                        try {
                                                transaction.rollback();
-                                               
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-                                               rolledBack = true;
+                                               transaction = null;
                                        } catch (Exception e1) {
                                                String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.rollbackError, 
e1.toString());
                                                log.debug(message, e);
@@ -97,10 +84,9 @@
                                String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.inMsgError, e.toString());
                                throw new AxisFault(message, e);
                        } finally {
-                               if (!withinTransaction && !rolledBack) {
+                               if (transaction != null) {
                                        try {
                                                transaction.commit();
-                                               
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
                                        } catch (Exception e) {
                                                String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.commitError, e.toString());
                                                log.debug(message, e);

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java
 Tue Dec 19 06:46:08 2006
@@ -70,12 +70,12 @@
                        try {
                                t = storageManager.getTransaction();
                                pollRMDSide();
-                               t.commit();
+                               if(t != null) t.commit();
+                               t = null;
 
                                t = storageManager.getTransaction();
                                pollRMSSide();
-                               t.commit();
-
+                               if(t != null) t.commit();
                                t = null;
                        } catch (Exception e) {
                                if(log.isDebugEnabled()) log.debug("Exception", 
e);
@@ -85,7 +85,6 @@
                                        } catch(Exception e2) {
                                                if(log.isDebugEnabled()) 
log.debug("Exception during rollback", e);
                                        }
-                                       t = null;
                                }
                        }
                        try {
@@ -164,9 +163,6 @@
                RMMsgContext referenceRMMessage = 
MsgInitializer.initializeMessage(referenceMessage);
                RMMsgContext makeConnectionRMMessage = 
RMMsgCreator.createMakeConnectionMessage(referenceRMMessage,
                                sequenceId, WSRMAnonReplyToURI, storageManager);
-               
-               // Put our transaction onto the message context
-               
makeConnectionRMMessage.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
                
                
makeConnectionRMMessage.setProperty(MessageContext.TRANSPORT_IN,null);
                //storing the MakeConnection message.

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java
 Tue Dec 19 06:46:08 2006
@@ -88,9 +88,11 @@
                                result = new InMemoryTransaction(this, name, 
id);
                                transactions.put(key, result);
                        } else {
-                               // We just returned an existing transaction. 
That might be ok, but it
-                               // might be an indication of a real problem.
+                               // We don't want to return an existing 
transaction, as someone else should
+                               // decide if we commit it or not. If we get 
here then we probably have a
+                               // bug.
                                if(log.isDebugEnabled()) log.debug("Possible 
re-used transaction: " + result);
+                               result = null;
                        }
                }
                return result;

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
 Tue Dec 19 06:46:08 2006
@@ -137,8 +137,6 @@
                        StorageManager storageManager) throws SandeshaException 
{
                ConfigurationContext configurationContext = 
messageContext.getConfigurationContext();
 
-               
configurationContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
messageContext
-                               
.getProperty(Sandesha2Constants.WITHIN_TRANSACTION));
                SequenceReport report = 
SandeshaClient.getOutgoingSequenceReport(internalSequenceID, 
configurationContext);
                
TerminateManager.timeOutSendingSideSequence(configurationContext,sequencePropertyKey
 ,internalSequenceID, false, storageManager);
 

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Invoker.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Invoker.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Invoker.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Invoker.java 
Tue Dec 19 06:46:08 2006
@@ -156,10 +156,17 @@
                                                        }
                                                }
                                                
-                                               transaction.commit();
                                        }
                                        catch(Exception e){
-                                               transaction.rollback();
+                                               if(transaction != null) {
+                                                       transaction.rollback();
+                                                       transaction = null;
+                                               }
+                                       } finally {
+                                               if(transaction != null) {
+                                                       transaction.commit();
+                                                       transaction = null;
+                                               }
                                        }
                
                                }//end while
@@ -228,7 +235,6 @@
                        doPauseIfNeeded();
 
                        Transaction transaction = null;
-                       boolean rolebacked = false;
 
                        try {
                                StorageManager storageManager = SandeshaUtil
@@ -321,7 +327,10 @@
 
                                        String messageContextKey = 
bean.getMessageContextRefKey();
                                        
-                                       transaction.commit();
+                                       if(transaction != null) {
+                                               transaction.commit();
+                                               transaction = null;
+                                       }
 
                                        // start a new worker thread and let it 
do the invocation.
                                        InvokerWorker worker = new 
InvokerWorker(context,
@@ -343,7 +352,7 @@
                                if (transaction != null) {
                                        try {
                                                transaction.rollback();
-                                               rolebacked = true;
+                                               transaction = null;
                                        } catch (Exception e1) {
                                                String message = 
SandeshaMessageHelper.getMessage(
                                                                
SandeshaMessageKeys.rollbackError, e1
@@ -355,9 +364,10 @@
                                                
.getMessage(SandeshaMessageKeys.invokeMsgError);
                                log.debug(message, e);
                        } finally {
-                               if (!rolebacked && transaction != null) {
+                               if (transaction != null) {
                                        try {
                                                transaction.commit();
+                                               transaction = null;
                                        } catch (Exception e) {
                                                String message = 
SandeshaMessageHelper.getMessage(
                                                                
SandeshaMessageKeys.commitError, e.toString());

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java
 Tue Dec 19 06:46:08 2006
@@ -9,7 +9,6 @@
 import org.apache.sandesha2.RMMsgContext;
 import org.apache.sandesha2.Sandesha2Constants;
 import org.apache.sandesha2.SandeshaException;
-import org.apache.sandesha2.storage.SandeshaStorageException;
 import org.apache.sandesha2.storage.StorageManager;
 import org.apache.sandesha2.storage.Transaction;
 import org.apache.sandesha2.storage.beanmanagers.InvokerBeanMgr;
@@ -60,20 +59,16 @@
 
                        String sequencePropertyKey = 
SandeshaUtil.getSequencePropertyKey(rmMsg);
                        
-                       //endint the transaction before invocation.
-                       transaction.commit();
+                       // ending the transaction before invocation.
+                       if(transaction != null) {
+                               transaction.commit();
+                               transaction = null;
+                       }
                                
                        boolean invoked = false;
                        
                        try {
 
-                               // Invocation is not done within a transation. 
This
-                               // may get changed when WS-AT is available.
-                               
-                               // Invoking the message.
-                               
msgToInvoke.setProperty(Sandesha2Constants.WITHIN_TRANSACTION,
-                                               Sandesha2Constants.VALUE_TRUE);
-
                                boolean postFailureInvocation = false;
 
                                // StorageManagers should st following property 
to
@@ -154,15 +149,14 @@
                                        nextMsgMgr.update(rMDBean);
                                }                               
                        }
-               } catch (SandeshaStorageException e) {
-                       transaction.rollback();
-               } catch (SandeshaException e) {
-                       log.error(e.toString(), e);
                } catch (Exception e) {
                        log.error(e.toString(), e);
+                       if(transaction != null) {
+                               transaction.rollback();
+                               transaction = null;
+                       }
                } finally {
-                       if (transaction!=null && transaction.isActive())
-                               transaction.commit();
+                       if (transaction!=null) transaction.commit();
                        
                        if (workId !=null && lock!=null) {
                                lock.removeWork(workId);

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Sender.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Sender.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Sender.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Sender.java 
Tue Dec 19 06:46:08 2006
@@ -73,7 +73,6 @@
                        doPauseIfNeeded();
 
                        Transaction transaction = null;
-                       boolean rolebacked = false;
 
                        try {
                                if (context == null) {
@@ -85,7 +84,6 @@
                                        throw new SandeshaException(message);
                                }
                                
-                               // TODO make sure this locks on reads.
                                transaction = storageManager.getTransaction();
 
                                SenderBeanMgr mgr = 
storageManager.getSenderBeanMgr();
@@ -116,7 +114,10 @@
                                        continue;
                                }
 
-                               transaction.commit();
+                               if(transaction != null) {
+                                       transaction.commit();
+                                       transaction = null;
+                               }
 
                                // start a worker which will work on this 
messages.
                                SenderWorker worker = new SenderWorker(context, 
senderBean);
@@ -141,7 +142,7 @@
                                if (transaction != null) {
                                        try {
                                                transaction.rollback();
-                                               rolebacked = true;
+                                               transaction = null;
                                        } catch (Exception e1) {
                                                String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.rollbackError, e1
                                                                .toString());
@@ -153,9 +154,10 @@
 
                                log.debug(message, e);
                        } finally {
-                               if (transaction != null && !rolebacked) {
+                               if (transaction != null) {
                                        try {
                                                transaction.commit();
+                                               transaction = null;
                                        } catch (Exception e) {
                                                String message = 
SandeshaMessageHelper
                                                                
.getMessage(SandeshaMessageKeys.commitError, e.toString());

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java?view=diff&rev=488693&r1=488692&r2=488693
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
 Tue Dec 19 06:46:08 2006
@@ -71,13 +71,11 @@
                        String key = senderBean.getMessageContextRefKey();
                        MessageContext msgCtx = 
storageManager.retrieveMessageContext(key, configurationContext);
       
-      if (msgCtx == null) {
-        // This sender bean has already been processed
-        return;
-      }
+                       if (msgCtx == null) {
+                               // This sender bean has already been processed
+                               return;
+                       }
       
-                       
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
-
                        RMMsgContext rmMsgCtx = 
MsgInitializer.initializeMessage(msgCtx);
 
                        boolean continueSending = 
MessageRetransmissionAdjuster.adjustRetransmittion(rmMsgCtx, senderBean, 
configurationContext,
@@ -168,9 +166,10 @@
 
                        // have to commit the transaction before sending. This 
may
                        // get changed when WS-AT is available.
-                       transaction.commit();
-                       
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION,
-                                       Sandesha2Constants.VALUE_FALSE);
+                       if(transaction != null) {
+                               transaction.commit();
+                               transaction = null;
+                       }
 
                        try {
 
@@ -252,22 +251,25 @@
                                        seqPropMgr.insert(etsBean);
                                        
                                        // Commit the properties
-                                       transaction.commit();
+                                       if(transaction != null) {
+                                               transaction.commit();
+                                               transaction = null;
+                                       }
                                }
                                catch (Exception e1)
                                {
                                        if (log.isErrorEnabled())
                                                log.error(e1);
                                        
-                                       if (transaction != null && 
transaction.isActive())
+                                       if (transaction != null) {
                                                transaction.rollback();
+                                               transaction = null;
+                                       }
                                }
                                
-                       } finally {
-                               transaction = storageManager.getTransaction();
-                               
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION,
-                                               Sandesha2Constants.VALUE_TRUE);
                        }
+                       // Establish the transaction for post-send processing
+                       transaction = storageManager.getTransaction();
 
                        // update or delete only if the object is still present.
                        SenderBean bean1 = senderBeanMgr
@@ -288,12 +290,13 @@
 
                        if (successfullySent) {
                                if (!msgCtx.isServerSide())
-        {
-          // Commit the transaction to release the SenderBean
-          transaction.commit();
-          transaction = storageManager.getTransaction();
+                               {
+                                       // Commit the transaction to release 
the SenderBean
+                                       transaction.commit();
+                                       transaction = null;
+                                       transaction = 
storageManager.getTransaction();
                                        checkForSyncResponses(msgCtx);
-        }
+                               }
                        }
 
                        if ((rmMsgCtx.getMessageType() == 
Sandesha2Constants.MessageTypes.TERMINATE_SEQ)
@@ -318,35 +321,14 @@
                                                storageManager);
                        }
 
-                       
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_FALSE);
-               } catch (SandeshaStorageException e) { 
-                       if (log.isDebugEnabled())
-                               log.debug("Caught exception", e);
-                       if (transaction!=null && transaction.isActive())
-                               transaction.rollback();
-               } catch (SandeshaException e) {
-                       if (log.isDebugEnabled())
-                               log.debug("Caught exception", e);
-                       if (transaction!=null && transaction.isActive())
-                               transaction.rollback();
-               } catch (MissingResourceException e) {
-                       if (log.isFatalEnabled())
-                         log.fatal("Unable to load message bundle", e);
-                       if (transaction!=null && transaction.isActive())
-                               transaction.rollback();
-               } catch (AxisFault e) {
-                       if (log.isDebugEnabled())
-                               log.debug("Caught exception", e);
-                       if (transaction!=null && transaction.isActive())
-                               transaction.rollback();
                } catch (Exception e) {
-                       if (log.isDebugEnabled())
-                               log.debug("Caught exception", e);
-                       if (transaction!=null && transaction.isActive())
+                       if (log.isDebugEnabled()) log.debug("Caught exception", 
e);
+                       if (transaction!=null) {
                                transaction.rollback();
+                               transaction = null;
+                       }
                } finally {
-                       if (transaction!=null && transaction.isActive())
-                               transaction.commit();
+                       if (transaction!=null) transaction.commit();
                        
                        if (lock!=null && workId!=null) {
                                lock.removeWork(workId);
@@ -439,12 +421,6 @@
                                
                                return;
                        }
-
-                       // if the request msg ctx is withina a transaction, 
processing if
-                       // the response should also happen
-                       // withing the same transaction
-                       
responseMessageContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, msgCtx
-                                       
.getProperty(Sandesha2Constants.WITHIN_TRANSACTION));
 
                        if (resenvelope != null) {
                                responseMessageContext.setEnvelope(resenvelope);



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

Reply via email to