Author: chamikara
Date: Tue May 29 22:21:03 2007
New Revision: 542752

URL: http://svn.apache.org/viewvc?view=rev&rev=542752
Log:
Did the commit '542750' to the branch.

Modified:
    
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java
    
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
    
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/LastMessageProcessor.java
    
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
    
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
    
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
    
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
    
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/SpecSpecificConstants.java
    
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java

Modified: 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java?view=diff&rev=542752&r1=542751&r2=542752
==============================================================================
--- 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java
 (original)
+++ 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java
 Tue May 29 22:21:03 2007
@@ -269,9 +269,11 @@
                
                int LAST_MESSAGE = 12;
 
-    int DUPLICATE_MESSAGE = 13;
+               int DUPLICATE_MESSAGE = 13;
+               
+               int POLL_RESPONSE_MESSAGE = 14;
 
-               int MAX_MESSAGE_TYPE = 13;
+               int MAX_MESSAGE_TYPE = 14;
        }
 
        public interface MessageParts {

Modified: 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?view=diff&rev=542752&r1=542751&r2=542752
==============================================================================
--- 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 (original)
+++ 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 Tue May 29 22:21:03 2007
@@ -530,7 +530,13 @@
                appMsgEntry.setMessageID(rmMsg.getMessageId());
                appMsgEntry.setMessageNumber(messageNumber);
                appMsgEntry.setLastMessage(lastMessage);
-               
appMsgEntry.setMessageType(Sandesha2Constants.MessageTypes.APPLICATION);
+               
+               SOAPEnvelope envelope = rmMsg.getSOAPEnvelope();
+               if (lastMessage && envelope!=null && 
envelope.getBody().getFirstOMChild()==null)
+                       
appMsgEntry.setMessageType(Sandesha2Constants.MessageTypes.LAST_MESSAGE);
+               else
+                       
appMsgEntry.setMessageType(Sandesha2Constants.MessageTypes.APPLICATION);
+               
                appMsgEntry.setInboundSequenceId(inboundSequence);
                appMsgEntry.setInboundMessageNumber(inboundMessageNumber);
                if (outSequenceID == null) {

Modified: 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/LastMessageProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/LastMessageProcessor.java?view=diff&rev=542752&r1=542751&r2=542752
==============================================================================
--- 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/LastMessageProcessor.java
 (original)
+++ 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/LastMessageProcessor.java
 Tue May 29 22:21:03 2007
@@ -9,10 +9,8 @@
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.description.AxisOperationFactory;
-import org.apache.axis2.description.OutInAxisOperation;
 import org.apache.axis2.engine.AxisEngine;
-import org.apache.axis2.util.MessageContextBuilder;
+import org.apache.axis2.transport.RequestResponseTransport;
 import org.apache.sandesha2.RMMsgContext;
 import org.apache.sandesha2.Sandesha2Constants;
 import org.apache.sandesha2.storage.StorageManager;
@@ -21,11 +19,9 @@
 import org.apache.sandesha2.storage.beanmanagers.RMSBeanMgr;
 import org.apache.sandesha2.storage.beans.RMDBean;
 import org.apache.sandesha2.storage.beans.RMSBean;
-import org.apache.sandesha2.util.MsgInitializer;
 import org.apache.sandesha2.util.SandeshaUtil;
 import org.apache.sandesha2.util.SpecSpecificConstants;
 import org.apache.sandesha2.wsrm.Sequence;
-import org.ietf.jgss.MessageProp;
 
 public class LastMessageProcessor  implements MsgProcessor {
 
@@ -67,9 +63,11 @@
                        //there is a RMS sequence without a LastMsg entry
                        
                        MessageContext msgContext = 
rmMsgCtx.getMessageContext();
-//                     MessageContext outMessage = 
MessageContextBuilder.createOutMessageContext(msgContext);
                        
-                       MessageContext outMessageContext = new MessageContext 
();
+                       AxisOperation operation = 
SpecSpecificConstants.getWSRMOperation(Sandesha2Constants.MessageTypes.LAST_MESSAGE,
 
+                                       rmMsgCtx.getRMSpecVersion() , 
msgContext.getAxisService());
+                       MessageContext outMessageContext = 
SandeshaUtil.createNewRelatedMessageContext(rmMsgCtx, operation);
+                       
                        outMessageContext.setServerSide(true);
                        
                        
outMessageContext.setTransportOut(msgContext.getTransportOut());
@@ -85,16 +83,7 @@
                        if (outMessageContext.getOptions()==null)
                                outMessageContext.setOptions(new Options ());
                        
-                       
outMessageContext.setConfigurationContext(msgContext.getConfigurationContext());
-                       
outMessageContext.setServiceContext(msgContext.getServiceContext());
-                       
outMessageContext.setAxisService(msgContext.getAxisService());
-                       
-                       AxisOperation operation = 
SpecSpecificConstants.getWSRMOperation(Sandesha2Constants.MessageTypes.LAST_MESSAGE,
 
-                                                                               
                                                        
rmMsgCtx.getRMSpecVersion() , msgContext.getAxisService());
-                       
-                       OperationContext operationContext = new 
OperationContext (operation,msgContext.getServiceContext());
-                       operationContext.addMessageContext(outMessageContext);
-                       
+                       OperationContext operationContext = 
outMessageContext.getOperationContext();
                        String inboundSequenceId = (String) 
msgContext.getProperty(Sandesha2Constants.MessageContextProperties.INBOUND_SEQUENCE_ID);
                        
operationContext.setProperty(Sandesha2Constants.MessageContextProperties.INBOUND_SEQUENCE_ID,
 
                                        inboundSequenceId);
@@ -103,13 +92,12 @@
                        
operationContext.setProperty(Sandesha2Constants.MessageContextProperties.INBOUND_MESSAGE_NUMBER,
 
                                        inboundMSgNo);
                        
-                       outMessageContext.setAxisOperation(operation);
-                       outMessageContext.setOperationContext(operationContext);
-                       
                        
outMessageContext.getOptions().setAction(Sandesha2Constants.SPEC_2005_02.Actions.ACTION_LAST_MESSAGE);
 
                        //says that the inbound msg of this was a LastMessage - 
so the new msg will also be a LastMessage
                        
outMessageContext.setProperty(Sandesha2Constants.MessageContextProperties.INBOUND_LAST_MESSAGE,
 Boolean.TRUE);
+                       
outMessageContext.setProperty(RequestResponseTransport.TRANSPORT_CONTROL, 
msgContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL));
+                       msgContext.getOperationContext().setProperty 
(Constants.RESPONSE_WRITTEN,Constants.VALUE_TRUE);
                        
                        AxisEngine engine = new AxisEngine 
(rmMsgCtx.getConfigurationContext());
                        engine.send(outMessageContext);

Modified: 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java?view=diff&rev=542752&r1=542751&r2=542752
==============================================================================
--- 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
 (original)
+++ 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
 Tue May 29 22:21:03 2007
@@ -11,7 +11,9 @@
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.OutOnlyAxisOperation;
 import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.transport.RequestResponseTransport;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.sandesha2.RMMsgContext;
@@ -168,7 +170,10 @@
                setTransportProperties (returnMessage, pollMessage);
                
                // Link the response to the request
-               OperationContext context = 
pollMessage.getMessageContext().getOperationContext();
+
+               AxisOperation operation = 
SpecSpecificConstants.getWSRMOperation(Sandesha2Constants.MessageTypes.POLL_RESPONSE_MESSAGE,
 pollMessage.getRMSpecVersion(), 
pollMessage.getMessageContext().getAxisService());
+               OperationContext context = new OperationContext (operation, 
pollMessage.getMessageContext().getServiceContext());
+               
                if(context == null) {
                        AxisOperation oldOperation = 
returnMessage.getAxisOperation();
 
@@ -181,12 +186,11 @@
                returnMessage.setOperationContext(context);
                
                
returnMessage.setProperty(Sandesha2Constants.MAKE_CONNECTION_RESPONSE, 
Boolean.TRUE);
+               
returnMessage.setProperty(RequestResponseTransport.TRANSPORT_CONTROL, 
pollMessage.getProperty(RequestResponseTransport.TRANSPORT_CONTROL));
                
-               // Update the senderBeans send time.
-               boolean continueSend = 
-                       
MessageRetransmissionAdjuster.adjustRetransmittion(returnRMMsg, 
matchingMessage, returnRMMsg.getConfigurationContext(), storageManager);
+               //marking pollMessage as responsed
+               
pollMessage.getMessageContext().getOperationContext().setProperty 
(Constants.RESPONSE_WRITTEN,Constants.VALUE_TRUE);
                
-               //
                // Commit the current transaction, so that the SenderWorker can 
do it's own locking
                if(transaction != null && transaction.isActive()) 
transaction.commit();
                
@@ -194,11 +198,10 @@
                //This will allow Sandesha2 to consider both of following 
senarios equally.
                //  1. A message being sent by the Sender thread.
                //  2. A message being sent as a reply to an MakeConnection.
-               if (continueSend) {
-                       SenderWorker worker = new SenderWorker 
(pollMessage.getConfigurationContext(), matchingMessage, 
returnRMMsg.getRMSpecVersion());
-                       worker.setMessage(returnRMMsg);
-                       worker.run();
-               }
+               SenderWorker worker = new SenderWorker 
(pollMessage.getConfigurationContext(), matchingMessage, 
pollMessage.getRMSpecVersion());
+               worker.setMessage(returnRMMsg);
+               worker.run();
+
                
                if(log.isDebugEnabled()) log.debug("Exit: 
MakeConnectionProcessor::replyToPoll");
        }

Modified: 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java?view=diff&rev=542752&r1=542751&r2=542752
==============================================================================
--- 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
 (original)
+++ 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
 Tue May 29 22:21:03 2007
@@ -209,7 +209,12 @@
 
                          SenderBeanMgr senderBeanMgr = 
storageManager.getSenderBeanMgr();
                          SenderBean findSenderBean = new SenderBean ();
-                         
findSenderBean.setMessageType(Sandesha2Constants.MessageTypes.APPLICATION);
+                         
+                         if 
(rmMsgCtx.getMessageType()==Sandesha2Constants.MessageTypes.LAST_MESSAGE)
+                                 
findSenderBean.setMessageType(Sandesha2Constants.MessageTypes.LAST_MESSAGE);
+                         else
+                                 
findSenderBean.setMessageType(Sandesha2Constants.MessageTypes.APPLICATION);
+                         
                          
findSenderBean.setInboundSequenceId(sequence.getIdentifier().getIdentifier());
                          
findSenderBean.setInboundMessageNumber(sequence.getMessageNumber().getMessageNumber());
                          findSenderBean.setSend(true);
@@ -296,7 +301,10 @@
                                SenderBean sender = 
storageManager.getSenderBeanMgr().findUnique(matcher);
                                if(sender != null) {
                                        if(log.isDebugEnabled()) 
log.debug("Deleting sender for sync-2-way message");
+                                       
                                        
storageManager.removeMessageContext(sender.getMessageContextRefKey());
+                                       
+                                       //this causes the request to be deleted 
even without an ack.
                                        
storageManager.getSenderBeanMgr().delete(messageId);
                                        
                                        // Try and terminate the corresponding 
outbound sequence

Modified: 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java?view=diff&rev=542752&r1=542751&r2=542752
==============================================================================
--- 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
 (original)
+++ 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
 Tue May 29 22:21:03 2007
@@ -459,44 +459,30 @@
                
                String SOAPNamespaceValue = factory.getSoapVersionURI();
                
-               if 
(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPNamespaceValue)) {
-                       reason.addSOAPText(reasonText);
-                       
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME, 
faultCode);
-                       
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME, 
reason);
-                       
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, 
detail);
-               } else if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals 
(SOAPNamespaceValue)) {
-                       reason.setText(data.getReason());
-                       
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_CODE_LOCAL_NAME, 
faultCode);
-                       
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, 
detail);
-                       
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_STRING_LOCAL_NAME, 
reason);
-                       // Need to send this message as the Axis Layer doesn't 
set the "SequenceFault" header
-                       MessageContext faultMessageContext = 
-                               
MessageContextBuilder.createFaultMessageContext(referenceRMMsgContext.getMessageContext(),
 null);
