Author: chamikara
Date: Wed Oct  4 22:15:55 2006
New Revision: 453108

URL: http://svn.apache.org/viewvc?view=rev&rev=453108
Log:
Did fixes to support secure conversation. Basically there is a new
concept of Retransmittable phases.These will be called in every
retransmission.

Bug fixes.



Modified:
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.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/AckRequestedProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/transport/Sandesha2TransportSender.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.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=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
 Wed Oct  4 22:15:55 2006
@@ -539,6 +539,8 @@
        

        String RM_IN_ONLY_OPERATION = "RMInOnlyOperation";

        

+       String RETRANSMITTABLE_PHASES = "RMRetransmittablePhases";

+       

        String [] SPEC_NS_URIS = {

                        SPEC_2005_02.NS_URI,

                        SPEC_2006_08.NS_URI


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=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
 Wed Oct  4 22:15:55 2006
@@ -122,7 +122,7 @@
                                log.debug(message);

                                throw new AxisFault(message);

                        }

-

+                       

                        // validating the message

                        MessageValidator.validateMessage(rmMsgCtx, 
storageManager);

 


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=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
 Wed Oct  4 22:15:55 2006
@@ -95,6 +95,10 @@
                                return;

                        }

                }

+               

+               //this will change the execution chain of this message to work 
correctly in retransmissions.

+               //For e.g. Phases like security will be removed to be called in 
each retransmission.

+               SandeshaUtil.modifyExecutionChainForStoring(msgCtx);

 

                String DONE = (String) 
msgCtx.getProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE);

                if (null != DONE && "true".equals(DONE)) {

@@ -102,7 +106,7 @@
                                log.debug("Exit: SandeshaOutHandler::invoke, 
Application processing done");

                        return;

                }

-

+               

                
msgCtx.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE, "true");

                StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(context, context.getAxisConfiguration());

 


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
 Wed Oct  4 22:15:55 2006
@@ -69,7 +69,7 @@
 
        private static final Log log = 
LogFactory.getLog(AckRequestedProcessor.class);
 
