Package com.eviware.soapui.impl.wsdl.mock

Source Code of com.eviware.soapui.impl.wsdl.mock.WsdlMockResult

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
*  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*  See the GNU Lesser General Public License for more details at gnu.org.
*/

package com.eviware.soapui.impl.wsdl.mock;

import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.Vector;

import javax.servlet.http.HttpServletResponse;

import org.mortbay.jetty.HttpFields;

import com.eviware.soapui.impl.wsdl.panels.mockoperation.WsdlMockResultMessageExchange;
import com.eviware.soapui.impl.wsdl.teststeps.actions.ShowMessageExchangeAction;
import com.eviware.soapui.model.mock.MockResponse;
import com.eviware.soapui.model.mock.MockResult;
import com.eviware.soapui.support.action.swing.ActionList;
import com.eviware.soapui.support.action.swing.DefaultActionList;
import com.eviware.soapui.support.types.StringToStringsMap;

/**
* The result of a handled WsdlMockRequest
*
* @author ole.matzura
*/

public class WsdlMockResult implements MockResult
{
  private WsdlMockResponse mockResponse;
  private String responseContent;
  private long timeTaken;
  private long timestamp;
  private DefaultActionList actions;
  private StringToStringsMap responseHeaders = new StringToStringsMap();
  private WsdlMockRequest mockRequest;
  private byte[] rawResponseData;
  private WsdlMockOperation mockOperation;
  private String responseContentType;
  private int responseStatus = 200;

  private SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss.SSS" );

  public WsdlMockResult( WsdlMockRequest request ) throws Exception
  {
    timestamp = System.currentTimeMillis();
    mockRequest = request;
  }

  public WsdlMockRequest getMockRequest()
  {
    return mockRequest;
  }

  public ActionList getActions()
  {
    if( actions == null )
    {
      actions = new DefaultActionList( "MockResult" );
      actions.setDefaultAction( new ShowMessageExchangeAction(
          new WsdlMockResultMessageExchange( this, mockResponse ), "MockResult" ) );
    }

    return actions;
  }

  public WsdlMockResponse getMockResponse()
  {
    return mockResponse;
  }

  public String getResponseContent()
  {
    return responseContent;
  }

  public long getTimeTaken()
  {
    return timeTaken;
  }

  public long getTimestamp()
  {
    return timestamp;
  }

  public void setTimestamp( long timestamp )
  {
    this.timestamp = timestamp;
  }

  public void setTimeTaken( long timeTaken )
  {
    this.timeTaken = timeTaken;
  }

  public StringToStringsMap getResponseHeaders()
  {
    return responseHeaders;
  }

  public void setMockResponse( WsdlMockResponse mockResponse )
  {
    this.mockResponse = mockResponse;
    mockRequest.getRequestContext().setMockResponse( mockResponse );
  }

  /**
   * @deprecated
   */

  public void setReponseContent( String responseContent )
  {
    this.responseContent = responseContent;
  }

  public void setResponseContent( String responseContent )
  {
    this.responseContent = responseContent;
  }

  @SuppressWarnings( "unchecked" )
  public void finish()
  {
    if( mockRequest.getHttpResponse() instanceof org.mortbay.jetty.Response )
    {
      HttpFields httpFields = ( ( org.mortbay.jetty.Response )mockRequest.getHttpResponse() ).getHttpFields();

      Enumeration<String> e = httpFields.getFieldNames();
      while( e.hasMoreElements() )
      {
        String nextElement = e.nextElement();
        responseHeaders.add( nextElement, httpFields.getStringField( nextElement ) );
      }
    }
  }

  public void addHeader( String name, String value )
  {
    if( mockRequest.getHttpResponse() != null )
      mockRequest.getHttpResponse().addHeader( name, value );

    responseHeaders.add( name, value );
  }

  public boolean isCommitted()
  {
    return mockRequest.getHttpResponse().isCommitted();
  }

  public void setContentType( String contentType )
  {
    mockRequest.getHttpResponse().setContentType( contentType );
    responseContentType = contentType;
  }

  public OutputStream getOutputStream() throws IOException
  {
    return mockRequest.getHttpResponse().getOutputStream();
  }

  public void initResponse()
  {
    mockRequest.getHttpResponse().setStatus( HttpServletResponse.SC_OK );
    responseStatus = HttpServletResponse.SC_OK;
  }

  public boolean isDiscarded()
  {
    return false;
  }

  public Vector<?> getRequestWssResult()
  {
    return mockRequest.getWssResult();
  }

  public byte[] getRawResponseData()
  {
    return rawResponseData;
  }

  public void setRawResponseData( byte[] rawResponseData )
  {
    this.rawResponseData = rawResponseData;
  }

  public void writeRawResponseData( byte[] bs ) throws IOException
  {
    getOutputStream().write( bs );
    setRawResponseData( bs );
  }

  public void setMockOperation( WsdlMockOperation mockOperation )
  {
    this.mockOperation = mockOperation;
  }

  public WsdlMockOperation getMockOperation()
  {
    if( mockOperation != null )
      return mockOperation;

    return mockResponse == null ? null : mockResponse.getMockOperation();
  }

  public String getResponseContentType()
  {
    return responseContentType;
  }

  public int getResponseStatus()
  {
    return responseStatus;
  }

  public void setResponseStatus( int responseStatus )
  {
    this.responseStatus = responseStatus;
  }

  public void setResponseContentType( String responseContentType )
  {
    this.responseContentType = responseContentType;
  }

  public String toString()
  {
    StringBuilder msg = new StringBuilder( dateFormat.format( new Date( getTimestamp() ) ) );
    MockResponse mockResponse = getMockResponse();

    if( mockResponse == null )
    {
      msg.append( ": [dispatch error; missing response]" );
    }
    else
    {
      try
      {
        msg.append( ": [" + mockResponse.getMockOperation().getName() );
      }
      catch( Throwable e )
      {
        msg.append( ": [removed operation?]" );
      }

      msg.append( "] " + getTimeTaken() + "ms" );
    }
    return msg.toString();
  }
}
TOP

Related Classes of com.eviware.soapui.impl.wsdl.mock.WsdlMockResult

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.