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

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

/*
* Copyright 2004-2014 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/

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$MessageExchangeResponseJMSHeaderAndPropertiesModel

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.