-       public void processAckRequestedHeaders(MessageContext message) throws 
SandeshaException {
+       public void processAckRequestedHeaders(MessageContext message) throws 
AxisFault {
                if (log.isDebugEnabled())
                        log.debug("Enter: 
AckRequestedProcessor::processAckRequestHeaders");
 
@@ -95,7 +95,7 @@
                        log.debug("Exit: 
AckRequestedProcessor::processAckRequestHeaders");
        }
 
-       public void processAckRequestedHeader(MessageContext msgContext, 
OMElement soapHeader, AckRequested ackRequested) throws SandeshaException {
+       public void processAckRequestedHeader(MessageContext msgContext, 
OMElement soapHeader, AckRequested ackRequested) throws AxisFault {
                if (log.isDebugEnabled())
                        log.debug("Enter: 
AckRequestedProcessor::processAckRequestedHeader " + soapHeader);
 
@@ -281,25 +281,14 @@
                        ackBean.setTimeToSend(timeToSend);
 
                        storageManager.storeMessageContext(key, ackMsgCtx);
-
+                       
msgContext.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, 
Sandesha2Constants.VALUE_FALSE);
+                       
                        // inserting the new ack.
                        retransmitterBeanMgr.insert(ackBean);
 
                        // passing the message through sandesha2sender
 
-                       
ackMsgCtx.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, 
ackMsgCtx.getTransportOut());
-                       
ackMsgCtx.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, 
Sandesha2Constants.VALUE_TRUE);
-
-                       
ackMsgCtx.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, key);
-
-                       ackMsgCtx.setTransportOut(new 
Sandesha2TransportOutDesc());
-
-                       AxisEngine engine = new 
AxisEngine(configurationContext);
-                       try {
-                               engine.send(ackMsgCtx);
-                       } catch (AxisFault e) {
-                               throw new SandeshaException(e.getMessage());
-                       }
+                       SandeshaUtil.executeAndStore(ackRMMsgCtx, key);
 
                        
SandeshaUtil.startSenderForTheSequence(configurationContext, sequenceId);
 

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
 Wed Oct  4 22:15:55 2006
@@ -40,8 +40,10 @@
 import org.apache.sandesha2.security.SecurityManager;
 import org.apache.sandesha2.security.SecurityToken;
 import org.apache.sandesha2.storage.StorageManager;
+import org.apache.sandesha2.storage.beanmanagers.CreateSeqBeanMgr;
 import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
 import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
+import org.apache.sandesha2.storage.beans.CreateSeqBean;
 import org.apache.sandesha2.storage.beans.SenderBean;
 import org.apache.sandesha2.storage.beans.SequencePropertyBean;
 import org.apache.sandesha2.util.AcknowledgementManager;
@@ -63,7 +65,7 @@
 
        private static final Log log = 
LogFactory.getLog(AcknowledgementProcessor.class);
 
-       public void processAckHeaders(MessageContext message) throws 
SandeshaException {
+       public void processAckHeaders(MessageContext message) throws AxisFault {
                if (log.isDebugEnabled())
                        log.debug("Enter: 
AcknowledgementProcessor::processAckHeaders");
 
@@ -91,8 +93,7 @@
        }
        
        private void processAckHeader(MessageContext msgCtx, OMElement 
soapHeader, SequenceAcknowledgement sequenceAck)
-       throws SandeshaException
-       {
+               throws AxisFault {
                if (log.isDebugEnabled())
                        log.debug("Enter: 
AcknowledgementProcessor::processAckHeader " + soapHeader);
                
@@ -245,9 +246,15 @@
                                boolean complete = 
AcknowledgementManager.verifySequenceCompletion(sequenceAck
                                                
.getAcknowledgementRanges().iterator(), highestOutMsgNo);
 
-                               if (complete)
+                               if (complete) {
+                                       
+                                       //using create sequence message as the 
reference message.
+//                                     CreateSeqBeanMgr createSeqBeanMgr = 
storageManager.getCreateSeqBeanMgr();
+//                                     CreateSeqBean createSeqBean = 
createSeqBeanMgr.retrieve(msgId);
+//                                     
                                        
TerminateManager.addTerminateSequenceMessage(rmMsgCtx, outSequenceId, 
sequencePropertyKey,
                                                        storageManager);
+                               }
                        }
                }
 

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=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 Wed Oct  4 22:15:55 2006
@@ -378,14 +378,12 @@
 
                RMMsgContext ackRMMessage = 
AcknowledgementManager.generateAckMessage(rmMsgCtx, sequencePropertyKey 
,sequenceId, storageManager);
 
-               AxisEngine engine = new AxisEngine(configCtx);
-
-               try {
+               //if the ack is anonymous send it right now.
+               
+               EndpointReference to = ackRMMessage.getTo();
+               if (to!=null && SandeshaUtil.isAnonymousURI(to.getAddress())) {
+                       AxisEngine engine = new AxisEngine(configCtx);
                        engine.send(ackRMMessage.getMessageContext());
-               } catch (AxisFault e) {
-                       String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendAck, 
sequenceId, e
-                                       .toString());
-                       throw new SandeshaException(message, e);
                }
 
                if (log.isDebugEnabled())
@@ -896,38 +894,18 @@
                        createSeqEntry.setToAddress(to.getAddress());
 
                
createSeqMsg.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, 
Sandesha2Constants.VALUE_FALSE);
-               
createSeqEntry.setMessageType(Sandesha2Constants.MessageTypes.CREATE_SEQ);
+               
storageManager.storeMessageContext(createSequenceMessageStoreKey, 
createSeqMsg); // storing the message
+               
                retransmitterMgr.insert(createSeqEntry);
 
-               
storageManager.storeMessageContext(createSequenceMessageStoreKey, 
createSeqMsg); // storing the
-                                                                               
                                                // message.
-
-               // message will be stored in the Sandesha2TransportSender
-               createSeqMsg.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, 
createSequenceMessageStoreKey);
-
-               TransportOutDescription transportOut = 
createSeqMsg.getTransportOut();
-
-               
createSeqMsg.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, 
transportOut);
-               createSeqMsg.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, 
Sandesha2Constants.VALUE_TRUE);
-               createSeqMsg.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, 
createSequenceMessageStoreKey);
-
-               Sandesha2TransportOutDesc sandesha2TransportOutDesc = new 
Sandesha2TransportOutDesc();
-               createSeqMsg.setTransportOut(sandesha2TransportOutDesc);
-
-               // sending the message once through Sandesha2TransportSender.
-               AxisEngine engine = new 
AxisEngine(createSeqMsg.getConfigurationContext());
-               try {
-                       engine.resumeSend(createSeqMsg);
-               } catch (AxisFault e) {
-                       throw new SandeshaException(e.getMessage());
-               }
-
+               SandeshaUtil.executeAndStore(createSeqRMMessage, 
createSequenceMessageStoreKey);
+               
                if (log.isDebugEnabled())
                        log.debug("Exit: 
ApplicationMsgProcessor::addCreateSequenceMessage");
        }
 
        private void processResponseMessage(RMMsgContext rmMsg, String 
internalSequenceId, long messageNumber,
-                       String storageKey, StorageManager storageManager) 
throws SandeshaException {
+                       String storageKey, StorageManager storageManager) 
throws AxisFault {
                if (log.isDebugEnabled())
                        log.debug("Enter: 
ApplicationMsgProcessor::processResponseMessage, " + internalSequenceId);
 
@@ -966,14 +944,11 @@
 
                String newToStr = null;
                if (msg.isServerSide()) {
-                       try {
-                               MessageContext requestMsg = 
msg.getOperationContext().getMessageContext(
-                                               
OperationContextFactory.MESSAGE_LABEL_IN_VALUE);
-                               if (requestMsg != null) {
-                                       newToStr = 
requestMsg.getReplyTo().getAddress();
-                               }
-                       } catch (AxisFault e) {
-                               throw new SandeshaException(e.getMessage());
+
+                       MessageContext requestMsg = 
msg.getOperationContext().getMessageContext(
+                                       
OperationContextFactory.MESSAGE_LABEL_IN_VALUE);
+                       if (requestMsg != null) {
+                               newToStr = requestMsg.getReplyTo().getAddress();
                        }
                }
 
@@ -1001,12 +976,8 @@
                if (msg.isServerSide()) {
                        MessageContext requestMsg = null;
 
-                       try {
-                               requestMsg = msg.getOperationContext()
-                                               
.getMessageContext(OperationContextFactory.MESSAGE_LABEL_IN_VALUE);
-                       } catch (AxisFault e) {
-                               throw new SandeshaException(e.getMessage());
-                       }
+                       requestMsg = msg.getOperationContext()
+                                       
.getMessageContext(OperationContextFactory.MESSAGE_LABEL_IN_VALUE);
 
                        RMMsgContext reqRMMsgCtx = 
MsgInitializer.initializeMessage(requestMsg);
                        Sequence requestSequence = (Sequence) 
reqRMMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
@@ -1072,11 +1043,9 @@
                        
rmMsg.setMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST, ackRequested);
                }
 
-               try {
-                       rmMsg.addSOAPEnvelope();
-               } catch (AxisFault e1) {
-                       throw new SandeshaException(e1.getMessage());
-               }
+
+               rmMsg.addSOAPEnvelope();
+
 
                // Retransmitter bean entry for the application message
                SenderBean appMsgEntry = new SenderBean();
@@ -1094,38 +1063,22 @@
                        // Send will be set to true at the sender.
                        msg.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, 
Sandesha2Constants.VALUE_TRUE);
                }
