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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]