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
17 import javax.jms.Message;
18
19 import com.eviware.soapui.impl.support.AbstractHttpRequest;
20 import com.eviware.soapui.impl.wsdl.submit.transports.jms.HermesJmsRequestTransport;
21 import com.eviware.soapui.impl.wsdl.submit.transports.jms.JMSEndpoint;
22 import com.eviware.soapui.impl.wsdl.submit.transports.jms.JMSHeader;
23 import com.eviware.soapui.impl.wsdl.submit.transports.jms.JMSResponse;
24 import com.eviware.soapui.impl.wsdl.submit.transports.jms.util.JMSUtils;
25 import com.eviware.soapui.impl.wsdl.support.MessageExchangeModelItem;
26 import com.eviware.soapui.model.ModelItem;
27 import com.eviware.soapui.model.iface.MessageExchange;
28 import com.eviware.soapui.model.iface.Submit;
29 import com.eviware.soapui.model.iface.SubmitContext;
30 import com.eviware.soapui.model.iface.SubmitListener;
31 import com.eviware.soapui.support.editor.Editor;
32 import com.eviware.soapui.support.editor.EditorInspector;
33 import com.eviware.soapui.support.editor.inspectors.jms.property.JMSHeaderAndPropertyInspectorModel.AbstractJMSHeaderAndPropertyModel;
34 import com.eviware.soapui.support.editor.registry.RequestInspectorFactory;
35 import com.eviware.soapui.support.editor.registry.ResponseInspectorFactory;
36 import com.eviware.soapui.support.types.StringToStringMap;
37
38 public class JMSHeaderAndPropertyInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory
39 {
40 public static final String INSPECTOR_ID = "JMS Headers and Properties";
41
42 public String getInspectorId()
43 {
44 return INSPECTOR_ID;
45 }
46
47 public EditorInspector<?> createRequestInspector( Editor<?> editor, ModelItem modelItem )
48 {
49 if( modelItem instanceof MessageExchangeModelItem )
50 {
51 JMSHeaderAndPropertyInspector inspector = new JMSHeaderAndPropertyInspector(
52 ( JMSHeaderAndPropertyInspectorModel )new MessageExchangeRequestJMSHeaderAndPropertiesModel(
53 ( MessageExchangeModelItem )modelItem ) );
54 inspector.setEnabled( JMSUtils.checkIfJMS( modelItem ) );
55 return inspector;
56 }
57 return null;
58 }
59
60 public EditorInspector<?> createResponseInspector( Editor<?> editor, ModelItem modelItem )
61 {
62
63 if( modelItem instanceof AbstractHttpRequest<?> )
64 {
65 JMSHeaderAndPropertyInspector inspector = new JMSHeaderAndPropertyInspector(
66 ( JMSHeaderAndPropertyInspectorModel )new ResponseJMSHeaderAndPropertiesModel(
67 ( AbstractHttpRequest<?> )modelItem ) );
68 inspector.setEnabled( JMSUtils.checkIfJMS( modelItem ) );
69 return inspector;
70 }
71 else if( modelItem instanceof MessageExchangeModelItem )
72 {
73
74 JMSHeaderAndPropertyInspector inspector = new JMSHeaderAndPropertyInspector(
75 ( JMSHeaderAndPropertyInspectorModel )new MessageExchangeResponseJMSHeaderAndPropertiesModel(
76 ( MessageExchangeModelItem )modelItem ) );
77 inspector.setEnabled( JMSUtils.checkIfJMS( modelItem ) );
78 return inspector;
79
80 }
81 return null;
82 }
83
84 private class ResponseJMSHeaderAndPropertiesModel extends AbstractJMSHeaderAndPropertyModel<AbstractHttpRequest<?>>
85 implements SubmitListener
86 {
87 AbstractHttpRequest<?> request;
88 JMSHeaderAndPropertyInspector inspector;
89 StringToStringMap headersAndProperties;
90
91 public ResponseJMSHeaderAndPropertiesModel( AbstractHttpRequest<?> wsdlRequest )
92 {
93 super( true, wsdlRequest, "jmsHeaderAndProperties" );
94 this.request = wsdlRequest;
95 request.addSubmitListener( this );
96 request.addPropertyChangeListener( this );
97 }
98
99 public void propertyChange( PropertyChangeEvent evt )
100 {
101 if( request.getEndpoint() != null && evt.getPropertyName().equals( AbstractHttpRequest.ENDPOINT_PROPERTY ) )
102 {
103 inspector.setEnabled( request.getEndpoint().startsWith( JMSEndpoint.JMS_ENDPIONT_PREFIX ) );
104 }
105 super.propertyChange( evt );
106 }
107
108 public void release()
109 {
110 super.release();
111
112 request.removeSubmitListener( this );
113 request.removePropertyChangeListener( this );
114 }
115
116 public StringToStringMap getJMSHeadersAndProperties()
117 {
118 return headersAndProperties;
119 }
120
121 public void afterSubmit( Submit submit, SubmitContext context )
122 {
123 headersAndProperties = new StringToStringMap();
124 JMSResponse jmsResponse = ( JMSResponse )context.getProperty( HermesJmsRequestTransport.JMS_RESPONSE );
125 if( jmsResponse instanceof JMSResponse )
126 {
127 Message message = jmsResponse.getMessageReceive();
128 if( message != null )
129 headersAndProperties.putAll( JMSHeader.getMessageHeadersAndProperties( message ).toStringToStringMap() );
130 }
131 inspector.getHeadersTableModel().setData( headersAndProperties );
132 }
133
134 public boolean beforeSubmit( Submit submit, SubmitContext context )
135 {
136 return true;
137 }
138
139 public void setInspector( JMSHeaderAndPropertyInspector inspector )
140 {
141 this.inspector = inspector;
142 }
143 }
144
145 private class MessageExchangeResponseJMSHeaderAndPropertiesModel extends
146 AbstractJMSHeaderAndPropertyModel<MessageExchangeModelItem>
147
148 {
149 @SuppressWarnings( "unused" )
150 MessageExchangeModelItem messageExchangeModelItem;
151 @SuppressWarnings( "unused" )
152 JMSHeaderAndPropertyInspector inspector;
153
154 public MessageExchangeResponseJMSHeaderAndPropertiesModel( MessageExchangeModelItem messageExchangeModelItem )
155 {
156 super( true, messageExchangeModelItem, MessageExchangeModelItem.MESSAGE_EXCHANGE );
157 this.messageExchangeModelItem = messageExchangeModelItem;
158 }
159
160 public StringToStringMap getJMSHeadersAndProperties()
161 {
162 MessageExchange messageExchange = getModelItem().getMessageExchange();
163 if( messageExchange != null )
164 return messageExchange.getResponseHeaders().toStringToStringMap();
165 else
166 return new StringToStringMap();
167 }
168
169 public void setInspector( JMSHeaderAndPropertyInspector inspector )
170 {
171 this.inspector = inspector;
172 }
173
174 }
175
176 private class MessageExchangeRequestJMSHeaderAndPropertiesModel extends
177 AbstractJMSHeaderAndPropertyModel<MessageExchangeModelItem>
178
179 {
180 @SuppressWarnings( "unused" )
181 MessageExchangeModelItem messageExchangeModelItem;
182 @SuppressWarnings( "unused" )
183 JMSHeaderAndPropertyInspector inspector;
184
185 public MessageExchangeRequestJMSHeaderAndPropertiesModel( MessageExchangeModelItem messageExchangeModelItem )
186 {
187 super( true, messageExchangeModelItem, MessageExchangeModelItem.MESSAGE_EXCHANGE );
188 this.messageExchangeModelItem = messageExchangeModelItem;
189 }
190
191 public StringToStringMap getJMSHeadersAndProperties()
192 {
193 MessageExchange messageExchange = getModelItem().getMessageExchange();
194 if( messageExchange != null )
195 return messageExchange.getRequestHeaders().toStringToStringMap();
196 else
197 return new StringToStringMap();
198 }
199
200 public void setInspector( JMSHeaderAndPropertyInspector inspector )
201 {
202 this.inspector = inspector;
203 }
204
205 }
206
207 }