+               
                EndpointReference to = rmMsg.getTo();
                if (to!=null)
                        appMsgEntry.setToAddress(to.getAddress());
                
                appMsgEntry.setInternalSequenceID(internalSequenceId);
                storageManager.storeMessageContext(storageKey, msg);
-               retransmitterMgr.insert(appMsgEntry);
-               msg.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, 
Sandesha2Constants.VALUE_FALSE);
-
-               // changing the sender. This will set send to true.
-               TransportSender sender = msg.getTransportOut().getSender();
 
-               if (sender != null) {
-                       Sandesha2TransportOutDesc sandesha2TransportOutDesc = 
new Sandesha2TransportOutDesc();
-                       msg.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, 
storageKey);
-                       
msg.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, 
msg.getTransportOut());
-                       msg.setTransportOut(sandesha2TransportOutDesc);
-
-               }
+               msg.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, 
Sandesha2Constants.VALUE_FALSE);
+               retransmitterMgr.insert(appMsgEntry);
 
                // increasing the current handler index, so that the message 
will not be
                // going throught the SandeshaOutHandler again.
                msg.setCurrentHandlerIndex(msg.getCurrentHandlerIndex() + 1);
 
-               // sending the message through, other handlers and the
-               // Sandesha2TransportSender so that it get dumped to the 
storage.
-               AxisEngine engine = new 
AxisEngine(msg.getConfigurationContext());
-               try {
-                       engine.resumeSend(msg);
-               } catch (AxisFault e) {
-                       throw new SandeshaException(e);
-               }
+               SandeshaUtil.executeAndStore(rmMsg, storageKey);
 
                if (log.isDebugEnabled())
                        log.debug("Exit: 
ApplicationMsgProcessor::processResponseMessage");

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
 Wed Oct  4 22:15:55 2006
@@ -18,6 +18,9 @@
 package org.apache.sandesha2.msgprocessors;

 

 import java.util.Collection;

+import java.util.Map;

+

+import javax.xml.namespace.QName;

 

 import org.apache.axiom.om.OMElement;

 import org.apache.axis2.AxisFault;

@@ -126,6 +129,8 @@
                                                                                
                                                                                
                                                // created

                                                                                
                                                                                
                                                // sequnceID.

 

+

+                       

                        RMMsgContext createSeqResponse = 
RMMsgCreator.createCreateSeqResponseMsg(createSeqRMMsg, outMessage,

                                        newSequenceId, storageManager); // 
converting the blank out

                                                                                
                        // message in to a create


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
 Wed Oct  4 22:15:55 2006
@@ -258,7 +258,7 @@
        }

 

        private void addTerminateSequenceResponse(RMMsgContext 
terminateSeqRMMsg, String sequencePropertyKey,String sequenceId,

-                       StorageManager storageManager) throws SandeshaException 
{

+                       StorageManager storageManager) throws AxisFault {

 

                if (log.isDebugEnabled())

                        log.debug("Enter: 
TerminateSeqMsgProcessor::addTerminateSequenceResponse, " + sequenceId);

@@ -305,16 +305,11 @@
 

                AxisEngine engine = new 
AxisEngine(terminateSeqMsg.getConfigurationContext());

 

-               try {

-                       engine.send(outMessage);

-               } catch (AxisFault e) {

-                       String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendTerminateResponse,
 e

-                                       .toString());

-                       throw new SandeshaException(message, e);

-               }

+               engine.send(outMessage);

 

                String addressingNamespaceURI = 
SandeshaUtil.getSequenceProperty(sequencePropertyKey,

                                
Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE, 
storageManager);

+

                String anonymousURI = 
SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);

 

                if (anonymousURI.equals(toEPR.getAddress())) {

@@ -327,7 +322,7 @@
                        log.debug("Exit: 
TerminateSeqMsgProcessor::addTerminateSequenceResponse");

        }

 

-       public void processOutMessage(RMMsgContext rmMsgCtx) throws 
SandeshaException {

+       public void processOutMessage(RMMsgContext rmMsgCtx) throws AxisFault {

 

                if (log.isDebugEnabled())

                        log.debug("Enter: 
TerminateSeqMsgProcessor::processOutMessage");

@@ -363,28 +358,29 @@
                // TODO do processing of terminateMessagesCorrectly., create a 
new

                // message instead of sendign the one given by the serviceClient

                // TODO important

-               try {

-                       AxisOperation oldOPeration = 
msgContext.getAxisOperation();

-                       AxisOperation outInAxisOp = new OutInAxisOperation(new 
QName("temp"));

-                       

-                       AxisOperation referenceInOutOperation = 
msgContext.getAxisService().getOperation(new QName 
(Sandesha2Constants.RM_IN_OUT_OPERATION_NAME));

-                       if (referenceInOutOperation==null) {

-                               String messge = "Cant find the recerence RM 
InOut operation";

-                               throw new SandeshaException (messge);

-                       }

-                       

-                       // setting flows

-                       
outInAxisOp.setRemainingPhasesInFlow(referenceInOutOperation.getRemainingPhasesInFlow());

-//                     
outInAxisOp.setRemainingPhasesInFlow(oldOPeration.getRemainingPhasesInFlow());

-

-                       OperationContext opcontext = 
OperationContextFactory.createOperationContext(

-                                       
WSDL20_2004Constants.MEP_CONSTANT_OUT_IN, outInAxisOp);

-                       opcontext.setParent(msgContext.getServiceContext());

-                       
configurationContext.registerOperationContext(rmMsgCtx.getMessageId(), 
opcontext);

-               } catch (AxisFault e1) {

-                       throw new 
SandeshaException(SandeshaMessageHelper.getMessage(

-                                       
SandeshaMessageKeys.axisOperationRegisterError, e1.toString()));

-               }

+

+               AxisOperation outInAxisOp = new OutInAxisOperation(new 
QName("temp"));

+

+               AxisOperation referenceInOutOperation = 
msgContext.getAxisService()

+                               .getOperation(

+                                               new 
QName(Sandesha2Constants.RM_IN_OUT_OPERATION_NAME));

+               if (referenceInOutOperation == null) {

+                       String messge = "Cant find the recerence RM InOut 
operation";

+                       throw new SandeshaException(messge);

+               }

+

+               // setting flows

+               // 
outInAxisOp.setRemainingPhasesInFlow(referenceInOutOperation.getRemainingPhasesInFlow());

+               outInAxisOp.setRemainingPhasesInFlow(referenceInOutOperation

+                               .getRemainingPhasesInFlow());

+

+               OperationContext opcontext = OperationContextFactory

+                               .createOperationContext(

+                                               
WSDL20_2004Constants.MEP_CONSTANT_OUT_IN, outInAxisOp);

+               opcontext.setParent(msgContext.getServiceContext());

+               
configurationContext.registerOperationContext(rmMsgCtx.getMessageId(),

+                               opcontext);

+

 

                if (terminated != null && "true".equals(terminated)) {

                        String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.terminateAddedPreviously);

@@ -457,20 +453,9 @@
 

                seqPropMgr.insert(terminateAdded);

 

-               // This should be dumped to the storage by the sender

-               TransportOutDescription transportOut = 
msgContext.getTransportOut();

-               
rmMsgCtx.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, 
transportOut);

-               rmMsgCtx.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, key);

                rmMsgCtx.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, 
Sandesha2Constants.VALUE_TRUE);

-               rmMsgCtx.getMessageContext().setTransportOut(new 
Sandesha2TransportOutDesc());

-               // / addTerminateSeqTransaction.commit();

 

-               AxisEngine engine = new AxisEngine(configurationContext);

-               try {

-                       engine.send(msgContext);

-               } catch (AxisFault e) {

-                       throw new SandeshaException(e.getMessage());

-               }

+               SandeshaUtil.executeAndStore(rmMsgCtx, key);

 

                if (log.isDebugEnabled())

                        log.debug("Exit: 
TerminateSeqMsgProcessor::processOutMessage");


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
 Wed Oct  4 22:15:55 2006
@@ -54,6 +54,7 @@
                

                TerminateSequenceResponse tsResponse = 
(TerminateSequenceResponse)

                  
terminateResRMMsg.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ_RESPONSE);

+               

                String sequenceId = tsResponse.getIdentifier().getIdentifier();

                String sequencePropertyKey = 
SandeshaUtil.getSequencePropertyKey(terminateResRMMsg);

 


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=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java
 Wed Oct  4 22:15:55 2006
@@ -149,20 +149,9 @@
                                //this message should not be sent until it is 
qualified. I.e. till it is sent through the Sandesha2TransportSender.
                                
makeConnectionRMMessage.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, 
Sandesha2Constants.VALUE_FALSE);
                                
