[prev in list] [next in list] [prev in thread] [next in thread]
List: sandesha-dev
Subject: svn commit: r541573 - in
From: chamikara () apache ! org
Date: 2007-05-25 7:43:25
Message-ID: 20070525074331.D3ACC1A981A () eris ! apache ! org
[Download RAW message or body]
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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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/mod \
ules/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: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic