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]

Reply via email to