You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by ch...@apache.org on 2007/05/12 02:52:04 UTC
svn commit: r537316 - in /webservices/sandesha/trunk/java: ./
modules/core/src/main/java/org/apache/sandesha2/client/
modules/core/src/main/java/org/apache/sandesha2/msgprocessors/
modules/core/src/main/java/org/apache/sandesha2/msgreceivers/ modules/c...
Author: chamikara
Date: Fri May 11 17:52:02 2007
New Revision: 537316
URL: http://svn.apache.org/viewvc?view=rev&rev=537316
Log:
when the client sends an LastMessage control message, the server also should try to coplete the response
sequence with a LastMessage.
LastMessage was marked as InOut in the module.xml.
LastMessageProcessor was added.
Corrected the AXIOM version (to 1.2.4)
Added:
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/LastMessageProcessor.java
Modified:
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
webservices/sandesha/trunk/java/modules/mar/module.xml
webservices/sandesha/trunk/java/project.properties
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java?view=diff&rev=537316&r1=537315&r2=537316
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java Fri May 11 17:52:02 2007
@@ -490,8 +490,9 @@
} else {
options.setAction(Sandesha2Constants.SPEC_2005_02.Actions.ACTION_LAST_MESSAGE);
options.setProperty(SandeshaClientConstants.LAST_MESSAGE, Constants.VALUE_TRUE);
- serviceClient.fireAndForget(null);
-
+
+ //the server should also reply with a last message
+ serviceClient.sendReceive (null);
}
} catch (AxisFault e) {
Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/LastMessageProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/LastMessageProcessor.java?view=auto&rev=537316
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/LastMessageProcessor.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/LastMessageProcessor.java Fri May 11 17:52:02 2007
@@ -0,0 +1,43 @@
+package org.apache.sandesha2.msgprocessors;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.context.MessageContext;
+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.wsrm.Sequence;
+
+public class LastMessageProcessor {
+
+ public boolean processLastMessage(RMMsgContext rmMsgCtx) throws AxisFault {
+
+ if (!Sandesha2Constants.SPEC_VERSIONS.v1_0.equals(rmMsgCtx.getRMSpecVersion()))
+ return true;
+
+ MessageContext msgContext = rmMsgCtx.getMessageContext();
+ Sequence sequence = (Sequence) rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
+ String sequenceId = sequence.getIdentifier().getIdentifier();
+ MessageContext outMessage = MessageContextBuilder.createOutMessageContext(msgContext);
+
+ //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 ());
+
+ outMessage.getOptions().setAction(Sandesha2Constants.SPEC_2005_02.Actions.ACTION_LAST_MESSAGE);
+
+ AxisEngine engine = new AxisEngine (rmMsgCtx.getConfigurationContext());
+ engine.send(outMessage);
+
+ return true;
+ }
+
+}
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java?view=diff&rev=537316&r1=537315&r2=537316
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java Fri May 11 17:52:02 2007
@@ -37,6 +37,7 @@
import org.apache.sandesha2.SandeshaException;
import org.apache.sandesha2.i18n.SandeshaMessageHelper;
import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+import org.apache.sandesha2.msgreceivers.RMMessageReceiver;
import org.apache.sandesha2.policy.SandeshaPolicyBean;
import org.apache.sandesha2.security.SecurityManager;
import org.apache.sandesha2.security.SecurityToken;
@@ -68,6 +69,8 @@
public InvocationResponse processSequenceHeader(RMMsgContext rmMsgCtx) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: SequenceProcessor::processSequenceHeader");
+ System.out.println("*********** ResponseWritten1" + rmMsgCtx.getProperty(Constants.RESPONSE_WRITTEN));
+
InvocationResponse result = InvocationResponse.CONTINUE;
Sequence sequence = (Sequence) rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
if(sequence != null) {
@@ -313,12 +316,16 @@
// If this message matches the WSRM 1.0 pattern for an empty last message (e.g.
// the sender wanted to signal the last message, but didn't have an application
- // message to send) then we do not need to send the message on to the application.
- if(Sandesha2Constants.SPEC_2005_02.Actions.ACTION_LAST_MESSAGE.equals(msgCtx.getWSAAction()) ||
- Sandesha2Constants.SPEC_2005_02.Actions.SOAP_ACTION_LAST_MESSAGE.equals(msgCtx.getSoapAction())) {
- if (log.isDebugEnabled())
- log.debug("Exit: SequenceProcessor::processReliableMessage, got WSRM 1.0 lastmessage, aborting");
- return InvocationResponse.ABORT;
+ // message to send) then we direct it to the RMMessageReceiver.
+ //This is not done when LastMsg is a response - it is sent throuth the normal response flow.
+ if((Sandesha2Constants.SPEC_2005_02.Actions.ACTION_LAST_MESSAGE.equals(msgCtx.getWSAAction()) ||
+ Sandesha2Constants.SPEC_2005_02.Actions.SOAP_ACTION_LAST_MESSAGE.equals(msgCtx.getSoapAction())))
+ {
+ if (rmMsgCtx.getRelatesTo()==null) {
+ if (log.isDebugEnabled())
+ log.debug("Exit: SequenceProcessor::processReliableMessage, got WSRM 1.0 lastmessage");
+ msgCtx.getAxisOperation().setMessageReceiver(new RMMessageReceiver ());
+ }
}
// If the storage manager has an invoker, then they may be implementing inOrder, or
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java?view=diff&rev=537316&r1=537315&r2=537316
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java Fri May 11 17:52:02 2007
@@ -28,12 +28,14 @@
import org.apache.sandesha2.Sandesha2Constants;
import org.apache.sandesha2.i18n.SandeshaMessageHelper;
import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+import org.apache.sandesha2.msgprocessors.LastMessageProcessor;
import org.apache.sandesha2.msgprocessors.MsgProcessor;
import org.apache.sandesha2.msgprocessors.MsgProcessorFactory;
import org.apache.sandesha2.storage.StorageManager;
import org.apache.sandesha2.storage.Transaction;
import org.apache.sandesha2.util.MsgInitializer;
import org.apache.sandesha2.util.SandeshaUtil;
+import org.apache.sandesha2.wsrm.Sequence;
/**
*Currently this is a dummy Msg Receiver.
@@ -72,6 +74,13 @@
msgProcessor.processInMessage(rmMsgCtx);
+ //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 lastMsgProcessor = new LastMessageProcessor ();
+ lastMsgProcessor.processLastMessage(rmMsgCtx);
+ }
+
} catch (Exception e) {
if (log.isDebugEnabled())
log.debug("Exception caught during processInMessage", e);
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java?view=diff&rev=537316&r1=537315&r2=537316
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java Fri May 11 17:52:02 2007
@@ -147,11 +147,13 @@
if (elements.getMakeConnection() != null) {
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.MAKE_CONNECTION,
elements.getMakeConnection());
+ rmNamespace = elements.getMakeConnection().getNamespaceValue();
}
if (elements.getMessagePending() != null) {
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.MESSAGE_PENDING,
elements.getMessagePending());
+ rmNamespace = elements.getMessagePending().getNamespaceValue();
}
if (elements.getSequenceFault() != null) {
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java?view=diff&rev=537316&r1=537315&r2=537316
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java Fri May 11 17:52:02 2007
@@ -391,6 +391,9 @@
newMessageContext.setAxisOperation(operation);
+ //The message created will basically be used as a outMessage, so setting the AxisMessage accordingly
+ newMessageContext.setAxisMessage(operation.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE));
+
OperationContext operationContext = new OperationContext(operation, newMessageContext.getServiceContext());
newMessageContext.setOperationContext(operationContext);
operationContext.addMessageContext(newMessageContext);
Modified: webservices/sandesha/trunk/java/modules/mar/module.xml
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/mar/module.xml?view=diff&rev=537316&r1=537315&r2=537316
==============================================================================
--- webservices/sandesha/trunk/java/modules/mar/module.xml (original)
+++ webservices/sandesha/trunk/java/modules/mar/module.xml Fri May 11 17:52:02 2007
@@ -46,9 +46,6 @@
<actionMapping>http://docs.oasis-open.org/ws-rx/wsrm/200702/SequenceAcknowledgement</actionMapping>
<actionMapping>http://docs.oasis-open.org/ws-rx/wsrm/200702/fault</actionMapping>
- <!-- For interoparability perposes. Some WSRM implementations tend to send this as the LastMessage -->
- <actionMapping>http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage</actionMapping>
-
<actionMapping>http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence</actionMapping>
</operation>
@@ -61,6 +58,9 @@
<actionMapping>http://docs.oasis-open.org/ws-rx/wsrm/200702/AckRequested</actionMapping>
+ <!-- For interoparability perposes. Some WSRM implementations tend to send this as the LastMessage -->
+ <actionMapping>http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage</actionMapping>
+
<!-- namespaces for the 2007-02 spec -->
<actionMapping>http://docs.oasis-open.org/ws-rx/wsrm/200702/CreateSequence</actionMapping>
<actionMapping>http://docs.oasis-open.org/ws-rx/wsrm/200702/CloseSequence</actionMapping>
Modified: webservices/sandesha/trunk/java/project.properties
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/project.properties?view=diff&rev=537316&r1=537315&r2=537316
==============================================================================
--- webservices/sandesha/trunk/java/project.properties (original)
+++ webservices/sandesha/trunk/java/project.properties Fri May 11 17:52:02 2007
@@ -27,7 +27,7 @@
sandesha2.module.version=SNAPSHOT
axis2.version=1.2
-axiom.version=1.2.3
+axiom.version=1.2.4
addressing.version=${axis2.version}
rampart.version=SNAPSHOT
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org