1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.panels.request.components.editor.inspectors.attachments;
14
15 import java.beans.PropertyChangeListener;
16 import java.io.File;
17 import java.util.ArrayList;
18 import java.util.List;
19
20 import com.eviware.soapui.impl.wsdl.AttachmentContainer;
21 import com.eviware.soapui.impl.wsdl.WsdlAttachmentPart;
22 import com.eviware.soapui.impl.wsdl.WsdlRequest;
23 import com.eviware.soapui.impl.wsdl.mock.WsdlMockResponse;
24 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.XmlEditor;
25 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.XmlInspector;
26 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.inspectors.registry.RequestInspectorFactory;
27 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.inspectors.registry.ResponseInspectorFactory;
28 import com.eviware.soapui.model.ModelItem;
29 import com.eviware.soapui.model.iface.Attachment;
30 import com.eviware.soapui.model.iface.MessagePart;
31
32 public class AttachmentsInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory
33 {
34 public static final String INSPECTOR_ID = "Attachments";
35
36 public String getInspectorId()
37 {
38 return INSPECTOR_ID;
39 }
40
41 public XmlInspector createRequestInspector( XmlEditor editor, ModelItem modelItem )
42 {
43 if( modelItem instanceof WsdlRequest )
44 return new AttachmentsInspector( ( AttachmentContainer ) modelItem );
45 else if( modelItem instanceof WsdlMockResponse )
46 return new AttachmentsInspector( new MockRequestAttachmentsContainer( (WsdlMockResponse)modelItem ) );
47
48 return null;
49 }
50
51 public XmlInspector createResponseInspector( XmlEditor editor, ModelItem modelItem )
52 {
53 if( modelItem instanceof WsdlRequest )
54 return new AttachmentsInspector( new ResponseAttachmentsContainer( (WsdlRequest)modelItem ) );
55 else if( modelItem instanceof WsdlMockResponse )
56 return new AttachmentsInspector( ( WsdlMockResponse ) modelItem );
57
58 return null;
59 }
60
61 private static class ResponseAttachmentsContainer implements AttachmentContainer
62 {
63 private final WsdlRequest request;
64
65 public ResponseAttachmentsContainer( WsdlRequest request )
66 {
67 this.request = request;
68 }
69
70 public void addAttachmentsChangeListener( PropertyChangeListener listener )
71 {
72 request.addPropertyChangeListener( WsdlRequest.RESPONSE_PROPERTY, listener );
73 }
74
75 public Attachment attachFile( File file, boolean cache )
76 {
77 return null;
78 }
79
80 public Attachment getAttachmentAt( int index )
81 {
82 return request.getResponse() == null ? null : request.getResponse().getAttachments()[index];
83 }
84
85 public int getAttachmentCount()
86 {
87 return request.getResponse() == null ? 0 : request.getResponse().getAttachments().length;
88 }
89
90 public WsdlAttachmentPart getAttachmentPart( String partName )
91 {
92 return null;
93 }
94
95 public Attachment[] getAttachments()
96 {
97 return request.getResponse() == null ? null : request.getResponse().getAttachments();
98 }
99
100 public Attachment[] getAttachmentsForPart( String partName )
101 {
102 return request.getResponse() == null ? null : request.getResponse().getAttachmentsForPart( partName );
103 }
104
105 public WsdlAttachmentPart[] getDefinedAttachmentParts()
106 {
107 MessagePart[] responseParts = request.getResponseParts();
108
109 List<WsdlAttachmentPart> result = new ArrayList<WsdlAttachmentPart>();
110
111 for( MessagePart part : responseParts )
112 if( part instanceof WsdlAttachmentPart )
113 result.add( ( WsdlAttachmentPart ) part );
114
115 return result.toArray( new WsdlAttachmentPart[result.size()] );
116 }
117
118 public boolean isMtomEnabled()
119 {
120 return request.isMtomEnabled();
121 }
122
123 public boolean isMultipartEnabled()
124 {
125 return request.isMultipartEnabled();
126 }
127
128 public boolean isReadOnly()
129 {
130 return true;
131 }
132
133 public void removeAttachment( Attachment attachment )
134 {
135 }
136
137 public void removeAttachmentsChangeListener( PropertyChangeListener listener )
138 {
139 request.removePropertyChangeListener( WsdlRequest.RESPONSE_PROPERTY, listener );
140 }
141 }
142
143 private static class MockRequestAttachmentsContainer implements AttachmentContainer
144 {
145 private final WsdlMockResponse request;
146
147 public MockRequestAttachmentsContainer( WsdlMockResponse request )
148 {
149 this.request = request;
150 }
151
152 public void addAttachmentsChangeListener( PropertyChangeListener listener )
153 {
154 request.addPropertyChangeListener( WsdlMockResponse.MOCKRESULT_PROPERTY, listener );
155 }
156
157 public Attachment attachFile( File file, boolean cache )
158 {
159 return null;
160 }
161
162 public Attachment getAttachmentAt( int index )
163 {
164 return request.getMockResult() == null ? null : request.getMockResult().getMockRequest().getRequestAttachments()[index];
165 }
166
167 public int getAttachmentCount()
168 {
169 return request.getMockResult() == null ? 0 : request.getMockResult().getMockRequest().getRequestAttachments().length;
170 }
171
172 public WsdlAttachmentPart getAttachmentPart( String partName )
173 {
174 return null;
175 }
176
177 public Attachment[] getAttachments()
178 {
179 return request.getMockResult() == null ? null : request.getMockResult().getMockRequest().getRequestAttachments();
180 }
181
182 public Attachment[] getAttachmentsForPart( String partName )
183 {
184 return null;
185 }
186
187 public WsdlAttachmentPart[] getDefinedAttachmentParts()
188 {
189 return null;
190 }
191
192 public boolean isMtomEnabled()
193 {
194 return request.isMtomEnabled();
195 }
196
197 public boolean isMultipartEnabled()
198 {
199 return request.isMultipartEnabled();
200 }
201
202 public boolean isReadOnly()
203 {
204 return true;
205 }
206
207 public void removeAttachment( Attachment attachment )
208 {
209 }
210
211 public void removeAttachmentsChangeListener( PropertyChangeListener listener )
212 {
213 request.removePropertyChangeListener( WsdlMockResponse.MOCKRESULT_PROPERTY, listener );
214 }
215 }
216
217 }