1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.panels.request.components.editor.raw;
14
15 import java.beans.PropertyChangeEvent;
16
17 import com.eviware.soapui.impl.wsdl.WsdlRequest;
18 import com.eviware.soapui.impl.wsdl.mock.WsdlMockResponse;
19 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.XmlEditor;
20 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.XmlEditorView;
21 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.views.registry.RequestEditorViewFactory;
22 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.views.registry.ResponseEditorViewFactory;
23 import com.eviware.soapui.impl.wsdl.support.MessageExchangeModelItem;
24 import com.eviware.soapui.model.ModelItem;
25 import com.eviware.soapui.model.iface.MessageExchange;
26 import com.eviware.soapui.support.types.StringToStringMap;
27
28 public class RawXmlEditorFactory implements ResponseEditorViewFactory, RequestEditorViewFactory
29 {
30 public static final String VIEW_ID = "Raw";
31
32 public String getViewId()
33 {
34 return VIEW_ID;
35 }
36
37 public XmlEditorView createResponseEditorView( XmlEditor editor, ModelItem modelItem )
38 {
39 if( modelItem instanceof MessageExchangeModelItem &&
40 ((MessageExchangeModelItem)modelItem).hasRawData() )
41 {
42 return new WsdlMessageExchangeResponseRawXmlEditor( (MessageExchangeModelItem) modelItem, editor );
43 }
44 else if( modelItem instanceof WsdlRequest )
45 {
46 return new WsdlResponseRawXmlEditor( (WsdlRequest) modelItem, editor );
47 }
48 else if( modelItem instanceof WsdlMockResponse )
49 {
50 return new WsdlMockResponseRawXmlEditor( (WsdlMockResponse) modelItem, editor );
51 }
52
53 return null;
54 }
55
56 public XmlEditorView createRequestEditorView( XmlEditor editor, ModelItem modelItem )
57 {
58 if( modelItem instanceof MessageExchangeModelItem &&
59 ((MessageExchangeModelItem)modelItem).hasRawData() )
60 {
61 return new WsdlMessageExchangeRequestRawXmlEditor( (MessageExchangeModelItem) modelItem, editor );
62 }
63 else if( modelItem instanceof WsdlRequest )
64 {
65 return new WsdlRequestRawXmlEditor( (WsdlRequest) modelItem, editor );
66 }
67 else if( modelItem instanceof WsdlMockResponse )
68 {
69 return new WsdlMockRequestRawXmlEditor( (WsdlMockResponse) modelItem, editor );
70 }
71
72 return null;
73 }
74
75 private static class WsdlRequestRawXmlEditor extends RawXmlEditor
76 {
77 private final WsdlRequest request;
78
79 public WsdlRequestRawXmlEditor( WsdlRequest request, XmlEditor editor )
80 {
81 super( "Raw", editor, "The actual content of the last submitted request" );
82 this.request = request;
83
84 request.addPropertyChangeListener( WsdlRequest.RESPONSE_PROPERTY, this );
85 }
86
87 @Override
88 public void propertyChange( PropertyChangeEvent evt )
89 {
90 if( evt.getPropertyName().equals( WsdlRequest.RESPONSE_PROPERTY ))
91 {
92 setXml( "" );
93 }
94 }
95
96 @Override
97 public String getContent()
98 {
99 if( request.getResponse() == null )
100 return"<missing response>";
101
102 return buildRawContent( request.getResponse().getRequestHeaders(),
103 request.getResponse().getRawRequestData());
104 }
105
106 @Override
107 public void release()
108 {
109 request.removePropertyChangeListener( WsdlRequest.RESPONSE_PROPERTY, this );
110 super.release();
111 }
112 }
113
114 private static class WsdlResponseRawXmlEditor extends RawXmlEditor
115 {
116 private final WsdlRequest request;
117
118 public WsdlResponseRawXmlEditor( WsdlRequest request, XmlEditor editor )
119 {
120 super( "Raw", editor, "The actual content of the last received response" );
121 this.request = request;
122
123 request.addPropertyChangeListener( WsdlRequest.RESPONSE_PROPERTY, this );
124 }
125
126 @Override
127 public void propertyChange( PropertyChangeEvent evt )
128 {
129 if( evt.getPropertyName().equals( WsdlRequest.RESPONSE_PROPERTY ))
130 {
131 setXml( "" );
132 }
133 }
134
135 @Override
136 public String getContent()
137 {
138 if( request.getResponse() == null )
139 return"<missing response>";
140
141 return buildRawContent( request.getResponse().getResponseHeaders(),
142 request.getResponse().getRawResponseData());
143 }
144
145 @Override
146 public void release()
147 {
148 request.removePropertyChangeListener( WsdlRequest.RESPONSE_PROPERTY, this );
149 super.release();
150 }}
151
152 private static class WsdlMockRequestRawXmlEditor extends RawXmlEditor
153 {
154 private final WsdlMockResponse request;
155
156 public WsdlMockRequestRawXmlEditor( WsdlMockResponse response, XmlEditor editor )
157 {
158 super( "Raw", editor, "The actual content of the last received mock request" );
159 this.request = response;
160
161 response.addPropertyChangeListener( WsdlMockResponse.MOCKRESULT_PROPERTY, this );
162 }
163
164 @Override
165 public void propertyChange( PropertyChangeEvent evt )
166 {
167 if( evt.getPropertyName().equals( WsdlMockResponse.MOCKRESULT_PROPERTY ))
168 {
169 setXml( "" );
170 }
171 }
172
173 @Override
174 public String getContent()
175 {
176 if( request.getMockResult() == null )
177 return"<missing request>";
178
179 return buildRawContent( request.getMockResult().getMockRequest().getRequestHeaders(),
180 request.getMockResult().getMockRequest().getRawRequestData());
181 }
182
183 @Override
184 public void release()
185 {
186 request.removePropertyChangeListener( WsdlMockResponse.MOCKRESULT_PROPERTY, this );
187 super.release();
188 }
189 }
190
191 private static class WsdlMockResponseRawXmlEditor extends RawXmlEditor
192 {
193 private final WsdlMockResponse request;
194
195 public WsdlMockResponseRawXmlEditor( WsdlMockResponse response, XmlEditor editor )
196 {
197 super( "Raw", editor, "The actual content of the last returned Mock Response" );
198 this.request = response;
199
200 response.addPropertyChangeListener( WsdlMockResponse.MOCKRESULT_PROPERTY, this );
201 }
202
203 @Override
204 public void propertyChange( PropertyChangeEvent evt )
205 {
206 if( evt.getPropertyName().equals( WsdlMockResponse.MOCKRESULT_PROPERTY ))
207 {
208 setXml( "" );
209 }
210 }
211
212 @Override
213 public String getContent()
214 {
215 if( request.getMockResult() == null )
216 return"<missing response>";
217
218 StringToStringMap headers = request.getMockResult().getResponseHeaders();
219 byte[] data = request.getMockResult().getRawResponseData();
220
221 return buildRawContent( headers, data );
222 }
223
224 @Override
225 public void release()
226 {
227 request.removePropertyChangeListener( WsdlMockResponse.MOCKRESULT_PROPERTY, this );
228 super.release();
229 }}
230
231 private static String buildRawContent( StringToStringMap headers, byte[] data )
232 {
233 StringBuffer result = new StringBuffer();
234 String status = headers.get( "#status#");
235 if( status != null )
236 result.append( status ).append( '\n' );
237
238 for( String header : headers.keySet() )
239 {
240 if( header.equals( "#status#" ))
241 continue;
242
243 result.append( header ).append( ": ").append( headers.get( header )).append( '\n' );
244 }
245 result.append( '\n' );
246
247
248 result.append( new String( data ).trim());
249
250 return result.toString().trim();
251 }
252
253 private static class WsdlMessageExchangeResponseRawXmlEditor extends RawXmlEditor
254 {
255 private final MessageExchangeModelItem response;
256
257 public WsdlMessageExchangeResponseRawXmlEditor( MessageExchangeModelItem response, XmlEditor editor )
258 {
259 super( "Raw", editor, "The raw response data" );
260 this.response = response;
261 }
262
263 @Override
264 public String getContent()
265 {
266 MessageExchange me = response.getMessageExchange();
267 return me == null || me.getRawResponseData() == null ? "" : new String( me.getRawResponseData());
268 }
269 }
270
271 private static class WsdlMessageExchangeRequestRawXmlEditor extends RawXmlEditor
272 {
273 private final MessageExchangeModelItem request;
274
275 public WsdlMessageExchangeRequestRawXmlEditor( MessageExchangeModelItem request, XmlEditor editor )
276 {
277 super( "Raw", editor, "The raw request data" );
278 this.request = request;
279 }
280
281 @Override
282 public String getContent()
283 {
284 MessageExchange me = request.getMessageExchange();
285 return me == null || me.getRawRequestData() == null ? "" : new String( me.getRawRequestData());
286 }
287 }
288 }