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,