Package com.eviware.soapui.support.editor.inspectors.jms.property

Source Code of com.eviware.soapui.support.editor.inspectors.jms.property.JMSHeaderAndPropertyInspectorFactory$MessageExchangeRequestJMSHeaderAndPropertiesModel

/*
*  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.jms.property;

import java.beans.PropertyChangeEvent;

import javax.jms.Message;

import com.eviware.soapui.impl.support.AbstractHttpRequest;
import com.eviware.soapui.impl.wsdl.submit.transports.jms.HermesJmsRequestTransport;
import com.eviware.soapui.impl.wsdl.submit.transports.jms.JMSEndpoint;
import com.eviware.soapui.impl.wsdl.submit.transports.jms.JMSHeader;
import com.eviware.soapui.impl.wsdl.submit.transports.jms.JMSResponse;
import com.eviware.soapui.impl.wsdl.submit.transports.jms.util.JMSUtils;
import com.eviware.soapui.impl.wsdl.support.MessageExchangeModelItem;
import com.eviware.soapui.model.ModelItem;
import com.eviware.soapui.model.iface.MessageExchange;
import com.eviware.soapui.model.iface.Submit;
import com.eviware.soapui.model.iface.SubmitContext;
import com.eviware.soapui.model.iface.SubmitListener;
import com.eviware.soapui.support.editor.Editor;
import com.eviware.soapui.support.editor.EditorInspector;
import com.eviware.soapui.support.editor.inspectors.jms.property.JMSHeaderAndPropertyInspectorModel.AbstractJMSHeaderAndPropertyModel;
import com.eviware.soapui.support.editor.registry.RequestInspectorFactory;
import com.eviware.soapui.support.editor.registry.ResponseInspectorFactory;
import com.eviware.soapui.support.types.StringToStringMap;

public class JMSHeaderAndPropertyInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory
{
  public static final String INSPECTOR_ID = "JMS Headers and Properties";

  public String getInspectorId()
  {
    return INSPECTOR_ID;
  }

  public EditorInspector<?> createRequestInspector( Editor<?> editor, ModelItem modelItem )
  {
    if( modelItem instanceof MessageExchangeModelItem )
    {
      JMSHeaderAndPropertyInspector inspector = new JMSHeaderAndPropertyInspector(
          ( JMSHeaderAndPropertyInspectorModel )new MessageExchangeRequestJMSHeaderAndPropertiesModel(
              ( MessageExchangeModelItem )modelItem ) );
      inspector.setEnabled( JMSUtils.checkIfJMS( modelItem ) );
      return inspector;
    }
    return null;
  }

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

    if( modelItem instanceof AbstractHttpRequest<?> )
    {
      JMSHeaderAndPropertyInspector inspector = new JMSHeaderAndPropertyInspector(
          ( JMSHeaderAndPropertyInspectorModel )new ResponseJMSHeaderAndPropertiesModel(
              ( AbstractHttpRequest<?> )modelItem ) );
      inspector.setEnabled( JMSUtils.checkIfJMS( modelItem ) );
      return inspector;
    }
    else if( modelItem instanceof MessageExchangeModelItem )
    {

      JMSHeaderAndPropertyInspector inspector = new JMSHeaderAndPropertyInspector(
          ( JMSHeaderAndPropertyInspectorModel )new MessageExchangeResponseJMSHeaderAndPropertiesModel(
              ( MessageExchangeModelItem )modelItem ) );
      inspector.setEnabled( JMSUtils.checkIfJMS( modelItem ) );
      return inspector;

    }
    return null;
  }

  private class ResponseJMSHeaderAndPropertiesModel extends AbstractJMSHeaderAndPropertyModel<AbstractHttpRequest<?>>
      implements SubmitListener
  {
    AbstractHttpRequest<?> request;
    JMSHeaderAndPropertyInspector inspector;
    StringToStringMap headersAndProperties;

    public ResponseJMSHeaderAndPropertiesModel( AbstractHttpRequest<?> wsdlRequest )
    {
      super( true, wsdlRequest, "jmsHeaderAndProperties" );
      this.request = wsdlRequest;
      request.addSubmitListener( this );
      request.addPropertyChangeListener( this );
    }

    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 );
    }

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

      request.removeSubmitListener( this );
      request.removePropertyChangeListener( this );
    }

    public StringToStringMap getJMSHeadersAndProperties()
    {
      return headersAndProperties;
    }

    public void afterSubmit( Submit submit, SubmitContext context )
    {
      headersAndProperties = new StringToStringMap();
      JMSResponse jmsResponse = ( JMSResponse )context.getProperty( HermesJmsRequestTransport.JMS_RESPONSE );
      if( jmsResponse instanceof JMSResponse )
      {
        Message message = jmsResponse.getMessageReceive();
        if( message != null )
          headersAndProperties.putAll( JMSHeader.getMessageHeadersAndProperties( message ).toStringToStringMap() );
      }
      inspector.getHeadersTableModel().setData( headersAndProperties );
    }

    public boolean beforeSubmit( Submit submit, SubmitContext context )
    {
      return true;
    }

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

  private class MessageExchangeResponseJMSHeaderAndPropertiesModel extends
      AbstractJMSHeaderAndPropertyModel<MessageExchangeModelItem>

  {
    @SuppressWarnings( "unused" )
    MessageExchangeModelItem messageExchangeModelItem;
    @SuppressWarnings( "unused" )
    JMSHeaderAndPropertyInspector inspector;

    public MessageExchangeResponseJMSHeaderAndPropertiesModel( MessageExchangeModelItem messageExchangeModelItem )
    {
      super( true, messageExchangeModelItem, MessageExchangeModelItem.MESSAGE_EXCHANGE );
      this.messageExchangeModelItem = messageExchangeModelItem;
    }

    public StringToStringMap getJMSHeadersAndProperties()
    {
      MessageExchange messageExchange = getModelItem().getMessageExchange();
      if( messageExchange != null )
        return messageExchange.getResponseHeaders().toStringToStringMap();
      else
        return new StringToStringMap();
    }

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

  }

  private class MessageExchangeRequestJMSHeaderAndPropertiesModel extends
      AbstractJMSHeaderAndPropertyModel<MessageExchangeModelItem>

  {
    @SuppressWarnings( "unused" )
    MessageExchangeModelItem messageExchangeModelItem;
    @SuppressWarnings( "unused" )
    JMSHeaderAndPropertyInspector inspector;

    public MessageExchangeRequestJMSHeaderAndPropertiesModel( MessageExchangeModelItem messageExchangeModelItem )
    {
      super( true, messageExchangeModelItem, MessageExchangeModelItem.MESSAGE_EXCHANGE );
      this.messageExchangeModelItem = messageExchangeModelItem;
    }

    public StringToStringMap getJMSHeadersAndProperties()
    {
      MessageExchange messageExchange = getModelItem().getMessageExchange();
      if( messageExchange != null && messageExchange.getRequestHeaders() != null )
        return messageExchange.getRequestHeaders().toStringToStringMap();
      else
        return new StringToStringMap();
    }

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

  }

}
TOP

Related Classes of com.eviware.soapui.support.editor.inspectors.jms.property.JMSHeaderAndPropertyInspectorFactory$MessageExchangeRequestJMSHeaderAndPropertiesModel

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.