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 request.removeSubmitListener(this);
111 request.removePropertyChangeListener(this);
112 }
113
114 public StringToStringMap getJMSHeadersAndProperties()
115 {
116 return headersAndProperties;
117 }
118
119 public void afterSubmit(Submit submit, SubmitContext context)
120 {
121 headersAndProperties = new StringToStringMap();
122 JMSResponse jmsResponse = (JMSResponse) context.getProperty(HermesJmsRequestTransport.JMS_RESPONSE);
123 if (jmsResponse instanceof JMSResponse)
124 {
125 Message message = jmsResponse.getMessageReceive();
126 if (message != null)
127 headersAndProperties.putAll(JMSHeader.getMessageHeadersAndProperties(message));
128 }
129 inspector.getHeadersTableModel().setData(headersAndProperties);
130 }
131
132 public boolean beforeSubmit(Submit submit, SubmitContext context)
133 {
134 return true;
135 }
136
137 public void setInspector(JMSHeaderAndPropertyInspector inspector)
138 {
139 this.inspector = inspector;
140 }
141 }
142
143 private class MessageExchangeResponseJMSHeaderAndPropertiesModel extends
144 AbstractJMSHeaderAndPropertyModel<MessageExchangeModelItem>
145
146 {
147 MessageExchangeModelItem messageExchangeModelItem;
148 JMSHeaderAndPropertyInspector inspector;
149
150 public MessageExchangeResponseJMSHeaderAndPropertiesModel(MessageExchangeModelItem messageExchangeModelItem)
151 {
152 super(true, messageExchangeModelItem, MessageExchangeModelItem.MESSAGE_EXCHANGE);
153 this.messageExchangeModelItem = messageExchangeModelItem;
154 }
155
156 public StringToStringMap getJMSHeadersAndProperties()
157 {
158 MessageExchange messageExchange = getModelItem().getMessageExchange();
159 if (messageExchange != null)
160 return messageExchange.getResponseHeaders();
161 else
162 return new StringToStringMap(); }
163
164 public void setInspector(JMSHeaderAndPropertyInspector inspector)
165 {
166 this.inspector = inspector;
167 }
168
169 }
170
171 private class MessageExchangeRequestJMSHeaderAndPropertiesModel extends
172 AbstractJMSHeaderAndPropertyModel<MessageExchangeModelItem>
173
174 {
175 MessageExchangeModelItem messageExchangeModelItem;
176 JMSHeaderAndPropertyInspector inspector;
177
178 public MessageExchangeRequestJMSHeaderAndPropertiesModel(MessageExchangeModelItem messageExchangeModelItem)
179 {
180 super(true, messageExchangeModelItem, MessageExchangeModelItem.MESSAGE_EXCHANGE);
181 this.messageExchangeModelItem = messageExchangeModelItem;
182 }
183
184 public StringToStringMap getJMSHeadersAndProperties()
185 {
186 MessageExchange messageExchange = getModelItem().getMessageExchange();
187 if (messageExchange != null)
188 return messageExchange.getRequestHeaders();
189 else
190 return new StringToStringMap();
191 }
192
193 public void setInspector(JMSHeaderAndPropertyInspector inspector)
194 {
195 this.inspector = inspector;
196 }
197
198 }
199
200 }