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