-                               
makeConnectionRMMessage.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, 
makeConnectionMsgStoreKey);
-                               
                                senderBeanMgr.insert(makeConnectionSenderBean);
                                
-                               TransportOutDescription transportOut = 
makeConnectionRMMessage.getMessageContext().getTransportOut();
-                               
makeConnectionRMMessage.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC,
 transportOut);
-
-                               Sandesha2TransportOutDesc 
sandesha2TransportOutDesc = new Sandesha2TransportOutDesc();
-                               
makeConnectionRMMessage.getMessageContext().setTransportOut(sandesha2TransportOutDesc);
-
-                               // sending the message once through 
Sandesha2TransportSender.
-                               AxisEngine engine = new 
AxisEngine(configurationContext);
-                               
engine.resumeSend(makeConnectionRMMessage.getMessageContext());
-                               
+                               
SandeshaUtil.executeAndStore(makeConnectionRMMessage, 
makeConnectionMsgStoreKey);
                        } catch (SandeshaStorageException e) {
                                e.printStackTrace();
                        } catch (SandeshaException e) {

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/transport/Sandesha2TransportSender.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/transport/Sandesha2TransportSender.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/transport/Sandesha2TransportSender.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/transport/Sandesha2TransportSender.java
 Wed Oct  4 22:15:55 2006
@@ -65,11 +65,10 @@
                AxisConfiguration axisConfiguration = 
configurationContext.getAxisConfiguration();

                

                StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(configurationContext,axisConfiguration);

-

+               

                
msgContext.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING,Sandesha2Constants.VALUE_TRUE);

                

                storageManager.updateMessageContext(key,msgContext);