+               reason.setText(data.getReason());
+               
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_CODE_LOCAL_NAME, 
faultCode);
+               
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, 
detail);
+               
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_STRING_LOCAL_NAME, 
reason);
+               // Need to send this message as the Axis Layer doesn't set the 
"SequenceFault" header
+               MessageContext faultMessageContext = 
+               
MessageContextBuilder.createFaultMessageContext(referenceRMMsgContext.getMessageContext(),
 null);
 
-                       
SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMessageContext, 
Sandesha2Constants.SOAPVersion.v1_1, data, 
referenceRMMsgContext.getRMNamespaceValue());                     
+               
SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMessageContext, 
Sandesha2Constants.SOAPVersion.v1_1, data, 
referenceRMMsgContext.getRMNamespaceValue());                     
                        
-                       
referenceRMMsgContext.getMessageContext().getOperationContext().setProperty(
+               
referenceRMMsgContext.getMessageContext().getOperationContext().setProperty(
                                        
org.apache.axis2.Constants.RESPONSE_WRITTEN, Constants.VALUE_TRUE);
                                                
-                       // Set the action
-                       faultMessageContext.setWSAAction(
+               // Set the action
+               faultMessageContext.setWSAAction(
                                        
SpecSpecificConstants.getAddressingFaultAction(referenceRMMsgContext.getRMSpecVersion()));
                        
-                       if (log.isDebugEnabled())
-                               log.debug("Sending fault message " + 
faultMessageContext.getEnvelope().getHeader());
-                       // Send the message
-                       AxisEngine engine = new 
AxisEngine(faultMessageContext.getConfigurationContext());
-                       engine.sendFault(faultMessageContext);
+               if (log.isDebugEnabled())
+                       log.debug("Sending fault message " + 
faultMessageContext.getEnvelope().getHeader());
+               // Send the message
+               AxisEngine engine = new 
AxisEngine(faultMessageContext.getConfigurationContext());
+               engine.sendFault(faultMessageContext);
                        
-                       return;
-               } else {
-                       String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.unknownSoapVersion);
-                       throw new SandeshaException (message);
-               }
-               AxisFault fault = new 
AxisFault(faultColdValue.getTextAsQName(), data.getReason(), "", "", 
data.getDetail());
-         
fault.setFaultAction(SpecSpecificConstants.getAddressingFaultAction(referenceRMMsgContext.getRMSpecVersion()));
-               throw fault;            
-               
+               return;
        }
 
        public static boolean isRMFault (String faultSubcodeValue) {

Modified: 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java?view=diff&rev=542752&r1=542751&r2=542752
==============================================================================
--- 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
 (original)
+++ 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
 Tue May 29 22:21:03 2007
@@ -419,6 +419,9 @@
                        
newMessageContext.setProperty(MessageContext.TRANSPORT_OUT, referenceMessage
                                        
.getProperty(MessageContext.TRANSPORT_OUT));
                        
+                       
newMessageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, 
+                                       
referenceMessage.getProperty(AddressingConstants.WS_ADDRESSING_VERSION));
+                       
                        copyConfiguredProperties 
