Author: sagara Date: Fri Dec 28 09:39:11 2012 New Revision: 1426443 URL: http://svn.apache.org/viewvc?rev=1426443&view=rev Log: Fix for AXIS2-5427.
Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java?rev=1426443&r1=1426442&r2=1426443&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java (original) +++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java Fri Dec 28 09:39:11 2012 @@ -28,10 +28,12 @@ import org.apache.axis2.context.MessageC import org.apache.axis2.context.ServiceContext; import org.apache.axis2.engine.AxisEngine; import org.apache.axis2.transport.TransportUtils; +import org.apache.axis2.transport.http.HTTPConstants; import org.apache.axis2.util.Utils; import javax.xml.namespace.QName; import java.io.InputStream; +import java.util.Map; public class RobustOutOnlyAxisOperation extends OutInAxisOperation { @@ -77,7 +79,7 @@ public class RobustOutOnlyAxisOperation // set the variable InputStream inStream = (InputStream) responseMessageContext. getProperty(MessageContext.TRANSPORT_IN); - if (inStream != null) { + if (inStream != null && checkContentLength(responseMessageContext)) { envelope = TransportUtils.createSOAPMessage( responseMessageContext); responseMessageContext.setEnvelope(envelope); @@ -92,5 +94,36 @@ public class RobustOutOnlyAxisOperation } } } - } + + + private boolean checkContentLength(MessageContext responseMessageContext) { + + Map<String, String> transportHeaders = (Map<String, String>) responseMessageContext + .getProperty(MessageContext.TRANSPORT_HEADERS); + + if (transportHeaders == null) { + // transportHeaders = null , we can't check this further and + // allow to try with message building. + return true; + } + + String contentLengthStr = contentLengthStr = (String) transportHeaders + .get(HTTPConstants.HEADER_CONTENT_LENGTH); + + if (contentLengthStr == null) { + // contentLengthStr = null we can't check this further and allow + // to try with message building. + return true; + } + + int contentLength = -1; + contentLength = Integer.parseInt(contentLengthStr); + if (contentLength > 0) { + // We have valid Content-Length no issue with message building. + return true; + } + + return false; + } + } }