-               

 

        }

 


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
 Wed Oct  4 22:15:55 2006
@@ -210,7 +210,7 @@
        }

 

        public static RMMsgContext generateAckMessage(RMMsgContext 
referenceRMMessage, String sequencePropertyKey ,String sequenceId,

-                       StorageManager storageManager) throws SandeshaException 
{

+                       StorageManager storageManager) throws AxisFault {

                if (log.isDebugEnabled())

                        log.debug("Enter: 
AcknowledgementManager::generateAckMessage");

 

@@ -231,12 +231,7 @@
 

                AxisOperation ackOperation = null;

 

-               try {

-                       ackOperation = 
AxisOperationFactory.getOperationDescription(WSDL20_2004Constants.MEP_URI_IN_ONLY);

-               } catch (AxisFault e) {

-                       throw new 
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.axisOperationError,
 e

-                                       .toString()), e);

-               }

+               ackOperation = 
AxisOperationFactory.getOperationDescription(WSDL20_2004Constants.MEP_URI_IN_ONLY);

 

                AxisOperation rmMsgOperation = 
referenceRMMessage.getMessageContext().getAxisOperation();

                if (rmMsgOperation != null) {

@@ -268,11 +263,8 @@
 

                // Setting new envelope

                SOAPEnvelope envelope = factory.getDefaultEnvelope();

-               try {

-                       ackMsgCtx.setEnvelope(envelope);

-               } catch (AxisFault e3) {

-                       throw new SandeshaException(e3.getMessage());

-               }

+

+               ackMsgCtx.setEnvelope(envelope);

 

                ackMsgCtx.setTo(acksTo);

 

@@ -297,14 +289,11 @@
                        if 
(referenceRMMessage.getMessageContext().getOperationContext() == null) {

                                // operation context will be null when doing in 
a GLOBAL

                                // handler.

-                               try {

-                                       AxisOperation op = 
AxisOperationFactory.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_IN_OUT);

-                                       OperationContext opCtx = new 
OperationContext(op);

-                                       
referenceRMMessage.getMessageContext().setAxisOperation(op);

-                                       
referenceRMMessage.getMessageContext().setOperationContext(opCtx);

-                               } catch (AxisFault e2) {

-                                       throw new 
SandeshaException(e2.getMessage());

-                               }

+

+                               AxisOperation op = 
AxisOperationFactory.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_IN_OUT);

+                               OperationContext opCtx = new 
OperationContext(op);

+                               
referenceRMMessage.getMessageContext().setAxisOperation(op);

+                               
referenceRMMessage.getMessageContext().setOperationContext(opCtx);

                        }

 

                        