(referenceMessage,newMessageContext);
 
                        //copying the serverSide property

Modified: 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/SpecSpecificConstants.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/SpecSpecificConstants.java?view=diff&rev=542752&r1=542751&r2=542752
==============================================================================
--- 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/SpecSpecificConstants.java
 (original)
+++ 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/SpecSpecificConstants.java
 Tue May 29 22:21:03 2007
@@ -349,10 +349,13 @@
                        case Sandesha2Constants.MessageTypes.LAST_MESSAGE:
                                result = 
service.getOperation(Sandesha2Constants.RM_OUT_ONLY_OPERATION);
                                break;                  
-      case Sandesha2Constants.MessageTypes.DUPLICATE_MESSAGE:
-        result = 
service.getOperation(Sandesha2Constants.RM_DUPLICATE_OPERATION);
-        break;
-      }
+                       case Sandesha2Constants.MessageTypes.DUPLICATE_MESSAGE:
+                               result = 
service.getOperation(Sandesha2Constants.RM_DUPLICATE_OPERATION);
+                               break;
+                       case 
Sandesha2Constants.MessageTypes.POLL_RESPONSE_MESSAGE:
+                               result = 
service.getOperation(Sandesha2Constants.RM_OUT_ONLY_OPERATION);
+                               break;  
+                       }
                } else 
