Package com.eviware.soapui.support.editor.inspectors.httpheaders

Source Code of com.eviware.soapui.support.editor.inspectors.httpheaders.HttpHeadersInspectorFactory$WsdlMessageExchangeRequestHeadersModel

/*
*  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.support.editor.inspectors.httpheaders;

import java.beans.PropertyChangeEvent;

import com.eviware.soapui.impl.support.AbstractHttpRequest;
import com.eviware.soapui.impl.support.AbstractHttpRequestInterface;
import com.eviware.soapui.impl.wsdl.WsdlRequest;
import com.eviware.soapui.impl.wsdl.mock.WsdlMockResponse;
import com.eviware.soapui.impl.wsdl.panels.teststeps.amf.AMFRequest;
import com.eviware.soapui.impl.wsdl.panels.teststeps.amf.AMFResponse;
import com.eviware.soapui.impl.wsdl.submit.transports.jms.JMSEndpoint;
import com.eviware.soapui.impl.wsdl.submit.transports.jms.util.JMSUtils;
import com.eviware.soapui.impl.wsdl.support.MessageExchangeModelItem;
import com.eviware.soapui.impl.wsdl.teststeps.AMFRequestTestStep;
import com.eviware.soapui.impl.wsdl.teststeps.AMFTestStepResult;
import com.eviware.soapui.model.ModelItem;
import com.eviware.soapui.model.iface.MessageExchange;
import com.eviware.soapui.support.editor.Editor;
import com.eviware.soapui.support.editor.EditorInspector;
import com.eviware.soapui.support.editor.inspectors.AbstractXmlInspector;
import com.eviware.soapui.support.editor.inspectors.httpheaders.HttpHeadersInspectorModel.AbstractHeadersModel;
import com.eviware.soapui.support.editor.registry.RequestInspectorFactory;
import com.eviware.soapui.support.editor.registry.ResponseInspectorFactory;
import com.eviware.soapui.support.types.StringToStringsMap;

public class HttpHeadersInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory
{
  public static final String INSPECTOR_ID = "HTTP Headers";

  public String getInspectorId()
  {
    return INSPECTOR_ID;
  }

  public EditorInspector<?> createRequestInspector( Editor<?> editor, ModelItem modelItem )
  {

    if( modelItem instanceof AbstractHttpRequestInterface<?> )
    {
      HttpHeadersInspector inspector = new HttpHeadersInspector( new WsdlRequestHeadersModel(
          ( AbstractHttpRequest<?> )modelItem ) );
      inspector.setEnabled( !JMSUtils.checkIfJMS( modelItem ) );
      return inspector;
    }
    else if( modelItem instanceof WsdlMockResponse )
    {
      HttpHeadersInspector inspector = new HttpHeadersInspector( new WsdlMockResponseRequestHeadersModel(
          ( WsdlMockResponse )modelItem ) );
      inspector.setEnabled( !JMSUtils.checkIfJMS( modelItem ) );
      return inspector;
    }
    else if( modelItem instanceof MessageExchangeModelItem )
    {
      if( ( ( MessageExchangeModelItem )modelItem ).getMessageExchange() instanceof AMFTestStepResult )
      {
        HttpHeadersInspector inspector = new HttpHeadersInspector( new AMFMessageExchangeRequestHTTPHeadersModel(
            ( MessageExchangeModelItem )modelItem ) );
        inspector.setEnabled( true );
        return inspector;
      }
      HttpHeadersInspector inspector = new HttpHeadersInspector( new WsdlMessageExchangeRequestHeadersModel(
          ( MessageExchangeModelItem )modelItem ) );
      inspector.setEnabled( !JMSUtils.checkIfJMS( modelItem ) );
      return inspector;
    }
    else if( modelItem instanceof AMFRequestTestStep )
    {
      HttpHeadersInspector inspector = new HttpHeadersInspector( new AMFRequestHeadersModel(
          ( AMFRequestTestStep )modelItem ) );
      inspector.setEnabled( !JMSUtils.checkIfJMS( modelItem ) );
      return inspector;
    }

    return null;
  }

  public EditorInspector<?> createResponseInspector( Editor<?> editor, ModelItem modelItem )
  {
    if( modelItem instanceof AbstractHttpRequestInterface<?> )
    {
      HttpHeadersInspector inspector = new HttpHeadersInspector( new WsdlRequestResponseHeadersModel(
          ( AbstractHttpRequest<?> )modelItem ) );
      inspector.setEnabled( !JMSUtils.checkIfJMS( modelItem ) );
      return inspector;
    }
    else if( modelItem instanceof WsdlMockResponse )
    {
      HttpHeadersInspector inspector = new HttpHeadersInspector( new WsdlMockResponseHeadersModel(
          ( WsdlMockResponse )modelItem ) );
      inspector.setEnabled( !JMSUtils.checkIfJMS( modelItem ) );
      return inspector;
    }
    else if( modelItem instanceof MessageExchangeModelItem )
    {
      if( ( ( MessageExchangeModelItem )modelItem ).getMessageExchange() instanceof AMFTestStepResult )
      {
        HttpHeadersInspector inspector = new HttpHeadersInspector( new AMFMessageExchangeResponseHTTPHeadersModel(
            ( MessageExchangeModelItem )modelItem ) );
        inspector.setEnabled( true );
        return inspector;
      }
      HttpHeadersInspector inspector = new HttpHeadersInspector( new WsdlMessageExchangeResponseHeadersModel(
          ( MessageExchangeModelItem )modelItem ) );
      inspector.setEnabled( !JMSUtils.checkIfJMS( modelItem ) );
      return inspector;
    }
    else if( modelItem instanceof AMFRequestTestStep )
    {
      HttpHeadersInspector inspector = new HttpHeadersInspector( new AMFResponseHeadersModel(
          ( AMFRequestTestStep )modelItem ) );
      inspector.setEnabled( !JMSUtils.checkIfJMS( modelItem ) );
      return inspector;
    }

    return null;
  }

  private class WsdlMessageExchangeRequestHeadersModel extends AbstractHeadersModel<MessageExchangeModelItem>
  {
    public WsdlMessageExchangeRequestHeadersModel( MessageExchangeModelItem request )
    {
      super( true, request, MessageExchangeModelItem.MESSAGE_EXCHANGE );
    }

    public StringToStringsMap getHeaders()
    {
      MessageExchange messageExchange = getModelItem().getMessageExchange();
      return messageExchange == null ? new StringToStringsMap() : messageExchange.getRequestHeaders();
    }
  }

  private class AMFMessageExchangeRequestHTTPHeadersModel extends AbstractHeadersModel<MessageExchangeModelItem>
  {
    public AMFMessageExchangeRequestHTTPHeadersModel( MessageExchangeModelItem request )
    {
      super( true, request, MessageExchangeModelItem.MESSAGE_EXCHANGE );
    }

    public StringToStringsMap getHeaders()
    {
      if( getModelItem().getMessageExchange() instanceof AMFTestStepResult )
      {
        AMFTestStepResult messageExchange = ( AMFTestStepResult )getModelItem().getMessageExchange();
        return ( ( AMFRequestTestStep )messageExchange.getTestStep() ).getHttpHeaders();
      }
      return new StringToStringsMap();
    }
  }

  private class AMFMessageExchangeResponseHTTPHeadersModel extends AbstractHeadersModel<MessageExchangeModelItem>
  {
    public AMFMessageExchangeResponseHTTPHeadersModel( MessageExchangeModelItem modelItem )
    {
      super( true, modelItem, MessageExchangeModelItem.MESSAGE_EXCHANGE );
    }

    public StringToStringsMap getHeaders()
    {
      if( getModelItem().getMessageExchange() instanceof AMFTestStepResult )
      {
        AMFTestStepResult messageExchange = ( AMFTestStepResult )getModelItem().getMessageExchange();
        return ( ( AMFResponse )messageExchange.getResponse() ).getResponseHeaders();
      }
      return new StringToStringsMap();
    }
  }

  private class WsdlMessageExchangeResponseHeadersModel extends AbstractHeadersModel<MessageExchangeModelItem>
  {
    public WsdlMessageExchangeResponseHeadersModel( MessageExchangeModelItem response )
    {
      super( true, response, MessageExchangeModelItem.MESSAGE_EXCHANGE );
    }

    public StringToStringsMap getHeaders()
    {
      MessageExchange messageExchange = getModelItem().getMessageExchange();
      return messageExchange == null ? new StringToStringsMap() : messageExchange.getResponseHeaders();
    }

  }

  private class WsdlRequestHeadersModel extends AbstractHeadersModel<AbstractHttpRequest<?>>
  {
    AbstractHttpRequest<?> request;
    AbstractXmlInspector inspector;

    public WsdlRequestHeadersModel( AbstractHttpRequest<?> abstractHttpRequest )
    {
      super( false, abstractHttpRequest, AbstractHttpRequestInterface.REQUEST_HEADERS_PROPERTY );
      this.request = abstractHttpRequest;
      this.request.addPropertyChangeListener( this );
    }

    public StringToStringsMap getHeaders()
    {
      return getModelItem().getRequestHeaders();
    }

    public void setHeaders( StringToStringsMap headers )
    {
      getModelItem().setRequestHeaders( headers );
    }

    public void setInspector( AbstractXmlInspector inspector )
    {
      this.inspector = inspector;
    }

    @Override
    public void release()
    {
      super.release();
      request.removePropertyChangeListener( this );
    }

    public void propertyChange( PropertyChangeEvent evt )
    {
      if( evt.getPropertyName().equals( AbstractHttpRequest.ENDPOINT_PROPERTY ) )
      {
        if( inspector != null && request.getEndpoint() != null )
        {
          inspector.setEnabled( !request.getEndpoint().startsWith( JMSEndpoint.JMS_ENDPIONT_PREFIX ) );
        }
      }
      super.propertyChange( evt );
    }

  }

  private class AMFRequestHeadersModel extends AbstractHeadersModel<AMFRequestTestStep>
  {
    public AMFRequestHeadersModel( AMFRequestTestStep testStep )
    {
      super( false, testStep, AMFRequest.AMF_REQUEST );
    }

    public StringToStringsMap getHeaders()
    {
      return getModelItem().getHttpHeaders();
    }

    public void setHeaders( StringToStringsMap headers )
    {
      getModelItem().setHttpHeaders( headers );
    }

    @Override
    public void release()
    {
      super.release();
    }

  }

  private class AMFResponseHeadersModel extends AbstractHeadersModel<AMFRequestTestStep>
  {
    AMFRequestTestStep testStep;

    public AMFResponseHeadersModel( AMFRequestTestStep testStep )
    {
      super( true, testStep, AMFResponse.AMF_RESPONSE_HEADERS );
      this.testStep = testStep;
      this.testStep.getAMFRequest().addPropertyChangeListener( AMFRequest.AMF_RESPONSE_PROPERTY, this );
    }

    public StringToStringsMap getHeaders()
    {
      if( testStep.getAMFRequest().getResponse() != null )
      {
        AMFResponse response = testStep.getAMFRequest().getResponse();
        return response.getResponseHeaders();
      }
      else
        return new StringToStringsMap();
    }

    @Override
    public void release()
    {
      super.release();
      testStep.getAMFRequest().removePropertyChangeListener( AMFRequest.AMF_RESPONSE_PROPERTY, this );
    }
  }

  private class WsdlMockResponseHeadersModel extends AbstractHeadersModel<WsdlMockResponse>
  {
    public WsdlMockResponseHeadersModel( WsdlMockResponse request )
    {
      super( false, request, WsdlMockResponse.HEADERS_PROPERTY );
    }

    public StringToStringsMap getHeaders()
    {
      return getModelItem().getResponseHeaders();
    }

    public void setHeaders( StringToStringsMap headers )
    {
      getModelItem().setResponseHeaders( headers );
    }

  }

  private class WsdlRequestResponseHeadersModel extends AbstractHeadersModel<AbstractHttpRequest<?>>
  {

    AbstractHttpRequest<?> request;
    AbstractXmlInspector inspector;

    public WsdlRequestResponseHeadersModel( AbstractHttpRequest<?> request )
    {
      super( true, request, WsdlRequest.RESPONSE_PROPERTY );
      this.request = request;
      this.request.addPropertyChangeListener( this );
    }

    public StringToStringsMap getHeaders()
    {
      AbstractHttpRequestInterface<?> request = getModelItem();
      return request.getResponse() == null ? new StringToStringsMap() : request.getResponse().getResponseHeaders();
    }

    public void setInspector( AbstractXmlInspector inspector )
    {
      this.inspector = inspector;
    }

    public void propertyChange( PropertyChangeEvent evt )
    {
      if( request.getEndpoint() != null && evt.getPropertyName().equals( AbstractHttpRequest.ENDPOINT_PROPERTY ) )
      {
        inspector.setEnabled( !request.getEndpoint().startsWith( JMSEndpoint.JMS_ENDPIONT_PREFIX ) );
      }
      super.propertyChange( evt );
    }

    @Override
    public void release()
    {
      super.release();

      request.removePropertyChangeListener( this );
    }
  }

  private class WsdlMockResponseRequestHeadersModel extends AbstractHeadersModel<WsdlMockResponse>
  {
    public WsdlMockResponseRequestHeadersModel( WsdlMockResponse request )
    {
      super( true, request, WsdlMockResponse.MOCKRESULT_PROPERTY );
    }

    public StringToStringsMap getHeaders()
    {
      WsdlMockResponse request = getModelItem();
      return request.getMockResult() == null ? new StringToStringsMap() : request.getMockResult().getMockRequest()
          .getRequestHeaders();
    }
  }
}
TOP

Related Classes of com.eviware.soapui.support.editor.inspectors.httpheaders.HttpHeadersInspectorFactory$WsdlMessageExchangeRequestHeadersModel

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.