referenceRMMessage.getMessageContext().getOperationContext().setProperty(

@@ -373,17 +362,18 @@
                        ackBean.setTimeToSend(timeToSend);

                        storageManager.storeMessageContext(key, ackMsgCtx);

 

+                       
ackMsgCtx.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, 
Sandesha2Constants.VALUE_FALSE);

+                       

                        // inserting the new ack.

                        retransmitterBeanMgr.insert(ackBean);

                        // / asyncAckTransaction.commit();

 

                        // passing the message through sandesha2sender

-                       
ackMsgCtx.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, 
ackMsgCtx.getTransportOut());

                        
ackMsgCtx.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, 
Sandesha2Constants.VALUE_TRUE);

-                       
ackMsgCtx.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, key);

-                       ackMsgCtx.setTransportOut(new 
Sandesha2TransportOutDesc());

                        ackRMMsgCtx = 
MsgInitializer.initializeMessage(ackMsgCtx);

-

+                       

+                       SandeshaUtil.executeAndStore(ackRMMsgCtx, key);

+                       

                        
SandeshaUtil.startSenderForTheSequence(configurationContext, sequenceId);

                }

 


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java 
Wed Oct  4 22:15:55 2006
@@ -415,8 +415,11 @@
 
                        // end hack
 
+                       AxisOperation operation = 
AxisOperationFactory.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY);
+
+                       
                        //TODO this fails when the in message is in only. Fault 
is thrown at the InOnlyAxisOperation
-                       MessageContext faultMsgContext = 
Utils.createOutMessageContext(referenceMessage);
+                       MessageContext faultMsgContext = 
SandeshaUtil.createNewRelatedMessageContext(referenceRMMsgContext, operation); 
//Utils.createOutMessageContext(referenceMessage);
 
                        // setting contexts.
                        
faultMsgContext.setAxisServiceGroup(referenceMessage.getAxisServiceGroup());
@@ -427,7 +430,6 @@
                        
faultMsgContext.setServiceContext(referenceMessage.getServiceContext());
                        
faultMsgContext.setServiceContextID(referenceMessage.getServiceContextID());
 
-                       AxisOperation operation = 
AxisOperationFactory.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY);
 
                        OperationContext operationContext = new 
OperationContext(operation);
 
@@ -465,6 +467,8 @@
                                        .getRMNamespaceValue());
 
                        RMMsgContext faultRMMsgCtx = 
MsgInitializer.initializeMessage(faultMsgContext);
+                       
+                       
faultRMMsgCtx.setAction(SpecSpecificConstants.getFaultAction 
(addressingNamespaceURI));
 
                        if (log.isDebugEnabled())
                                log.debug("Exit: FaultManager::getFault");

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java 
Wed Oct  4 22:15:55 2006
@@ -408,13 +408,16 @@
                                                                                
                                                                                
                                // messages

                                                                                
                                                                                
                                // correctly.

 

-               AxisOperation teferenceMsgOperation = 
referenceMessage.getAxisOperation();

+               //using the Sandesha2 RMOutInOperation as the reference 
operation.

+               AxisOperation referenceOperation = 
referenceMessage.getAxisService()

+                                       .getOperation(new QName 
(Sandesha2Constants.RM_IN_OUT_OPERATION_NAME));

+               

                AxisOperation terminateMsgOperation = 
terminateMessage.getAxisOperation();

-               if (teferenceMsgOperation != null) {

-                       
terminateMsgOperation.setPhasesOutFlow(teferenceMsgOperation.getPhasesOutFlow());

-                       
terminateMsgOperation.setPhasesOutFaultFlow(teferenceMsgOperation.getPhasesOutFaultFlow());

-                       
terminateMsgOperation.setPhasesInFaultFlow(teferenceMsgOperation.getPhasesInFaultFlow());

-                       
terminateMsgOperation.setRemainingPhasesInFlow(teferenceMsgOperation.getRemainingPhasesInFlow());

+               if (referenceOperation != null) {

+                       
terminateMsgOperation.setPhasesOutFlow(referenceOperation.getPhasesOutFlow());

+                       
terminateMsgOperation.setPhasesOutFaultFlow(referenceOperation.getPhasesOutFaultFlow());

+                       
terminateMsgOperation.setPhasesInFaultFlow(referenceOperation.getPhasesInFaultFlow());

+                       
terminateMsgOperation.setRemainingPhasesInFlow(referenceOperation.getRemainingPhasesInFlow());

                }

 

                String rmVersion = 
SandeshaUtil.getRMVersion(sequencePropertyKey, storageManager);


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java 
Wed Oct  4 22:15:55 2006
@@ -51,7 +51,9 @@
 import org.apache.axis2.description.AxisService;

 import org.apache.axis2.description.AxisServiceGroup;

 import org.apache.axis2.description.Parameter;

+import org.apache.axis2.description.TransportOutDescription;

 import org.apache.axis2.engine.AxisConfiguration;

+import org.apache.axis2.engine.AxisEngine;

 import org.apache.axis2.engine.Handler;

 import org.apache.axis2.util.UUIDGenerator;

 import org.apache.commons.logging.Log;

@@ -68,6 +70,7 @@
 import org.apache.sandesha2.storage.StorageManager;

 import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;

 import org.apache.sandesha2.storage.beans.SequencePropertyBean;

+import org.apache.sandesha2.transport.Sandesha2TransportOutDesc;

 import org.apache.sandesha2.workers.Invoker;

 import org.apache.sandesha2.workers.Sender;

 import org.apache.sandesha2.wsrm.AckRequested;

@@ -1044,4 +1047,75 @@
                

                return false;

        }

