1
2
3
4
5
6
7
8
9
10
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 @Override
80 public void release()
81 {
82 super.release();
83 request.removePropertyChangeListener( this );
84 }
85
86 public StringToStringMap getJMSProperties()
87 {
88 List<JMSPropertyConfig> propertyList = request.getJMSPropertiesConfig().getJMSProperties();
89 StringToStringMap stringToStringMap = new StringToStringMap( propertyList.size() );
90 for( JMSPropertyConfig jmsProperty : propertyList )
91 {
92 stringToStringMap.put( jmsProperty.getName(), jmsProperty.getValue() );
93 }
94 return stringToStringMap;
95 }
96
97 public void setJMSProperties( StringToStringMap stringToStringMap )
98 {
99 String[] keyList = stringToStringMap.getKeys();
100 List<JMSPropertyConfig> propertyList = new ArrayList<JMSPropertyConfig>();
101 for( String key : keyList )
102 {
103 JMSPropertyConfig jmsPropertyConfig = JMSPropertyConfig.Factory.newInstance();
104 jmsPropertyConfig.setName( key );
105 jmsPropertyConfig.setValue( stringToStringMap.get( key ) );
106 propertyList.add( jmsPropertyConfig );
107 }
108 List<JMSPropertyConfig> propertyList2 = request.getJMSPropertiesConfig().getJMSProperties();
109 propertyList2.clear();
110 propertyList2.addAll( propertyList );
111 }
112
113 public void setInspector( JMSPropertyInspector inspector )
114 {
115 this.inspector = inspector;
116 }
117 }
118
119 }