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

Reply via email to