+       

+       public static void executeAndStore (RMMsgContext rmMsgContext, String 
storageKey) throws AxisFault {

+               

+               MessageContext msgContext = rmMsgContext.getMessageContext();

+               ConfigurationContext configurationContext = 
msgContext.getConfigurationContext();

+               

+               
rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.CREATE_SEQ);

+

+

+               // message will be stored in the Sandesha2TransportSender

+               msgContext.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, 
storageKey);

+

+               TransportOutDescription transportOut = 
msgContext.getTransportOut();

+

+               
msgContext.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, 
transportOut);

+               msgContext.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, 
Sandesha2Constants.VALUE_TRUE);

+               msgContext.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, 
storageKey);

+

+               Sandesha2TransportOutDesc sandesha2TransportOutDesc = new 
Sandesha2TransportOutDesc();

+               msgContext.setTransportOut(sandesha2TransportOutDesc);

+

+               // sending the message once through Sandesha2TransportSender.

+               AxisEngine engine = new AxisEngine(configurationContext);

+

+               if (msgContext.isPaused())

+                       engine.resumeSend(msgContext);

+               else

+                       engine.send(msgContext);

+

+

+       }

+       

+       public static void modifyExecutionChainForStoring (MessageContext 
message) {

+               

+               Object property = 
message.getProperty(Sandesha2Constants.RETRANSMITTABLE_PHASES);

+               if (property!=null)

+                       return; //Phases are already set. Dont hv to redo.

+               

+               TransportOutDescription transportOutDescription = 
message.getTransportOut();

+               if (!(transportOutDescription instanceof 
Sandesha2TransportOutDesc))

+                       return; //This message is aimed to be stored only if, 
Sandesha2TransportOutDescription is set.

+               

+               ArrayList executionChain = message.getExecutionChain();

+               ArrayList retransmittablePhaseNames = 
getRetransmittablePhaseNameList();

+               ArrayList retransmittablePhases = new ArrayList ();

+               

+               for (Iterator it=executionChain.iterator();it.hasNext();) {

+                       Handler handler = (Handler) it.next();

+                       

+                       if 
(retransmittablePhaseNames.contains(handler.getName())) {

+                               retransmittablePhases.add(handler);

+                               

+                               it.remove();

+                       }

+               }

+               

+               message.setProperty(Sandesha2Constants.RETRANSMITTABLE_PHASES, 
retransmittablePhases);

+       }

+       

+       private static ArrayList getRetransmittablePhaseNameList () {

+               

+               //TODO get this phase list from a property

+               

+               String security = "Security";

+               

+               ArrayList phases = new ArrayList ();

+               phases.add(security);

+               

+               return phases;

+       }

+       

 }


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java
 Wed Oct  4 22:15:55 2006
@@ -314,5 +314,13 @@
                return null;

        }

 

+       public static String getFaultAction (String addressingNamespace) {

+               if 
(AddressingConstants.Final.WSA_NAMESPACE.equals(addressingNamespace))

+                       return AddressingConstants.Final.WSA_FAULT_ACTION;

+               else if 
(AddressingConstants.Submission.WSA_NAMESPACE.equals(addressingNamespace))

+                       return AddressingConstants.Submission.WSA_FAULT_ACTION;

+               

+               return null;

+       }

 

 }


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
 Wed Oct  4 22:15:55 2006
@@ -357,7 +357,7 @@
        }

 

        public static void addTerminateSequenceMessage(RMMsgContext 
referenceMessage, String outSequenceId,

-                       String sequencePropertyKey, StorageManager 
storageManager) throws SandeshaException {

+                       String sequencePropertyKey, StorageManager 
storageManager) throws AxisFault {

 

                ConfigurationContext configurationContext = 
referenceMessage.getMessageContext().getConfigurationContext();

 

@@ -414,11 +414,7 @@
                        
terminateRMMessage.setProperty(MessageContextConstants.TRANSPORT_URL, 
transportToBean.getValue());

                }

 

-               try {

-                       terminateRMMessage.addSOAPEnvelope();

-               } catch (AxisFault e) {

-                       throw new SandeshaException(e.getMessage());

-               }

+               terminateRMMessage.addSOAPEnvelope();

 

                String key = SandeshaUtil.getUUID();

 

@@ -458,20 +454,10 @@
 

                seqPropMgr.insert(terminateAdded);

 

-               // This should be dumped to the storage by the sender

-               TransportOutDescription transportOut = 
terminateRMMessage.getMessageContext().getTransportOut();