if(rmSpecLevel.equals(Sandesha2Constants.SPEC_VERSIONS.v1_1)) {
                        switch(messageType) {
                        case Sandesha2Constants.MessageTypes.CREATE_SEQ:
@@ -365,6 +368,9 @@
                        case Sandesha2Constants.MessageTypes.ACK_REQUEST:
                                result = 
service.getOperation(Sandesha2Constants.RM_OUT_ONLY_OPERATION);
                                break;
+                       case 
Sandesha2Constants.MessageTypes.POLL_RESPONSE_MESSAGE:
+                               result = 
service.getOperation(Sandesha2Constants.RM_OUT_ONLY_OPERATION);
+                               break;          
                        }
                }
                

Modified: 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java?view=diff&rev=542752&r1=542751&r2=542752
==============================================================================
--- 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java
 (original)
+++ 
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/workers/SenderWorker.java
 Tue May 29 22:21:03 2007
@@ -35,12 +35,15 @@
 import org.apache.sandesha2.storage.SandeshaStorageException;
 import org.apache.sandesha2.storage.StorageManager;
 import org.apache.sandesha2.storage.Transaction;
+import org.apache.sandesha2.storage.beanmanagers.RMDBeanMgr;
 import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
+import org.apache.sandesha2.storage.beans.RMDBean;
 import org.apache.sandesha2.storage.beans.RMSBean;
 import org.apache.sandesha2.storage.beans.SenderBean;
 import org.apache.sandesha2.util.AcknowledgementManager;
 import org.apache.sandesha2.util.MessageRetransmissionAdjuster;
 import org.apache.sandesha2.util.MsgInitializer;
