Author: chamikara
Date: Fri May 25 00:43:21 2007
New Revision: 541573
URL: http://svn.apache.org/viewvc?view=rev&rev=541573
Log:
Fixed the empty body LastMessage processing.
In sync scenarios the server will respond this with a LastMessage for the
response sequence. But this
should not be an response to the original message, I.e. there should not be an
relatesTo.
A fix to throw an exception when offer it not given when it is required.
A couple of other big fixes.
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/MessageValidator.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/RMMsgContext.java
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/handlers/SandeshaGlobalInHandler.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaInHandler.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.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/MsgProcessorFactory.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/msgreceivers/RMMessageReceiver.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/storage/beans/RMSBean.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.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
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/MessageValidator.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/MessageValidator.java?view=diff&rev=541573&r1=541572&r2=541573
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/MessageValidator.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/MessageValidator.java
Fri May 25 00:43:21 2007
@@ -17,6 +17,11 @@
package org.apache.sandesha2;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.WSDL2Constants;
+import org.apache.sandesha2.client.SandeshaClientConstants;
import org.apache.sandesha2.i18n.SandeshaMessageHelper;
import org.apache.sandesha2.i18n.SandeshaMessageKeys;
import org.apache.sandesha2.policy.SandeshaPolicyBean;
@@ -32,7 +37,7 @@
*/
public class MessageValidator {
- public static void validateMessage(RMMsgContext rmMsg,
+ public static void validateIncomingMessage(RMMsgContext rmMsg,
StorageManager storageManager) throws SandeshaException
{
int type = rmMsg.getMessageType();
@@ -90,5 +95,33 @@
// TODO do validation based on states
+ }
+
+ public static void validateOutgoingMessage (RMMsgContext rmMsgContext)
throws SandeshaException {
+
+ MessageContext msgContext = rmMsgContext.getMessageContext();
+ if (!msgContext.isServerSide()) {
+ //validating messages from the client.
+
+ //if sync InOut and NoOffer and RM 1.0 an exception
should be thrown
+ String rmNamespace = rmMsgContext.getRMNamespaceValue();
+ String mep =
msgContext.getAxisOperation().getMessageExchangePattern();
+ String offer = (String)
msgContext.getProperty(SandeshaClientConstants.OFFERED_SEQUENCE_ID);
+
+ EndpointReference replyTo =
rmMsgContext.getMessageContext().getOptions().getReplyTo();
+ boolean anonReplyTo = false;
+ if (replyTo==null || replyTo.hasAnonymousAddress())
+ anonReplyTo = true;
+
+ if
(Sandesha2Constants.SPEC_VERSIONS.v1_0.equals(rmMsgContext.getRMSpecVersion())
&&
+ WSDL2Constants.MEP_URI_OUT_IN.equals(mep) &&
+ offer==null && anonReplyTo) {
+
+ String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.offerRequiredForAnon);
+ throw new SandeshaException(message);
+
+ }
+
+ }
}
}
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/RMMsgContext.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/RMMsgContext.java?view=diff&rev=541573&r1=541572&r2=541573
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/RMMsgContext.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/RMMsgContext.java
Fri May 25 00:43:21 2007
@@ -51,6 +51,7 @@
public RMMsgContext() {
rmMessageParts = new HashMap();
messageType = Sandesha2Constants.MessageTypes.UNKNOWN;
+ rmNamespaceValue = Sandesha2Constants.DEFAULT_RM_NAMESPACE;
}
public void setMessageContext(MessageContext msgCtx) {
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=541573&r1=541572&r2=541573
==============================================================================
---
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
Fri May 25 00:43:21 2007
@@ -28,7 +28,6 @@
public interface Sandesha2Constants {
-
public interface SPEC_VERSIONS {
String v1_0 = "Spec_2005_02";
String v1_1 = "Spec_2007_02";
@@ -551,12 +550,16 @@
static final String SERVICE_CONTAINS_OUT_IN_MEPS =
"ServiceContainsOutInMeps";
+ static final String DEFAULT_RM_NAMESPACE =
Sandesha2Constants.SPEC_2005_02.NS_URI;
+
static final String SANDESHA_OP_PREFIX = "Sandesha2Operation";
static final QName RM_OUT_IN_OPERATION = new
QName(SANDESHA_OP_PREFIX + "OutIn");
static final QName RM_OUT_ONLY_OPERATION = new
QName(SANDESHA_OP_PREFIX + "OutOnly");
static final QName RM_DUPLICATE_OPERATION = new
QName(SANDESHA_OP_PREFIX + "Duplicate");
static final QName RM_IN_OUT_OPERATION = new
QName(SANDESHA_OP_PREFIX + "InOut");
static final QName RM_IN_ONLY_OPERATION = new
QName(SANDESHA_OP_PREFIX + "InOnly");
+
+ static final String OUT_LAST_MESSAGE = "OutLastMessage";
static final String [] SPEC_NS_URIS = {
SPEC_2005_02.NS_URI,
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java?view=diff&rev=541573&r1=541572&r2=541573
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
Fri May 25 00:43:21 2007
@@ -131,7 +131,9 @@
//This is responsible for Sandesha2 specific
InvocationResponse response =
FaultManager.processMessagesForFaults(rmMsgCtx, storageManager);
- if (rmMsgCtx.getMessageType() ==
Sandesha2Constants.MessageTypes.APPLICATION) {
+ //both application msgs and lastMsg msgs will be processed in the same way
here.
+ if (rmMsgCtx.getMessageType() ==
Sandesha2Constants.MessageTypes.APPLICATION ||
+ rmMsgCtx.getMessageType() ==
Sandesha2Constants.MessageTypes.LAST_MESSAGE) {
processApplicationMessage(rmMsgCtx);
}
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaInHandler.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaInHandler.java?view=diff&rev=541573&r1=541572&r2=541573
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaInHandler.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaInHandler.java
Fri May 25 00:43:21 2007
@@ -108,7 +108,7 @@
rmMsgCtx = MsgInitializer.initializeMessage(msgCtx);
// validating the message
- MessageValidator.validateMessage(rmMsgCtx,
storageManager);
+ MessageValidator.validateIncomingMessage(rmMsgCtx,
storageManager);
// commit the current transaction
if(transaction != null && transaction.isActive())
transaction.commit();
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java?view=diff&rev=541573&r1=541572&r2=541573
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
Fri May 25 00:43:21 2007
@@ -232,5 +232,6 @@
public final static String cannotSetPolicyBeanServiceNull =
"cannotSetPolicyBeanServiceNull";
public final static String noPolling="noPolling";
public final static String freeingTransport="freeingTransport";
+ public final static String offerRequiredForAnon =
"offerRequiredForAnon";
}
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=541573&r1=541572&r2=541573
==============================================================================
---
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
Fri May 25 00:43:21 2007
@@ -29,6 +29,7 @@
import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.sandesha2.MessageValidator;
import org.apache.sandesha2.RMMsgContext;
import org.apache.sandesha2.Sandesha2Constants;
import org.apache.sandesha2.SandeshaException;
@@ -88,6 +89,9 @@
MessageContext msgContext = rmMsgCtx.getMessageContext();
ConfigurationContext configContext =
msgContext.getConfigurationContext();
+ //validating the outgoing message
+ MessageValidator.validateOutgoingMessage(rmMsgCtx);
+
// setting the Fault callback
SandeshaListener faultCallback = (SandeshaListener)
msgContext.getOptions().getProperty(
SandeshaClientConstants.SANDESHA_LISTENER);
@@ -278,7 +282,7 @@
if (serverSide) {
// Deciding whether this is the last message. We assume
it is if it relates to
- // a message which arrived with the LastMessage flag on
it.
+ // a message which arrived with the LastMessage flag on
it.
RMDBean rmdBean =
SandeshaUtil.getRMDBeanFromSequenceId(storageManager, inboundSequence);
// Get the last in message
String lastRequestId = rmdBean.getLastInMessageId();
@@ -287,6 +291,11 @@
lastRequestId.equals(relatesTo.getValue())) {
lastMessage = true;
}
+
+ //or a constant property may call it as the last msg
+ Boolean inboundLast = (Boolean)
msgContext.getProperty(Sandesha2Constants.MessageContextProperties.INBOUND_LAST_MESSAGE);
+ if (inboundLast!=null && inboundLast.booleanValue())
+ lastMessage = true;
}
if (lastMessage)
@@ -376,22 +385,20 @@
}
EndpointReference toEPR = msgContext.getTo();
- if (toEPR == null) {
- String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.toEPRNotValid, null);
- log.debug(message);
- throw new SandeshaException(message);
- }
- // setting default actions.
- String to = toEPR.getAddress();
- String operationName =
msgContext.getOperationContext().getAxisOperation().getName().getLocalPart();
- if (msgContext.getWSAAction() == null) {
- msgContext.setWSAAction(to + "/" + operationName);
- }
- if (msgContext.getSoapAction() == null) {
- msgContext.setSoapAction("\"" + to + "/" +
operationName + "\"");
+
+ if (toEPR != null) {
+ // setting default actions.
+ String to = toEPR.getAddress();
+ String operationName =
msgContext.getOperationContext().getAxisOperation().getName().getLocalPart();
+ if (msgContext.getWSAAction() == null) {
+ msgContext.setWSAAction(to + "/" +
operationName);
+ }
+ if (msgContext.getSoapAction() == null) {
+ msgContext.setSoapAction("\"" + to + "/" +
operationName + "\"");
+ }
}
-
+
// processing the response if not an dummy.
if (!dummyMessage)
processResponseMessage(rmMsgCtx, rmsBean,
internalSequenceId, outSequenceID, messageNumber, storageKey, storageManager);
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=541573&r1=541572&r2=541573
==============================================================================
---
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
Fri May 25 00:43:21 2007
@@ -3,36 +3,120 @@
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
import org.apache.axis2.client.Options;
+import org.apache.axis2.context.ConfigurationContext;
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.sandesha2.RMMsgContext;
import org.apache.sandesha2.Sandesha2Constants;
+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.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 {
+public class LastMessageProcessor implements MsgProcessor {
+
+
+
+
+ public boolean processInMessage(RMMsgContext rmMsgCtx, Transaction
transaction) throws AxisFault {
+ processLastMessage(rmMsgCtx);
+ return true;
+ }
+
+ public boolean processOutMessage(RMMsgContext rmMsgCtx) throws
AxisFault {
+ // TODO Auto-generated method stub
+ return false;
+ }
public static void processLastMessage(RMMsgContext rmMsgCtx) throws
AxisFault {
if
(!Sandesha2Constants.SPEC_VERSIONS.v1_0.equals(rmMsgCtx.getRMSpecVersion()))
return;
- MessageContext msgContext = rmMsgCtx.getMessageContext();
- MessageContext outMessage =
MessageContextBuilder.createOutMessageContext(msgContext);
+ Sequence sequence = (Sequence)
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
+ String sequenceId = sequence.getIdentifier().getIdentifier();
- //add the SOAP envelope with body null
- SOAPFactory factory = (SOAPFactory)
msgContext.getEnvelope().getOMFactory();
- SOAPEnvelope envelope = factory.getDefaultEnvelope();
- outMessage.setEnvelope(envelope);
-
- //set the LastMessageAction and the property
- if (outMessage.getOptions()==null)
- outMessage.setOptions(new Options ());
+ ConfigurationContext configurationContext =
rmMsgCtx.getConfigurationContext();
+ StorageManager storageManager =
SandeshaUtil.getSandeshaStorageManager(
+ configurationContext,
configurationContext.getAxisConfiguration());
+
+ RMDBeanMgr rmdMgr = storageManager.getRMDBeanMgr();
+ RMDBean rmdBean = rmdMgr.retrieve(sequenceId);
+ String outBoundInternalSequence =
rmdBean.getOutboundInternalSequence();
+
+ RMSBeanMgr rmsBeanMgr = storageManager.getRMSBeanMgr();
+ RMSBean findBean = new RMSBean ();
+ findBean.setInternalSequenceID(outBoundInternalSequence);
+ RMSBean rmsBean = rmsBeanMgr.findUnique (findBean);
+
+ if (rmsBean!=null && rmsBean.getLastOutMessage()<=0) {
+ //there is a RMS sequence without a LastMsg entry
+
+ MessageContext msgContext =
rmMsgCtx.getMessageContext();
+// MessageContext outMessage =
MessageContextBuilder.createOutMessageContext(msgContext);
+
+ MessageContext outMessageContext = new MessageContext
();
+ outMessageContext.setServerSide(true);
+
+
outMessageContext.setTransportOut(msgContext.getTransportOut());
+ outMessageContext.setProperty
(Constants.OUT_TRANSPORT_INFO,
msgContext.getProperty(Constants.OUT_TRANSPORT_INFO));
+ outMessageContext.setProperty
(MessageContext.TRANSPORT_OUT,
msgContext.getProperty(MessageContext.TRANSPORT_OUT));
+
+ //add the SOAP envelope with body null
+ SOAPFactory factory = (SOAPFactory)
msgContext.getEnvelope().getOMFactory();
+ SOAPEnvelope envelope = factory.getDefaultEnvelope();
+ outMessageContext.setEnvelope(envelope);
+
+ //set the LastMessageAction and the property
+ 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);
+
+ String inboundSequenceId = (String)
msgContext.getProperty(Sandesha2Constants.MessageContextProperties.INBOUND_SEQUENCE_ID);
+
operationContext.setProperty(Sandesha2Constants.MessageContextProperties.INBOUND_SEQUENCE_ID,
+ inboundSequenceId);
+
+ Long inboundMSgNo = (Long)
msgContext.getProperty(Sandesha2Constants.MessageContextProperties.INBOUND_MESSAGE_NUMBER);
+
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);
+
+ AxisEngine engine = new AxisEngine
(rmMsgCtx.getConfigurationContext());
+ engine.send(outMessageContext);
+
+ }
-
outMessage.getOptions().setAction(Sandesha2Constants.SPEC_2005_02.Actions.ACTION_LAST_MESSAGE);
- AxisEngine engine = new AxisEngine
(rmMsgCtx.getConfigurationContext());
- engine.send(outMessage);
}
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java?view=diff&rev=541573&r1=541572&r2=541573
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java
Fri May 25 00:43:21 2007
@@ -45,6 +45,8 @@
return new CloseSequenceProcessor();
case (Sandesha2Constants.MessageTypes.MAKE_CONNECTION_MSG):
return new MakeConnectionProcessor ();
+ case (Sandesha2Constants.MessageTypes.LAST_MESSAGE):
+ return new LastMessageProcessor ();
default:
return null;
}
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=541573&r1=541572&r2=541573
==============================================================================
---
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
Fri May 25 00:43:21 2007
@@ -54,6 +54,7 @@
import org.apache.sandesha2.util.AcknowledgementManager;
import org.apache.sandesha2.util.FaultManager;
import org.apache.sandesha2.util.SandeshaUtil;
+import org.apache.sandesha2.util.SpecSpecificConstants;
import org.apache.sandesha2.util.TerminateManager;
import org.apache.sandesha2.workers.SandeshaThread;
import org.apache.sandesha2.wsrm.Sequence;
@@ -317,8 +318,9 @@
boolean sendAck = false;
+ boolean ackBackChannel =
SpecSpecificConstants.sendAckInBackChannel (rmMsgCtx.getMessageType());
EndpointReference acksTo = new EndpointReference
(bean.getAcksToEPR());
- if (acksTo.hasAnonymousAddress() && backchannelFree) {
+ if (acksTo.hasAnonymousAddress() && backchannelFree &&
ackBackChannel) {
Object responseWritten =
msgCtx.getOperationContext().getProperty(Constants.RESPONSE_WRITTEN);
if (responseWritten==null ||
!Constants.VALUE_TRUE.equals(responseWritten)) {
sendAck = true;
@@ -354,7 +356,7 @@
// Whatever the MEP, we stop processing here and the
invoker will do the real work. We only
// SUSPEND if we need to keep the backchannel open for
the response... we may as well ABORT
// to let other cases end more quickly.
- if(backchannelFree) {
+ if(backchannelFree && ackBackChannel) {
result = InvocationResponse.ABORT;
} else {
result = InvocationResponse.SUSPEND;
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java?view=diff&rev=541573&r1=541572&r2=541573
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
Fri May 25 00:43:21 2007
@@ -74,14 +74,8 @@
msgProcessor.processInMessage(rmMsgCtx,
transaction);
- //If message is a LastMessage then we deligate
the processing to the LastMessageProcessor
- Sequence sequence = (Sequence)
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
- if (sequence!=null &&
sequence.getLastMessage()!=null) {
-
LastMessageProcessor.processLastMessage(rmMsgCtx);
- }
-
- if(transaction != null && transaction.isActive()) transaction.commit();
- transaction = null;
+ if(transaction != null &&
transaction.isActive()) transaction.commit();
+ transaction = null;
} catch (Exception e) {
if (log.isDebugEnabled())
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/storage/beans/RMSBean.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/storage/beans/RMSBean.java?view=diff&rev=541573&r1=541572&r2=541573
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/storage/beans/RMSBean.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/storage/beans/RMSBean.java
Fri May 25 00:43:21 2007
@@ -152,7 +152,7 @@
private static final int TERM_PAUSER_FOR_CS = 0x00000002;
private static final int EXPECTED_REPLIES = 0x00000020;
private static final int SOAP_VERSION_FLAG = 0x00000200;
-
+
/**
* In WSRM Anon URI scenario, we may not want to terminate a perticular
sequence until the CreateSequence has been received
* for the response side, other wise PollingManager will pause the polling
process in termination and we will never be able
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java?view=diff&rev=541573&r1=541572&r2=541573
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
Fri May 25 00:43:21 2007
@@ -19,6 +19,7 @@
import java.util.Iterator;
+import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.context.MessageContext;
@@ -30,6 +31,7 @@
import org.apache.sandesha2.wsrm.CloseSequenceResponse;
import org.apache.sandesha2.wsrm.CreateSequence;
import org.apache.sandesha2.wsrm.CreateSequenceResponse;
+import org.apache.sandesha2.wsrm.LastMessage;
import org.apache.sandesha2.wsrm.MakeConnection;
import org.apache.sandesha2.wsrm.RMElements;
import org.apache.sandesha2.wsrm.Sequence;
@@ -163,7 +165,8 @@
elements.getSequenceFault());
}
- rmMsgContext.setRMNamespaceValue(rmNamespace);
+ if (rmNamespace!=null)
+ rmMsgContext.setRMNamespaceValue(rmNamespace);
}
@@ -213,7 +216,17 @@
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.TERMINATE_SEQ_RESPONSE);
sequenceID =
terminateSequenceResponse.getIdentifier().getIdentifier();
} else if
(rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE) != null) {
-
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.APPLICATION);
+
+ Sequence seq = (Sequence)
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
+ LastMessage lastMessage = seq.getLastMessage();
+ SOAPEnvelope envelope = rmMsgCtx.getSOAPEnvelope();
+
+ if (lastMessage!=null &&
envelope.getBody().getFirstOMChild()==null) {
+ //the message is an empty body last message
+
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.LAST_MESSAGE);
+ }else
+
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.APPLICATION);
+
sequenceID = sequence.getIdentifier().getIdentifier();
} else if (sequenceAcknowledgementsIter.hasNext()) {
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.ACK);
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=541573&r1=541572&r2=541573
==============================================================================
---
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
Fri May 25 00:43:21 2007
@@ -439,5 +439,17 @@
return result;
}
+
+ public static boolean sendAckInBackChannel (int messageType) {
+ boolean result = true;
+
+ switch (messageType) {
+ case Sandesha2Constants.MessageTypes.LAST_MESSAGE:
+ result = false;
+ break;
+ }
+
+ return result;
+ }
}
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=541573&r1=541572&r2=541573
==============================================================================
---
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
Fri May 25 00:43:21 2007
@@ -408,7 +408,7 @@
sequence.setMessageNumber(msgNumber);
if(senderBean.isLastMessage() &&
-
SpecSpecificConstants.isLastMessageIndicatorRequired(rmVersion)) {
+
SpecSpecificConstants.isLastMessageIndicatorRequired(rmVersion)) {
sequence.setLastMessage(new
LastMessage(namespace));
}
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties?view=diff&rev=541573&r1=541572&r2=541573
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties
Fri May 25 00:43:21 2007
@@ -217,6 +217,7 @@
invalidElementFoundWithinElement=Found invalid ''{0}'' element within ''{1}''
element.
invokerNotFound=An invoker thread was not found to dispatch messages on the
inbound sequence {0}.
cannotSetPolicyBeanServiceNull=Cannot set the given SandeshaPolicyBean since
the AxisService is not present
+offerRequiredForAnon=If you are going to try sync in-out message exchanges
with RM 1.0, you must do an offer
#------------------
# Security messages
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]