-               
terminateRMMessage.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, 
transportOut);

-               
terminateRMMessage.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, key);

                
terminateRMMessage.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, 
Sandesha2Constants.VALUE_TRUE);

-               terminateRMMessage.getMessageContext().setTransportOut(new 
Sandesha2TransportOutDesc());

+               

                // / addTerminateSeqTransaction.commit();

-

-               AxisEngine engine = new AxisEngine(configurationContext);

-               try {

-                       engine.send(terminateRMMessage.getMessageContext());

-               } catch (AxisFault e) {

-                       throw new SandeshaException(e.getMessage());

-               }

+               SandeshaUtil.executeAndStore(terminateRMMessage, key);

        }

 

 }


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=453108&r1=453107&r2=453108
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
 Wed Oct  4 22:15:55 2006
@@ -104,6 +104,7 @@
                        updateMessage(msgCtx);
 
                        int messageType = senderBean.getMessageType();
+                       
 //                     if (messageType == 
Sandesha2Constants.MessageTypes.APPLICATION) {
 //                             Sequence sequence = (Sequence) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
 //                             String sequenceID = 
sequence.getIdentifier().getIdentifier();
@@ -119,59 +120,66 @@
                                // sequence.
                                // TODO do piggybacking based on wsa:To
                                        
-                                       
-                                       
                                
AcknowledgementManager.piggybackAcksIfPresent(rmMsgCtx, storageManager);
                        }
 
                        // sending the message
-                       TransportOutDescription transportOutDescription = 
msgCtx.getTransportOut();
                        
                        //if a different TransportOutDesc hs already been set, 
it will be used instead
                        //of the one from te MessageContext.
                        
                        if (transportOut!=null)
-                               transportOutDescription = transportOut;
+                               msgCtx.setTransportOut(transportOut);
                        
-                       TransportSender transportSender = 
transportOutDescription.getSender();
 
                        boolean successfullySent = false;
-                       if (transportSender != null) {
-
-                               // 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);
-                               
-                               try {
 
-                                       // had to fully build the SOAP envelope 
to support
-                                       // retransmissions.
-                                       // Otherwise a 'parserAlreadyAccessed' 
exception could
-                                       // get thrown in retransmissions.
-                                       // But this has a performance reduction.
-                                       msgCtx.getEnvelope().build();
-
-                                       if (log.isDebugEnabled())
-                                               log.debug("Invoking using 
transportSender " + transportSender + ", msgCtx="
-                                                               + 
msgCtx.getEnvelope().getHeader());
-                                       // TODO change this to cater for 
security.
-                                       transportSender.invoke(msgCtx);
-                                       successfullySent = true;
-                               } catch (Exception e) {
-                                       // TODO Auto-generated catch block
-                                       String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.sendMsgError, e
-                                                       .toString());
-                                       log.error (message, e);
-
-                               } finally {
-                                       transaction = 
storageManager.getTransaction();
-                                       
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, 
Sandesha2Constants.VALUE_TRUE);
+                       // 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);
+
+                       try {
+
+                               // had to fully build the SOAP envelope to 
support
+                               // retransmissions.
+                               // Otherwise a 'parserAlreadyAccessed' 
exception could
+                               // get thrown in retransmissions.
+                               // But this has a performance reduction.
+                               msgCtx.getEnvelope().build();
+
+                               ArrayList retransmittablePhases = (ArrayList) 
msgCtx.getProperty(Sandesha2Constants.RETRANSMITTABLE_PHASES);
+                               if (retransmittablePhases!=null) {
+                                       
msgCtx.setExecutionChain(retransmittablePhases);
+                               } else {
+                                       ArrayList emptyExecutionChain = new 
ArrayList ();
+                                       
msgCtx.setExecutionChain(emptyExecutionChain);
                                }
+                               
+                               msgCtx.setCurrentHandlerIndex(0);
+                               msgCtx.setCurrentPhaseIndex(0);
+                               msgCtx.setPaused(false);
+                       
+                               AxisEngine engine = new AxisEngine 
(msgCtx.getConfigurationContext());
+                               engine.resumeSend(msgCtx);
+                               
+                               successfullySent = true;
+                       } catch (Exception e) {
+                               // TODO Auto-generated catch block
+                               String message = 
SandeshaMessageHelper.getMessage(
+                                               
SandeshaMessageKeys.sendMsgError, e.toString());
+                               log.error(message, e);
+
+                       } finally {
+                               transaction = storageManager.getTransaction();
+                               
msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION,
+                                               Sandesha2Constants.VALUE_TRUE);
                        }
 
                        // update or delete only if the object is still present.
-                       SenderBean bean1 = 
senderBeanMgr.retrieve(senderBean.getMessageID());
+                       SenderBean bean1 = senderBeanMgr
+                                       .retrieve(senderBean.getMessageID());
                        if (bean1 != null) {
                                if (senderBean.isReSend()) {
                                        
bean1.setSentCount(senderBean.getSentCount());



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

Reply via email to