+import org.apache.sandesha2.util.RMMsgCreator;
 import org.apache.sandesha2.util.SandeshaUtil;
 import org.apache.sandesha2.util.SpecSpecificConstants;
 import org.apache.sandesha2.util.TerminateManager;
@@ -60,7 +63,12 @@
        private SenderBean senderBean = null;
        private RMMsgContext messageToSend = null;
        private String rmVersion = null;
+       private RMDBean incomingSequenceBean = null;
        
+       public void setIncomingSequenceBean(RMDBean incomingSequenceBean) {
+               this.incomingSequenceBean = incomingSequenceBean;
+       }
+
        public SenderWorker (ConfigurationContext configurationContext, 
SenderBean senderBean, String rmVersion) {
                this.configurationContext = configurationContext;
                this.senderBean = senderBean;
@@ -134,16 +142,20 @@
                        // or the message can't go anywhere. If there is 
nothing here then we leave the
                        // message in the sender queue, and a MakeConnection 
(or a retransmitted request)
                        // will hopefully pick it up soon.
-                       RequestResponseTransport t = null;
                        Boolean makeConnection = (Boolean) 
msgCtx.getProperty(Sandesha2Constants.MAKE_CONNECTION_RESPONSE);
                        EndpointReference toEPR = msgCtx.getTo();
 
                        MessageContext inMsg = null;
                        OperationContext op = msgCtx.getOperationContext();
-                       if (op != null)
-                               inMsg = 
op.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
-                       if (inMsg != null)
-                               t = (RequestResponseTransport) 
inMsg.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
+                       
+                       RequestResponseTransport t = (RequestResponseTransport) 
msgCtx.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
+                       
+                       if (t==null) {
+                               if (op != null)
+                                       inMsg = 
op.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                               if (inMsg != null)
+                                       t = (RequestResponseTransport) 
inMsg.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
+                       }
 
                        // If we are anonymous, and this is not a 
makeConnection, then we must have a transport waiting
                        if((toEPR==null || toEPR.hasAnonymousAddress()) &&
@@ -386,7 +398,8 @@
                
                // Lock the message to enable retransmission update
                senderBean = 
storageManager.getSenderBeanMgr().retrieve(senderBean.getMessageID());
-
+               int messageType = senderBean.getMessageType();
+               
                // Only continue if we find a SenderBean
                if (senderBean == null)
                        return false;
@@ -397,7 +410,9 @@
                
                Identifier id = null;
 
-               if(senderBean.getMessageType() == 
Sandesha2Constants.MessageTypes.APPLICATION) {
+               if(messageType == Sandesha2Constants.MessageTypes.APPLICATION ||
+                  messageType == Sandesha2Constants.MessageTypes.LAST_MESSAGE) 
{
+                       
                        String namespace = 
SpecSpecificConstants.getRMNamespaceValue(rmVersion);
                        Sequence sequence = (Sequence) 
rmMsgContext.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
                        if(sequence == null) {
@@ -417,17 +432,18 @@
                                sequence.setIdentifier(id);
                                
                                
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.SEQUENCE, sequence);
+                               
                        }
                        
-               } else if(senderBean.getMessageType() == 
Sandesha2Constants.MessageTypes.TERMINATE_SEQ) {
+               } else if(messageType == 
Sandesha2Constants.MessageTypes.TERMINATE_SEQ) {
                        TerminateSequence terminate = (TerminateSequence) 
rmMsgContext.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ);
                        id = terminate.getIdentifier();
 
-               } else if(senderBean.getMessageType() == 
Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE) {
+               } else if(messageType == 
Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE) {
                        CloseSequence close = (CloseSequence) 
rmMsgContext.getMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE);
                        id = close.getIdentifier();
                
-               } else if(senderBean.getMessageType() == 
Sandesha2Constants.MessageTypes.ACK_REQUEST) {
+               } else if(messageType == 
Sandesha2Constants.MessageTypes.ACK_REQUEST) {
                        // The only time that we can have a message of this 
type is when we are sending a
                        // stand-alone ack request, and in that case we only 
expect to find a single ack
                        // request header in the message.
@@ -447,6 +463,36 @@
 
                        // Write the changes back into the message context
                        rmMsgContext.addSOAPEnvelope();
+               }
+               
+               //if this is an sync WSRM 1.0 case we always have to add an ack
+               boolean ackPresent = false;
+               Iterator it = rmMsgContext.getMessageParts 
(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
+               if (it.hasNext()) 
+                       ackPresent = true;
+               
+               if (!ackPresent && 
rmMsgContext.getMessageContext().isServerSide() 
+                               &&
+                       
(messageType==Sandesha2Constants.MessageTypes.APPLICATION || 
+                    messageType==Sandesha2Constants.MessageTypes.APPLICATION ||
+                    messageType==Sandesha2Constants.MessageTypes.UNKNOWN ||
+                    
messageType==Sandesha2Constants.MessageTypes.LAST_MESSAGE)) {
+                       
+                       String inboundSequenceId = 
senderBean.getInboundSequenceId();
+                       if (inboundSequenceId==null)
+                               throw new SandeshaException ("InboundSequenceID 
is not set for the sequence:" + id);
+                       
+                       RMDBean findBean = new RMDBean ();
+                       findBean.setSequenceID(inboundSequenceId);
+                       
+                       if (incomingSequenceBean==null) {
+                               RMDBeanMgr rmdMgr = 
storageManager.getRMDBeanMgr();
+                               incomingSequenceBean = 
rmdMgr.findUnique(findBean);
+                       }
+                       
+                       if (incomingSequenceBean!=null) 
+                               RMMsgCreator.addAckMessage(rmMsgContext, 
inboundSequenceId, incomingSequenceBean);
+                       
                }
                
                return true;



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

Reply via email to