/*
* SoapUI, Copyright (C) 2004-2016 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.amfheader;
import com.eviware.soapui.impl.wsdl.panels.teststeps.amf.AMFRequest;
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.support.editor.Editor;
import com.eviware.soapui.support.editor.EditorInspector;
import com.eviware.soapui.support.editor.inspectors.amfheader.AMFHeadersInspectorModel.AbstractHeadersModel;
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 AMFHeadersInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory {
public static final String INSPECTOR_ID = "AMF Headers";
public String getInspectorId() {
return INSPECTOR_ID;
}
public EditorInspector<?> createRequestInspector(Editor<?> editor, ModelItem modelItem) {
if (modelItem instanceof AMFRequestTestStep) {
AMFHeadersInspector inspector = new AMFHeadersInspector(new AMFRequestHeadersModel(
(AMFRequestTestStep) modelItem));
inspector.setEnabled(true);
return inspector;
} else if (modelItem instanceof MessageExchangeModelItem) {
if (((MessageExchangeModelItem) modelItem).getMessageExchange() instanceof AMFTestStepResult) {
AMFHeadersInspector inspector = new AMFHeadersInspector(new MessageExchangeRequestAMFHeadersModel(
(MessageExchangeModelItem) modelItem));
inspector.setEnabled(true);
return inspector;
}
}
return null;
}
public EditorInspector<?> createResponseInspector(Editor<?> editor, ModelItem modelItem) {
if (modelItem instanceof AMFRequestTestStep) {
AMFHeadersInspector inspector = new AMFHeadersInspector(new AMFResponseHeadersModel(
(AMFRequestTestStep) modelItem));
inspector.setEnabled(true);
return inspector;
} else if (modelItem instanceof MessageExchangeModelItem) {
if (((MessageExchangeModelItem) modelItem).getMessageExchange() instanceof AMFTestStepResult) {
AMFHeadersInspector inspector = new AMFHeadersInspector(new MessageExchangeResponseAMFHeadersModel(
(MessageExchangeModelItem) modelItem));
inspector.setEnabled(true);
return inspector;
}
}
return null;
}
private class MessageExchangeRequestAMFHeadersModel extends AbstractHeadersModel<MessageExchangeModelItem> {
public MessageExchangeRequestAMFHeadersModel(MessageExchangeModelItem request) {
super(true, request, MessageExchangeModelItem.MESSAGE_EXCHANGE);
}
public StringToStringMap getHeaders() {
if (getModelItem().getMessageExchange() instanceof AMFTestStepResult) {
AMFTestStepResult messageExchange = (AMFTestStepResult) getModelItem().getMessageExchange();
return ((AMFRequestTestStep) messageExchange.getTestStep()).getAmfHeaders();
}
return new StringToStringMap();
}
}
private class MessageExchangeResponseAMFHeadersModel extends AbstractHeadersModel<MessageExchangeModelItem> {
public MessageExchangeResponseAMFHeadersModel(MessageExchangeModelItem messageExchange) {
super(true, messageExchange, MessageExchangeModelItem.MESSAGE_EXCHANGE);
}
public StringToStringMap getHeaders() {
if (getModelItem().getMessageExchange() instanceof AMFTestStepResult) {
AMFTestStepResult messageExchange = (AMFTestStepResult) getModelItem().getMessageExchange();
if (((AMFRequestTestStep) messageExchange.getTestStep()).getAMFRequest().getResponse() != null) {
return ((AMFRequestTestStep) messageExchange.getTestStep()).getAMFRequest().getResponse()
.getResponseAMFHeaders();
} else {
return new StringToStringMap();
}
}
return new StringToStringMap();
}
}
private class AMFRequestHeadersModel extends AbstractHeadersModel<AMFRequestTestStep> {
public AMFRequestHeadersModel(AMFRequestTestStep testStep) {
super(false, testStep, AMFRequestTestStep.AMF_HEADERS_PROPERTY);
}
public StringToStringMap getHeaders() {
return getModelItem().getAmfHeaders();
}
public void setHeaders(StringToStringMap headers) {
getModelItem().setAmfHeaders(headers);
}
@Override
public void release() {
getModelItem().removePropertyChangeListener(AMFRequestTestStep.AMF_HEADERS_PROPERTY, this);
super.release();
}
}
private class AMFResponseHeadersModel extends AbstractHeadersModel<AMFRequestTestStep> {
AMFRequest request;
public AMFResponseHeadersModel(AMFRequestTestStep testStep) {
super(true, testStep, AMFRequestTestStep.AMF_HEADERS_PROPERTY);
this.request = testStep.getAMFRequest();
this.request.addPropertyChangeListener(AMFRequest.AMF_RESPONSE_PROPERTY, this);
}
public StringToStringMap getHeaders() {
if (getModelItem().getAMFRequest().getResponse() != null) {
return getModelItem().getAMFRequest().getResponse().getResponseAMFHeaders();
} else {
return new StringToStringMap();
}
}
@Override
public void release() {
request.removePropertyChangeListener(AMFRequest.AMF_RESPONSE_PROPERTY, this);
super.release();
}
}
}