You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by am...@apache.org on 2008/03/10 16:41:29 UTC

svn commit: r635581 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2: Constants.java transport/mail/EMailSender.java transport/mail/SynchronousMailListener.java

Author: amilas
Date: Mon Mar 10 08:41:28 2008
New Revision: 635581

URL: http://svn.apache.org/viewvc?rev=635581&view=rev
Log:
Add piggy back handling to mail transport. This is use full for an RM implementation
to implement the piggy back model

Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java?rev=635581&r1=635580&r2=635581&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java Mon Mar 10 08:41:28 2008
@@ -246,6 +246,9 @@
     public static final String TRANSPORT_FAULT_STRING = "transportFault";
     public static final String SOAP_PROCESSING_FAULT_STRING = "soapProcessingFault";
 
+    // used to handle piggy back messages with mail transport
+    public static final String PIGGYBACK_MESSAGE = "piggybackMessage";
+
     /**
      * Field Builder Selector
      */

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java?rev=635581&r1=635580&r2=635581&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java Mon Mar 10 08:41:28 2008
@@ -24,7 +24,7 @@
 import org.apache.axiom.om.OMOutputFormat;
 import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
-import org.apache.axis2.AxisFault;
+import org.apache.axis2.*;
 import org.apache.axis2.i18n.Messages;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
@@ -232,6 +232,7 @@
     }
 
     private void sendReceive(MessageContext msgContext, String msgId) throws AxisFault {
+        System.out.println("Sending message ID ==> " + msgId);
         storeMessageContext(msgContext, msgId);
         ConfigurationContext cc = msgContext.getConfigurationContext();
         //While sysncmial listner .not complete
@@ -240,7 +241,10 @@
         SynchronousMailListener synchronousMailListener = null;
         //No need to stor the message context if the mep is out-only
         AxisOperation axisOperation = msgContext.getAxisOperation();
-        if(axisOperation instanceof OutOnlyAxisOperation) {
+        // piggy back message constant is used to pass a piggy back
+        // message context in asnych model
+        if(axisOperation instanceof OutOnlyAxisOperation &&
+                (msgContext.getProperty(org.apache.axis2.Constants.PIGGYBACK_MESSAGE) == null)) {
             return;
         }
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java?rev=635581&r1=635580&r2=635581&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java Mon Mar 10 08:41:28 2008
@@ -18,7 +18,7 @@
  */
 package org.apache.axis2.transport.mail;
 
-import org.apache.axis2.AxisFault;
+import org.apache.axis2.*;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.description.AxisOperation;
@@ -48,18 +48,34 @@
         OperationContext operationContext = outMessageContext.getOperationContext();
         MessageContext msgCtx =
                 operationContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+
         if(msgCtx==null){
-            inMessageContext.setOperationContext(operationContext);
-            inMessageContext.setServiceContext(outMessageContext.getServiceContext());
-            if(!operationContext.isComplete()){
-                operationContext.addMessageContext(inMessageContext);
+            // try to see whether there is a piggy back message context
+            if (outMessageContext.getProperty(org.apache.axis2.Constants.PIGGYBACK_MESSAGE) != null) {
+                
+                msgCtx = (MessageContext) outMessageContext.getProperty(org.apache.axis2.Constants.PIGGYBACK_MESSAGE);
+                msgCtx.setTransportIn(inMessageContext.getTransportIn());
+                msgCtx.setTransportOut(inMessageContext.getTransportOut());
+                msgCtx.setServerSide(false);
+                msgCtx.setProperty(org.apache.axis2.transport.mail.Constants.CONTENT_TYPE,
+                        inMessageContext.getProperty(org.apache.axis2.transport.mail.Constants.CONTENT_TYPE));
+                msgCtx.setIncomingTransportName(org.apache.axis2.Constants.TRANSPORT_MAIL);
+                msgCtx.setEnvelope(inMessageContext.getEnvelope());
+
+            } else {
+                inMessageContext.setOperationContext(operationContext);
+                inMessageContext.setServiceContext(outMessageContext.getServiceContext());
+                if (!operationContext.isComplete()) {
+                    operationContext.addMessageContext(inMessageContext);
+                }
+                AxisOperation axisOp = operationContext.getAxisOperation();
+                //TODO need to handle fault case as well ,
+                //TODO  need to check whether the message contains fault , if so we need to get the fault message
+                AxisMessage inMessage = axisOp.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                inMessageContext.setAxisMessage(inMessage);
+                inMessageContext.setServerSide(false);
             }
-            AxisOperation axisOp = operationContext.getAxisOperation();
-            //TODO need to handle fault case as well ,
-            //TODO  need to check whether the message contains fault , if so we need to get the fault message
-            AxisMessage inMessage = axisOp.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
-            inMessageContext.setAxisMessage(inMessage);
-            inMessageContext.setServerSide(false);
+
         } else {
             msgCtx.setOperationContext(operationContext);
             msgCtx.setServiceContext(outMessageContext.getServiceContext());



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org