/*
* 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.jms.property;
import com.eviware.soapui.config.JMSPropertyConfig;
import com.eviware.soapui.impl.support.AbstractHttpRequest;
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.model.ModelItem;
import com.eviware.soapui.support.editor.Editor;
import com.eviware.soapui.support.editor.EditorInspector;
import com.eviware.soapui.support.editor.inspectors.jms.property.JMSPropertyInspectorModel.AbstractJMSPropertyModel;
import com.eviware.soapui.support.editor.registry.RequestInspectorFactory;
import com.eviware.soapui.support.editor.registry.ResponseInspectorFactory;
import com.eviware.soapui.support.types.StringToStringMap;
import java.beans.PropertyChangeEvent;
import java.util.ArrayList;
import java.util.List;
public class JMSPropertyInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory {
public static final String INSPECTOR_ID = "JMS Properties";
public String getInspectorId() {
return INSPECTOR_ID;
}
public EditorInspector<?> createRequestInspector(Editor<?> editor, ModelItem modelItem) {
if (modelItem instanceof AbstractHttpRequest<?>) {
JMSPropertyInspector inspector = new JMSPropertyInspector(
(JMSPropertyInspectorModel) new WsdlRequestJMSPropertiesModel((AbstractHttpRequest<?>) modelItem));
inspector.setEnabled(JMSUtils.checkIfJMS(modelItem));
return inspector;
}
return null;
}
public EditorInspector<?> createResponseInspector(Editor<?> editor, ModelItem modelItem) {
return null;
}
private class WsdlRequestJMSPropertiesModel extends AbstractJMSPropertyModel<AbstractHttpRequest<?>> {
AbstractHttpRequest<?> request;
JMSPropertyInspector inspector;
public WsdlRequestJMSPropertiesModel(AbstractHttpRequest<?> wsdlRequest) {
super(false, wsdlRequest, "jmsProperty");
this.request = wsdlRequest;
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_ENDPOINT_PREFIX));
}
super.propertyChange(evt);
}
@Override
public void release() {
super.release();
request.removePropertyChangeListener(this);
}
public StringToStringMap getJMSProperties() {
List<JMSPropertyConfig> propertyList = request.getJMSPropertiesConfig().getJMSProperties();
StringToStringMap stringToStringMap = new StringToStringMap(propertyList.size());
for (JMSPropertyConfig jmsProperty : propertyList) {
stringToStringMap.put(jmsProperty.getName(), jmsProperty.getValue());
}
return stringToStringMap;
}
public void setJMSProperties(StringToStringMap stringToStringMap) {
String[] keyList = stringToStringMap.getKeys();
List<JMSPropertyConfig> propertyList = new ArrayList<JMSPropertyConfig>();
for (String key : keyList) {
JMSPropertyConfig jmsPropertyConfig = JMSPropertyConfig.Factory.newInstance();
jmsPropertyConfig.setName(key);
jmsPropertyConfig.setValue(stringToStringMap.get(key));
propertyList.add(jmsPropertyConfig);
}
List<JMSPropertyConfig> propertyList2 = request.getJMSPropertiesConfig().getJMSProperties();
propertyList2.clear();
propertyList2.addAll(propertyList);
}
public void setInspector(JMSPropertyInspector inspector) {
this.inspector = inspector;
}
}
}