src/share/jaxws_classes/com/sun/xml/internal/ws/wsdl/parser/WSDLParserExtensionFacade.java

changeset 0
373ffda63c9a
child 637
9c07ef4934dd
equal deleted inserted replaced
-1:000000000000 0:373ffda63c9a
1 /*
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.xml.internal.ws.wsdl.parser;
27
28 import com.sun.xml.internal.ws.api.wsdl.parser.WSDLParserExtension;
29 import com.sun.xml.internal.ws.api.wsdl.parser.WSDLParserExtensionContext;
30 import com.sun.xml.internal.ws.api.model.wsdl.editable.*;
31 import com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil;
32
33 import javax.xml.stream.XMLStreamReader;
34 import javax.xml.stream.Location;
35
36 import org.xml.sax.Locator;
37 import org.xml.sax.helpers.LocatorImpl;
38
39 /**
40 * {@link WSDLParserExtension} that delegates to
41 * multiple {@link WSDLParserExtension}s.
42 *
43 * <p>
44 * This simplifies {@link RuntimeWSDLParser} since it now
45 * only needs to work with one {@link WSDLParserExtension}.
46 *
47 * <p>
48 * This class is guaranteed to return true from
49 * all the extension callback methods.
50 *
51 * @author Kohsuke Kawaguchi
52 */
53 final class WSDLParserExtensionFacade extends WSDLParserExtension {
54 private final WSDLParserExtension[] extensions;
55
56 WSDLParserExtensionFacade(WSDLParserExtension... extensions) {
57 assert extensions!=null;
58 this.extensions = extensions;
59 }
60
61 public void start(WSDLParserExtensionContext context) {
62 for (WSDLParserExtension e : extensions) {
63 e.start(context);
64 }
65 }
66
67 public boolean serviceElements(EditableWSDLService service, XMLStreamReader reader) {
68 for (WSDLParserExtension e : extensions) {
69 if(e.serviceElements(service,reader))
70 return true;
71 }
72 XMLStreamReaderUtil.skipElement(reader);
73 return true;
74 }
75
76 public void serviceAttributes(EditableWSDLService service, XMLStreamReader reader) {
77 for (WSDLParserExtension e : extensions)
78 e.serviceAttributes(service,reader);
79 }
80
81 public boolean portElements(EditableWSDLPort port, XMLStreamReader reader) {
82 for (WSDLParserExtension e : extensions) {
83 if(e.portElements(port,reader))
84 return true;
85 }
86 //extension is not understood by any WSDlParserExtension
87 //Check if it must be understood.
88 if(isRequiredExtension(reader)) {
89 port.addNotUnderstoodExtension(reader.getName(),getLocator(reader));
90 }
91 XMLStreamReaderUtil.skipElement(reader);
92 return true;
93 }
94
95 public boolean portTypeOperationInput(EditableWSDLOperation op, XMLStreamReader reader) {
96 for (WSDLParserExtension e : extensions)
97 e.portTypeOperationInput(op,reader);
98
99 return false;
100 }
101
102 public boolean portTypeOperationOutput(EditableWSDLOperation op, XMLStreamReader reader) {
103 for (WSDLParserExtension e : extensions)
104 e.portTypeOperationOutput(op,reader);
105
106 return false;
107 }
108
109 public boolean portTypeOperationFault(EditableWSDLOperation op, XMLStreamReader reader) {
110 for (WSDLParserExtension e : extensions)
111 e.portTypeOperationFault(op,reader);
112
113 return false;
114 }
115
116 public void portAttributes(EditableWSDLPort port, XMLStreamReader reader) {
117 for (WSDLParserExtension e : extensions)
118 e.portAttributes(port,reader);
119 }
120
121 public boolean definitionsElements(XMLStreamReader reader){
122 for (WSDLParserExtension e : extensions) {
123 if (e.definitionsElements(reader)) {
124 return true;
125 }
126 }
127 XMLStreamReaderUtil.skipElement(reader);
128 return true;
129 }
130
131 public boolean bindingElements(EditableWSDLBoundPortType binding, XMLStreamReader reader){
132 for (WSDLParserExtension e : extensions) {
133 if (e.bindingElements(binding, reader)) {
134 return true;
135 }
136 }
137 //extension is not understood by any WSDlParserExtension
138 //Check if it must be understood.
139 if (isRequiredExtension(reader)) {
140 binding.addNotUnderstoodExtension(
141 reader.getName(), getLocator(reader));
142 }
143 XMLStreamReaderUtil.skipElement(reader);
144 return true;
145 }
146
147 public void bindingAttributes(EditableWSDLBoundPortType binding, XMLStreamReader reader){
148 for (WSDLParserExtension e : extensions) {
149 e.bindingAttributes(binding, reader);
150 }
151 }
152
153 public boolean portTypeElements(EditableWSDLPortType portType, XMLStreamReader reader) {
154 for (WSDLParserExtension e : extensions) {
155 if (e.portTypeElements(portType, reader)) {
156 return true;
157 }
158 }
159 XMLStreamReaderUtil.skipElement(reader);
160 return true;
161 }
162
163 public void portTypeAttributes(EditableWSDLPortType portType, XMLStreamReader reader) {
164 for (WSDLParserExtension e : extensions) {
165 e.portTypeAttributes(portType, reader);
166 }
167 }
168
169 public boolean portTypeOperationElements(EditableWSDLOperation operation, XMLStreamReader reader) {
170 for (WSDLParserExtension e : extensions) {
171 if (e.portTypeOperationElements(operation, reader)) {
172 return true;
173 }
174 }
175 XMLStreamReaderUtil.skipElement(reader);
176 return true;
177 }
178
179 public void portTypeOperationAttributes(EditableWSDLOperation operation, XMLStreamReader reader) {
180 for (WSDLParserExtension e : extensions) {
181 e.portTypeOperationAttributes(operation, reader);
182 }
183 }
184
185 public boolean bindingOperationElements(EditableWSDLBoundOperation operation, XMLStreamReader reader) {
186 for (WSDLParserExtension e : extensions) {
187 if (e.bindingOperationElements(operation, reader)) {
188 return true;
189 }
190 }
191 XMLStreamReaderUtil.skipElement(reader);
192 return true;
193 }
194
195 public void bindingOperationAttributes(EditableWSDLBoundOperation operation, XMLStreamReader reader) {
196 for (WSDLParserExtension e : extensions) {
197 e.bindingOperationAttributes(operation, reader);
198 }
199 }
200
201 public boolean messageElements(EditableWSDLMessage msg, XMLStreamReader reader) {
202 for (WSDLParserExtension e : extensions) {
203 if (e.messageElements(msg, reader)) {
204 return true;
205 }
206 }
207 XMLStreamReaderUtil.skipElement(reader);
208 return true;
209 }
210
211 public void messageAttributes(EditableWSDLMessage msg, XMLStreamReader reader) {
212 for (WSDLParserExtension e : extensions) {
213 e.messageAttributes(msg, reader);
214 }
215 }
216
217 public boolean portTypeOperationInputElements(EditableWSDLInput input, XMLStreamReader reader) {
218 for (WSDLParserExtension e : extensions) {
219 if (e.portTypeOperationInputElements(input, reader)) {
220 return true;
221 }
222 }
223 XMLStreamReaderUtil.skipElement(reader);
224 return true;
225 }
226
227 public void portTypeOperationInputAttributes(EditableWSDLInput input, XMLStreamReader reader) {
228 for (WSDLParserExtension e : extensions) {
229 e.portTypeOperationInputAttributes(input, reader);
230 }
231 }
232
233 public boolean portTypeOperationOutputElements(EditableWSDLOutput output, XMLStreamReader reader) {
234 for (WSDLParserExtension e : extensions) {
235 if (e.portTypeOperationOutputElements(output, reader)) {
236 return true;
237 }
238 }
239 XMLStreamReaderUtil.skipElement(reader);
240 return true;
241 }
242
243 public void portTypeOperationOutputAttributes(EditableWSDLOutput output, XMLStreamReader reader) {
244 for (WSDLParserExtension e : extensions) {
245 e.portTypeOperationOutputAttributes(output, reader);
246 }
247 }
248
249 public boolean portTypeOperationFaultElements(EditableWSDLFault fault, XMLStreamReader reader) {
250 for (WSDLParserExtension e : extensions) {
251 if (e.portTypeOperationFaultElements(fault, reader)) {
252 return true;
253 }
254 }
255 XMLStreamReaderUtil.skipElement(reader);
256 return true;
257 }
258
259 public void portTypeOperationFaultAttributes(EditableWSDLFault fault, XMLStreamReader reader) {
260 for (WSDLParserExtension e : extensions) {
261 e.portTypeOperationFaultAttributes(fault, reader);
262 }
263 }
264
265 public boolean bindingOperationInputElements(EditableWSDLBoundOperation operation, XMLStreamReader reader) {
266 for (WSDLParserExtension e : extensions) {
267 if (e.bindingOperationInputElements(operation, reader)) {
268 return true;
269 }
270 }
271 XMLStreamReaderUtil.skipElement(reader);
272 return true;
273 }
274
275 public void bindingOperationInputAttributes(EditableWSDLBoundOperation operation, XMLStreamReader reader) {
276 for (WSDLParserExtension e : extensions) {
277 e.bindingOperationInputAttributes(operation, reader);
278 }
279 }
280
281 public boolean bindingOperationOutputElements(EditableWSDLBoundOperation operation, XMLStreamReader reader) {
282 for (WSDLParserExtension e : extensions) {
283 if (e.bindingOperationOutputElements(operation, reader)) {
284 return true;
285 }
286 }
287 XMLStreamReaderUtil.skipElement(reader);
288 return true;
289 }
290
291 public void bindingOperationOutputAttributes(EditableWSDLBoundOperation operation, XMLStreamReader reader) {
292 for (WSDLParserExtension e : extensions) {
293 e.bindingOperationOutputAttributes(operation, reader);
294 }
295 }
296
297 public boolean bindingOperationFaultElements(EditableWSDLBoundFault fault, XMLStreamReader reader) {
298 for (WSDLParserExtension e : extensions) {
299 if (e.bindingOperationFaultElements(fault, reader)) {
300 return true;
301 }
302 }
303 XMLStreamReaderUtil.skipElement(reader);
304 return true;
305 }
306
307 public void bindingOperationFaultAttributes(EditableWSDLBoundFault fault, XMLStreamReader reader) {
308 for (WSDLParserExtension e : extensions) {
309 e.bindingOperationFaultAttributes(fault, reader);
310 }
311 }
312
313 public void finished(WSDLParserExtensionContext context) {
314 for (WSDLParserExtension e : extensions) {
315 e.finished(context);
316 }
317 }
318
319 public void postFinished(WSDLParserExtensionContext context) {
320 for (WSDLParserExtension e : extensions) {
321 e.postFinished(context);
322 }
323 }
324 /**
325 *
326 * @param reader
327 * @return If the element has wsdl:required attribute set to true
328 */
329
330 private boolean isRequiredExtension(XMLStreamReader reader) {
331 String required = reader.getAttributeValue(WSDLConstants.NS_WSDL, "required");
332 if(required != null)
333 return Boolean.parseBoolean(required);
334 return false;
335 }
336
337 private Locator getLocator(XMLStreamReader reader) {
338 Location location = reader.getLocation();
339 LocatorImpl loc = new LocatorImpl();
340 loc.setSystemId(location.getSystemId());
341 loc.setLineNumber(location.getLineNumber());
342 return loc;
343 }
344
345 }

mercurial