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]