/* * 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.wss; import com.eviware.soapui.impl.wsdl.WsdlRequest; import com.eviware.soapui.impl.wsdl.mock.WsdlMockResponse; import com.eviware.soapui.impl.wsdl.mock.WsdlMockResult; import com.eviware.soapui.impl.wsdl.submit.WsdlMessageExchange; import com.eviware.soapui.impl.wsdl.support.MessageExchangeModelItem; 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.registry.RequestInspectorFactory; import com.eviware.soapui.support.editor.registry.ResponseInspectorFactory; import com.eviware.soapui.support.editor.xml.XmlInspector; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Vector; public class WssInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory { public static final String INSPECTOR_ID = "WSS"; public String getInspectorId() { return INSPECTOR_ID; } public EditorInspector<?> createRequestInspector(Editor<?> editor, ModelItem modelItem) { if (modelItem instanceof WsdlMockResponse) { return new WsdlMockRequestWssInspector((WsdlMockResponse) modelItem); } else if (modelItem instanceof MessageExchangeModelItem) { return new RequestMessageExchangeWssInspector((MessageExchangeModelItem) modelItem); } return null; } public EditorInspector<?> createResponseInspector(Editor<?> editor, ModelItem modelItem) { if (modelItem instanceof WsdlRequest) { return new WsdlResponseWssInspector((WsdlRequest) modelItem); } else if (modelItem instanceof MessageExchangeModelItem) { return new ResponseMessageExchangeWssInspector((MessageExchangeModelItem) modelItem); } return null; } public class WsdlMockRequestWssInspector extends AbstractWssInspector implements XmlInspector, PropertyChangeListener { private final WsdlMockResponse response; public WsdlMockRequestWssInspector(WsdlMockResponse response) { this.response = response; response.addPropertyChangeListener(WsdlMockResponse.MOCKRESULT_PROPERTY, this); } @Override public Vector<?> getWssResults() { return response.getMockResult() == null ? null : ((WsdlMockResult) response.getMockResult()).getRequestWssResult(); } public void propertyChange(PropertyChangeEvent evt) { update(); } @Override public void release() { response.removePropertyChangeListener(WsdlMockResponse.MOCKRESULT_PROPERTY, this); } } public class RequestMessageExchangeWssInspector extends AbstractWssInspector implements XmlInspector, PropertyChangeListener { private final MessageExchangeModelItem item; public RequestMessageExchangeWssInspector(MessageExchangeModelItem item) { this.item = item; item.addPropertyChangeListener(MessageExchangeModelItem.MESSAGE_EXCHANGE, this); } @Override public Vector<?> getWssResults() { return item.getMessageExchange() instanceof WsdlMessageExchange ? ((WsdlMessageExchange) item .getMessageExchange()).getRequestWssResult() : null; } public void propertyChange(PropertyChangeEvent evt) { update(); } @Override public void release() { item.removePropertyChangeListener(MessageExchangeModelItem.MESSAGE_EXCHANGE, this); } } public class WsdlResponseWssInspector extends AbstractWssInspector implements XmlInspector, PropertyChangeListener { private final WsdlRequest response; public WsdlResponseWssInspector(WsdlRequest response) { this.response = response; response.addPropertyChangeListener(WsdlRequest.RESPONSE_PROPERTY, this); } @Override public Vector<?> getWssResults() { return response.getResponse() == null ? null : response.getResponse().getWssResult(); } public void propertyChange(PropertyChangeEvent evt) { update(); } @Override public void release() { response.removePropertyChangeListener(WsdlRequest.RESPONSE_PROPERTY, this); } } public class ResponseMessageExchangeWssInspector extends AbstractWssInspector implements XmlInspector, PropertyChangeListener { private final MessageExchangeModelItem item; public ResponseMessageExchangeWssInspector(MessageExchangeModelItem item) { this.item = item; item.addPropertyChangeListener(MessageExchangeModelItem.MESSAGE_EXCHANGE, this); } @Override public Vector<?> getWssResults() { return item.getMessageExchange() instanceof WsdlMessageExchange ? ((WsdlMessageExchange) item .getMessageExchange()).getResponseWssResult() : null; } public void propertyChange(PropertyChangeEvent evt) { update(); } @Override public void release() { item.removePropertyChangeListener(MessageExchangeModelItem.MESSAGE_EXCHANGE, this); } } }