You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by sa...@apache.org on 2012/03/06 13:54:12 UTC

svn commit: r1297455 - /axis/axis2/java/transports/trunk/modules/tcp/src/org/apache/axis2/transport/tcp/TCPTransportSender.java

Author: sagara
Date: Tue Mar  6 12:54:11 2012
New Revision: 1297455

URL: http://svn.apache.org/viewvc?rev=1297455&view=rev
Log:
Applied patch for TRANSPORTS-8.

Modified:
    axis/axis2/java/transports/trunk/modules/tcp/src/org/apache/axis2/transport/tcp/TCPTransportSender.java

Modified: axis/axis2/java/transports/trunk/modules/tcp/src/org/apache/axis2/transport/tcp/TCPTransportSender.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/tcp/src/org/apache/axis2/transport/tcp/TCPTransportSender.java?rev=1297455&r1=1297454&r2=1297455&view=diff
==============================================================================
--- axis/axis2/java/transports/trunk/modules/tcp/src/org/apache/axis2/transport/tcp/TCPTransportSender.java (original)
+++ axis/axis2/java/transports/trunk/modules/tcp/src/org/apache/axis2/transport/tcp/TCPTransportSender.java Tue Mar  6 12:54:11 2012
@@ -26,11 +26,19 @@ import org.apache.axis2.engine.AxisEngin
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.transport.OutTransportInfo;
 import org.apache.axis2.transport.TransportUtils;
+import org.apache.axis2.transport.MessageFormatter;
 import org.apache.axis2.transport.base.AbstractTransportSender;
+import org.apache.axis2.transport.base.BaseUtils;
 import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.om.OMOutputFormat;
 
 import java.io.IOException;
-import java.net.*;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.SocketAddress;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.Map;
 import java.util.HashMap;
 
@@ -48,10 +56,15 @@ public class TCPTransportSender extends 
             Socket socket = openTCPConnection(targetEPR, timeout);
             msgContext.setProperty(TCPConstants.TCP_OUTPUT_SOCKET, socket);
 
+            String contentType = params.get("contentType");
+            if (contentType == null) {
+                contentType = TCPConstants.TCP_DEFAULT_CONTENT_TYPE;
+            }
+
             try {
-                TransportUtils.writeMessage(msgContext, socket.getOutputStream());
+                writeOut(msgContext, socket, contentType);
                 if (!msgContext.getOptions().isUseSeparateListener() && !msgContext.isServerSide()){
-                    waitForReply(msgContext, socket, params.get("contentType"));
+                    waitForReply(msgContext, socket, contentType);
                 }
             } catch (IOException e) {
                 handleException("Error while sending a TCP request", e);
@@ -60,7 +73,7 @@ public class TCPTransportSender extends 
         } else if (outTransportInfo != null && (outTransportInfo instanceof TCPOutTransportInfo)) {
             TCPOutTransportInfo outInfo = (TCPOutTransportInfo) outTransportInfo;
             try {
-                TransportUtils.writeMessage(msgContext, outInfo.getSocket().getOutputStream());
+                writeOut(msgContext, outInfo.getSocket(), outInfo.getContentType());
             } catch (IOException e) {
                 handleException("Error while sending a TCP response", e);
             } finally {
@@ -69,6 +82,17 @@ public class TCPTransportSender extends 
         }
     }
 
+    private void writeOut(MessageContext msgContext, Socket socket,
+                          String contentType) throws IOException {
+        MessageFormatter messageFormatter = TransportUtils.getMessageFormatter(msgContext);
+        OMOutputFormat format = BaseUtils.getOMOutputFormat(msgContext);
+        format.setContentType(contentType);
+        byte[] payload = messageFormatter.getBytes(msgContext, format);
+        OutputStream out = socket.getOutputStream();
+        out.write(payload);
+        out.flush();
+    }
+
     @Override
     public void cleanup(MessageContext msgContext) throws AxisFault {
         Object socketObj = msgContext.getProperty(TCPConstants.TCP_OUTPUT_SOCKET);
@@ -85,10 +109,6 @@ public class TCPTransportSender extends 
             return;
         }
 
-        if (contentType == null) {
-            contentType = TCPConstants.TCP_DEFAULT_CONTENT_TYPE;
-        }
-
         try {
             MessageContext responseMsgCtx = createResponseMessageContext(msgContext);
             SOAPEnvelope envelope = TransportUtils.createSOAPMessage(msgContext,