You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by as...@apache.org on 2007/04/19 18:22:16 UTC

svn commit: r530473 - in /webservices/synapse/trunk/java/modules: core/src/main/java/org/apache/synapse/core/axis2/ nhttp/src/org/apache/axis2/transport/nhttp/

Author: asankha
Date: Thu Apr 19 09:22:14 2007
New Revision: 530473

URL: http://svn.apache.org/viewvc?view=rev&rev=530473
Log:
fix SYNAPSE-84 for MTOM and SwA handling, and properly use message formatters and attachments etc

Modified:
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
    webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java
    webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java?view=diff&rev=530473&r1=530472&r2=530473
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java Thu Apr 19 09:22:14 2007
@@ -44,6 +44,7 @@
 import org.apache.axis2.description.AxisServiceGroup;
 import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axiom.om.util.UUIDGenerator;
+import org.apache.axiom.attachments.Attachments;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.neethi.Policy;
@@ -93,7 +94,18 @@
             wsAddressingEnabled = endpoint.isAddressingOn() || wsSecurityEnabled || wsRMEnabled;
         }
 
-        log.debug("sending [add = "+wsAddressingEnabled+"] [sec = "+wsSecurityEnabled + "] [ rm = "+wsRMEnabled+"] [ to "+synapseOutMessageContext.getTo()+"]");
+        if (log.isDebugEnabled()) {
+            log.debug(
+                "sending [add = " + wsAddressingEnabled +
+                "] [sec = " + wsSecurityEnabled +
+                "] [rm = " + wsRMEnabled +
+                (endpoint != null ?
+                    "] [ mtom = " + endpoint.isUseMTOM() +
+                    "] [ swa = " + endpoint.isUseSwa() +
+                    "] [ force soap=" + endpoint.isForceSOAP() +
+                    "; pox=" + endpoint.isForcePOX() : "") +
+                "] [ to " + synapseOutMessageContext.getTo() + "]");
+        }
 
         // save the original message context wihout altering it, so we can tie the response
         MessageContext originalInMsgCtx = ((Axis2MessageContext) synapseOutMessageContext).getAxis2MessageContext();
@@ -124,13 +136,15 @@
                 axisOutMsgCtx.setProperty(
                         org.apache.axis2.Constants.Configuration.ENABLE_MTOM,
                         org.apache.axis2.Constants.VALUE_TRUE);
+                axisOutMsgCtx.setDoingMTOM(true);
 
             } else if (endpoint.isUseSwa()) {
                 axisOutMsgCtx.setDoingSwA(true);
                 // fix / workaround for AXIS2-1798
                 axisOutMsgCtx.setProperty(
-                        org.apache.axis2.Constants.Configuration.ENABLE_MTOM,
+                        org.apache.axis2.Constants.Configuration.ENABLE_SWA,
                         org.apache.axis2.Constants.VALUE_TRUE);
+                axisOutMsgCtx.setDoingSwA(true);
             }
 
             if (endpoint.isUseSeparateListener()) {
@@ -233,6 +247,19 @@
 
         newMC.setDoingREST(ori.isDoingREST());
         newMC.setDoingMTOM(ori.isDoingMTOM());
+        newMC.setDoingSwA(ori.isDoingSwA());
+
+        // if the original request carries any attachments, copy them to the clone
+        // as well, except for the soap part if any
+        Attachments attachments = ori.getAttachmentMap();
+        String[] cIDs = attachments.getAllContentIDs();
+        String soapPart = attachments.getSOAPPartContentID();
+        for (int i=0; i<cIDs.length; i++) {
+            if (!cIDs[i].equals(soapPart)) {
+                newMC.addAttachment(cIDs[i], attachments.getDataHandler(cIDs[i]));
+            }
+        }
+
         newMC.setServerSide(false);
 
         // set SOAP envelope on the message context, removing WS-A headers

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java?view=diff&rev=530473&r1=530472&r2=530473
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java Thu Apr 19 09:22:14 2007
@@ -152,6 +152,19 @@
 
             // If request is REST assume that the response is REST too
             response.setDoingREST(axisOutMsgCtx.isDoingREST());
+            if (axisOutMsgCtx.isDoingMTOM()) {
+                response.setDoingMTOM(true);
+                response.setProperty(
+                        org.apache.axis2.Constants.Configuration.ENABLE_MTOM,
+                        org.apache.axis2.Constants.VALUE_TRUE);
+            }
+            if (axisOutMsgCtx.isDoingSwA()) {
+                response.setDoingSwA(true);
+                response.setProperty(
+                        org.apache.axis2.Constants.Configuration.ENABLE_SWA,
+                        org.apache.axis2.Constants.VALUE_TRUE);
+            }
+
             if (axisOutMsgCtx.getMessageID() != null) {
                 response.setRelationships(
                         new RelatesTo[]{new RelatesTo(axisOutMsgCtx.getMessageID())});

Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java?view=diff&rev=530473&r1=530472&r2=530473
==============================================================================
--- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java (original)
+++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java Thu Apr 19 09:22:14 2007
@@ -163,8 +163,16 @@
 
         log.debug("start streaming outgoing http request");
         OutputStream out = Channels.newOutputStream(pipe.sink());
-        messageFormatter.writeTo(msgContext, format, out, false);
-        try {
+
+        if (format == null) {
+            format = Util.getOMOutputFormat(msgContext);
+        }
+        if (messageFormatter == null) {
+            messageFormatter = TransportUtils.getMessageFormatter(msgContext);
+        }
+
+        messageFormatter.writeTo(msgContext, format, out, true);
+            try {
             out.flush();
             out.close();
         } catch (IOException e) {

Modified: webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java?view=diff&rev=530473&r1=530472&r2=530473
==============================================================================
--- webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java (original)
+++ webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java Thu Apr 19 09:22:14 2007
@@ -235,6 +235,7 @@
             headers.remove(HTTP.SERVER_DIRECTIVE);
             headers.remove(HTTP.CONTENT_TYPE);
             headers.remove(HTTP.CONTENT_LEN);
+            headers.remove(HTTP.USER_AGENT);
         }
     }
 
@@ -312,7 +313,7 @@
 
         OutputStream out = worker.getOutputStream();
         try {
-            messageFormatter.writeTo(msgContext, format, out, false);
+            messageFormatter.writeTo(msgContext, format, out, true);
             out.close();
         } catch (IOException e) {
             handleException("IO Error sending response message", e);



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