View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2010 eviware.com 
3    *
4    *  soapUI is free software; you can redistribute it and/or modify it under the 
5    *  terms of version 2.1 of the GNU Lesser General Public License as published by 
6    *  the Free Software Foundation.
7    *
8    *  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
9    *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
10   *  See the GNU Lesser General Public License for more details at gnu.org.
11   */
12  
13  package com.eviware.soapui.support.editor.inspectors.jms.property;
14  
15  import java.beans.PropertyChangeEvent;
16  import java.util.ArrayList;
17  import java.util.List;
18  
19  import com.eviware.soapui.config.JMSPropertyConfig;
20  import com.eviware.soapui.impl.support.AbstractHttpRequest;
21  import com.eviware.soapui.impl.wsdl.submit.transports.jms.JMSEndpoint;
22  import com.eviware.soapui.impl.wsdl.submit.transports.jms.util.JMSUtils;
23  import com.eviware.soapui.model.ModelItem;
24  import com.eviware.soapui.support.editor.Editor;
25  import com.eviware.soapui.support.editor.EditorInspector;
26  import com.eviware.soapui.support.editor.inspectors.jms.property.JMSPropertyInspectorModel.AbstractJMSPropertyModel;
27  import com.eviware.soapui.support.editor.registry.RequestInspectorFactory;
28  import com.eviware.soapui.support.editor.registry.ResponseInspectorFactory;
29  import com.eviware.soapui.support.types.StringToStringMap;
30  
31  public class JMSPropertyInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory
32  {
33  	public static final String INSPECTOR_ID = "JMS Properties";
34  
35  	public String getInspectorId()
36  	{
37  		return INSPECTOR_ID;
38  	}
39  
40  	public EditorInspector<?> createRequestInspector(Editor<?> editor, ModelItem modelItem)
41  	{
42  		if (modelItem instanceof AbstractHttpRequest<?>)
43  		{
44  			JMSPropertyInspector inspector = new JMSPropertyInspector(
45  					(JMSPropertyInspectorModel) new WsdlRequestJMSPropertiesModel((AbstractHttpRequest<?>) modelItem));
46  			inspector.setEnabled(JMSUtils.checkIfJMS(modelItem));
47  			return inspector;
48  		}
49  		return null;
50  	}
51  
52  	public EditorInspector<?> createResponseInspector(Editor<?> editor, ModelItem modelItem)
53  	{
54  
55  		return null;
56  	}
57  
58  	private class WsdlRequestJMSPropertiesModel extends AbstractJMSPropertyModel<AbstractHttpRequest<?>>
59  	{
60  		AbstractHttpRequest<?> request;
61  		JMSPropertyInspector inspector;
62  
63  		public WsdlRequestJMSPropertiesModel(AbstractHttpRequest<?> wsdlRequest)
64  		{
65  			super(false, wsdlRequest, "jmsProperty");
66  			this.request = wsdlRequest;
67  			request.addPropertyChangeListener(this);
68  		}
69  
70  		public void propertyChange(PropertyChangeEvent evt)
71  		{
72  			if (request.getEndpoint() !=null && evt.getPropertyName().equals(AbstractHttpRequest.ENDPOINT_PROPERTY))
73  			{
74  				inspector.setEnabled(request.getEndpoint().startsWith(JMSEndpoint.JMS_ENDPIONT_PREFIX));
75  			}
76  			super.propertyChange(evt);
77  		}
78  
79  		public StringToStringMap getJMSProperties()
80  		{
81  			List<JMSPropertyConfig> propertyList = request.getJMSPropertiesConfig().getJMSProperties();
82  			StringToStringMap stringToStringMap = new StringToStringMap(propertyList.size());
83  			for (JMSPropertyConfig jmsProperty : propertyList)
84  			{
85  				stringToStringMap.put(jmsProperty.getName(), jmsProperty.getValue());
86  			}
87  			return stringToStringMap;
88  		}
89  
90  		public void setJMSProperties(StringToStringMap stringToStringMap)
91  		{
92  			String[] keyList = stringToStringMap.getKeys();
93  			List<JMSPropertyConfig> propertyList = new ArrayList<JMSPropertyConfig>();
94  			for (String key : keyList)
95  			{
96  				JMSPropertyConfig jmsPropertyConfig = JMSPropertyConfig.Factory.newInstance();
97  				jmsPropertyConfig.setName(key);
98  				jmsPropertyConfig.setValue(stringToStringMap.get(key));
99  				propertyList.add(jmsPropertyConfig);
100 			}
101 			List<JMSPropertyConfig> propertyList2 = request.getJMSPropertiesConfig().getJMSProperties();
102 			propertyList2.clear();
103 			propertyList2.addAll(propertyList);
104 		}
105 
106 		public void setInspector(JMSPropertyInspector inspector)
107 		{
108 			this.inspector = inspector;
109 		}
110 	}
111 
112 }