MimeMultipart mp = null;
WsdlOperation operation = getMockOperation().getOperation();
if( operation == null )
throw new Exception( "Missing WsdlOperation for mock response" );
SoapVersion soapVersion = operation.getInterface().getSoapVersion();
StringToStringMap contentIds = new StringToStringMap();
boolean isXOP = isMtomEnabled() && isForceMtom();
// preprocess only if neccessary
if( isMtomEnabled() || isInlineFilesEnabled() || getAttachmentCount() > 0 )
{
try
{
mp = new MimeMultipart();
MessageXmlObject requestXmlObject = new MessageXmlObject( operation, responseContent, false );
MessageXmlPart[] requestParts = requestXmlObject.getMessageParts();
for( MessageXmlPart requestPart : requestParts )
{
if( AttachmentUtils.prepareMessagePart( this, mp, requestPart, contentIds ) )
isXOP = true;
}
responseContent = requestXmlObject.getMessageContent();
}
catch( Exception e )
{
e.printStackTrace();
}
}
if( isRemoveEmptyContent() )
{
responseContent = RemoveEmptyContentRequestFilter.removeEmptyContent( responseContent, getSoapVersion()
.getEnvelopeNamespace(), true );
}
if( isStripWhitespaces() )
{
responseContent = XmlUtils.stripWhitespaces( responseContent );
}
String status = getResponseHttpStatus();
WsdlMockRequest request = response.getMockRequest();
if( status == null || status.trim().length() == 0 )
{
if( SoapUtils.isSoapFault( responseContent, request.getSoapVersion() ) )
{
request.getHttpResponse().setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
response.setResponseStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
}
else
{
request.getHttpResponse().setStatus( HttpServletResponse.SC_OK );
response.setResponseStatus( HttpServletResponse.SC_OK );
}
}
else
{
try
{
int statusCode = Integer.parseInt( status );
request.getHttpResponse().setStatus( statusCode );
response.setResponseStatus( statusCode );
}
catch( RuntimeException e )
{
SoapUI.logError( e );
}
}
ByteArrayOutputStream outData = new ByteArrayOutputStream();
// non-multipart request?
String responseCompression = getResponseCompression();
if( !isXOP && ( mp == null || mp.getCount() == 0 ) && getAttachmentCount() == 0 )
{
String encoding = getEncoding();
if( responseContent == null )
responseContent = "";
byte[] content = encoding == null ? responseContent.getBytes() : responseContent.getBytes( encoding );
if( !response.getResponseHeaders().containsKeyIgnoreCase( "Content-Type" ) )
response.setContentType( soapVersion.getContentTypeHttpHeader( encoding, null ) );
String acceptEncoding = response.getMockRequest().getRequestHeaders().get( "Accept-Encoding", "" );
if( AUTO_RESPONSE_COMPRESSION.equals( responseCompression ) && acceptEncoding != null
&& acceptEncoding.toUpperCase().contains( "GZIP" ) )
{