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

changeset 286
f50545b5e2f1
child 368
0989ad8c0860
equal deleted inserted replaced
284:88b85470e72c 286:f50545b5e2f1
1 /*
2 * Copyright (c) 1997, 2010, 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.*;
31 import com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil;
32 import com.sun.xml.internal.ws.model.wsdl.WSDLPortImpl;
33 import com.sun.xml.internal.ws.model.wsdl.WSDLBoundPortTypeImpl;
34
35 import javax.xml.stream.XMLStreamReader;
36 import javax.xml.stream.Location;
37
38 import org.xml.sax.Locator;
39 import org.xml.sax.helpers.LocatorImpl;
40
41 /**
42 * {@link WSDLParserExtension} that delegates to
43 * multiple {@link WSDLParserExtension}s.
44 *
45 * <p>
46 * This simplifies {@link RuntimeWSDLParser} since it now
47 * only needs to work with one {@link WSDLParserExtension}.
48 *
49 * <p>
50 * This class is guaranteed to return true from
51 * all the extension callback methods.
52 *
53 * @author Kohsuke Kawaguchi
54 */
55 final class WSDLParserExtensionFacade extends WSDLParserExtension {
56 private final WSDLParserExtension[] extensions;
57
58 WSDLParserExtensionFacade(WSDLParserExtension... extensions) {
59 assert extensions!=null;
60 this.extensions = extensions;
61 }
62
63 public void start(WSDLParserExtensionContext context) {
64 for (WSDLParserExtension e : extensions) {
65 e.start(context);
66 }
67 }
68
69 public boolean serviceElements(WSDLService service, XMLStreamReader reader) {
70 for (WSDLParserExtension e : extensions) {
71 if(e.serviceElements(service,reader))
72 return true;
73 }
74 XMLStreamReaderUtil.skipElement(reader);
75 return true;
76 }
77
78 public void serviceAttributes(WSDLService service, XMLStreamReader reader) {
79 for (WSDLParserExtension e : extensions)
80 e.serviceAttributes(service,reader);
81 }
82
83 public boolean portElements(WSDLPort port, XMLStreamReader reader) {
84 for (WSDLParserExtension e : extensions) {
85 if(e.portElements(port,reader))
86 return true;
87 }
88 //extension is not understood by any WSDlParserExtension
89 //Check if it must be understood.
90 if(isRequiredExtension(reader)) {
91 ((WSDLPortImpl)port).addNotUnderstoodExtension(reader.getName(),getLocator(reader));
92 }
93 XMLStreamReaderUtil.skipElement(reader);
94 return true;
95 }
96
97 public boolean portTypeOperationInput(WSDLOperation op, XMLStreamReader reader) {
98 for (WSDLParserExtension e : extensions)
99 e.portTypeOperationInput(op,reader);
100
101 return false;
102 }
103
104 public boolean portTypeOperationOutput(WSDLOperation op, XMLStreamReader reader) {
105 for (WSDLParserExtension e : extensions)
106 e.portTypeOperationOutput(op,reader);
107
108 return false;
109 }
110
111 public boolean portTypeOperationFault(WSDLOperation op, XMLStreamReader reader) {
112 for (WSDLParserExtension e : extensions)
113 e.portTypeOperationFault(op,reader);
114
115 return false;
116 }
117
118 public void portAttributes(WSDLPort port, XMLStreamReader reader) {
119 for (WSDLParserExtension e : extensions)
120 e.portAttributes(port,reader);
121 }
122
123 public boolean definitionsElements(XMLStreamReader reader){
124 for (WSDLParserExtension e : extensions) {
125 if (e.definitionsElements(reader)) {
126 return true;
127 }
128 }
129 XMLStreamReaderUtil.skipElement(reader);
130 return true;
131 }
132
133 public boolean bindingElements(WSDLBoundPortType binding, XMLStreamReader reader){
134 for (WSDLParserExtension e : extensions) {
135 if (e.bindingElements(binding, reader)) {
136 return true;
137 }
138 }
139 //extension is not understood by any WSDlParserExtension
140 //Check if it must be understood.
141 if (isRequiredExtension(reader)) {
142 ((WSDLBoundPortTypeImpl) binding).addNotUnderstoodExtension(
143 reader.getName(), getLocator(reader));
144 }
145 XMLStreamReaderUtil.skipElement(reader);
146 return true;
147 }
148
149 public void bindingAttributes(WSDLBoundPortType binding, XMLStreamReader reader){
150 for (WSDLParserExtension e : extensions) {
151 e.bindingAttributes(binding, reader);
152 }
153 }
154
155 public boolean portTypeElements(WSDLPortType portType, XMLStreamReader reader) {
156 for (WSDLParserExtension e : extensions) {
157 if (e.portTypeElements(portType, reader)) {
158 return true;
159 }
160 }
161 XMLStreamReaderUtil.skipElement(reader);
162 return true;
163 }
164
165 public void portTypeAttributes(WSDLPortType portType, XMLStreamReader reader) {
166 for (WSDLParserExtension e : extensions) {
167 e.portTypeAttributes(portType, reader);
168 }
169 }
170
171 public boolean portTypeOperationElements(WSDLOperation operation, XMLStreamReader reader) {
172 for (WSDLParserExtension e : extensions) {
173 if (e.portTypeOperationElements(operation, reader)) {
174 return true;
175 }
176 }
177 XMLStreamReaderUtil.skipElement(reader);
178 return true;
179 }
180
181 public void portTypeOperationAttributes(WSDLOperation operation, XMLStreamReader reader) {
182 for (WSDLParserExtension e : extensions) {
183 e.portTypeOperationAttributes(operation, reader);
184 }
185 }
186
187 public boolean bindingOperationElements(WSDLBoundOperation operation, XMLStreamReader reader) {
188 for (WSDLParserExtension e : extensions) {
189 if (e.bindingOperationElements(operation, reader)) {
190 return true;
191 }
192 }
193 XMLStreamReaderUtil.skipElement(reader);
194 return true;
195 }
196
197 public void bindingOperationAttributes(WSDLBoundOperation operation, XMLStreamReader reader) {
198 for (WSDLParserExtension e : extensions) {
199 e.bindingOperationAttributes(operation, reader);
200 }
201 }
202
203 public boolean messageElements(WSDLMessage msg, XMLStreamReader reader) {
204 for (WSDLParserExtension e : extensions) {
205 if (e.messageElements(msg, reader)) {
206 return true;
207 }
208 }
209 XMLStreamReaderUtil.skipElement(reader);
210 return true;
211 }
212
213 public void messageAttributes(WSDLMessage msg, XMLStreamReader reader) {
214 for (WSDLParserExtension e : extensions) {
215 e.messageAttributes(msg, reader);
216 }
217 }
218
219 public boolean portTypeOperationInputElements(WSDLInput input, XMLStreamReader reader) {
220 for (WSDLParserExtension e : extensions) {
221 if (e.portTypeOperationInputElements(input, reader)) {
222 return true;
223 }
224 }
225 XMLStreamReaderUtil.skipElement(reader);
226 return true;
227 }
228
229 public void portTypeOperationInputAttributes(WSDLInput input, XMLStreamReader reader) {
230 for (WSDLParserExtension e : extensions) {
231 e.portTypeOperationInputAttributes(input, reader);
232 }
233 }
234
235 public boolean portTypeOperationOutputElements(WSDLOutput output, XMLStreamReader reader) {
236 for (WSDLParserExtension e : extensions) {
237 if (e.portTypeOperationOutputElements(output, reader)) {
238 return true;
239 }
240 }
241 XMLStreamReaderUtil.skipElement(reader);
242 return true;
243 }
244
245 public void portTypeOperationOutputAttributes(WSDLOutput output, XMLStreamReader reader) {
246 for (WSDLParserExtension e : extensions) {
247 e.portTypeOperationOutputAttributes(output, reader);
248 }
249 }
250
251 public boolean portTypeOperationFaultElements(WSDLFault fault, XMLStreamReader reader) {
252 for (WSDLParserExtension e : extensions) {
253 if (e.portTypeOperationFaultElements(fault, reader)) {
254 return true;
255 }
256 }
257 XMLStreamReaderUtil.skipElement(reader);
258 return true;
259 }
260
261 public void portTypeOperationFaultAttributes(WSDLFault fault, XMLStreamReader reader) {
262 for (WSDLParserExtension e : extensions) {
263 e.portTypeOperationFaultAttributes(fault, reader);
264 }
265 }
266
267 public boolean bindingOperationInputElements(WSDLBoundOperation operation, XMLStreamReader reader) {
268 for (WSDLParserExtension e : extensions) {
269 if (e.bindingOperationInputElements(operation, reader)) {
270 return true;
271 }
272 }
273 XMLStreamReaderUtil.skipElement(reader);
274 return true;
275 }
276
277 public void bindingOperationInputAttributes(WSDLBoundOperation operation, XMLStreamReader reader) {
278 for (WSDLParserExtension e : extensions) {
279 e.bindingOperationInputAttributes(operation, reader);
280 }
281 }
282
283 public boolean bindingOperationOutputElements(WSDLBoundOperation operation, XMLStreamReader reader) {
284 for (WSDLParserExtension e : extensions) {
285 if (e.bindingOperationOutputElements(operation, reader)) {
286 return true;
287 }
288 }
289 XMLStreamReaderUtil.skipElement(reader);
290 return true;
291 }
292
293 public void bindingOperationOutputAttributes(WSDLBoundOperation operation, XMLStreamReader reader) {
294 for (WSDLParserExtension e : extensions) {
295 e.bindingOperationOutputAttributes(operation, reader);
296 }
297 }
298
299 public boolean bindingOperationFaultElements(WSDLBoundFault fault, XMLStreamReader reader) {
300 for (WSDLParserExtension e : extensions) {
301 if (e.bindingOperationFaultElements(fault, reader)) {
302 return true;
303 }
304 }
305 XMLStreamReaderUtil.skipElement(reader);
306 return true;
307 }
308
309 public void bindingOperationFaultAttributes(WSDLBoundFault fault, XMLStreamReader reader) {
310 for (WSDLParserExtension e : extensions) {
311 e.bindingOperationFaultAttributes(fault, reader);
312 }
313 }
314
315 public void finished(WSDLParserExtensionContext context) {
316 for (WSDLParserExtension e : extensions) {
317 e.finished(context);
318 }
319 }
320
321 public void postFinished(WSDLParserExtensionContext context) {
322 for (WSDLParserExtension e : extensions) {
323 e.postFinished(context);
324 }
325 }
326 /**
327 *
328 * @param reader
329 * @return If the element has wsdl:required attribute set to true
330 */
331
332 private boolean isRequiredExtension(XMLStreamReader reader) {
333 String required = reader.getAttributeValue(WSDLConstants.NS_WSDL, "required");
334 if(required != null)
335 return Boolean.parseBoolean(required);
336 return false;
337 }
338
339 private Locator getLocator(XMLStreamReader reader) {
340 Location location = reader.getLocation();
341 LocatorImpl loc = new LocatorImpl();
342 loc.setSystemId(location.getSystemId());
343 loc.setLineNumber(location.getLineNumber());
344 return loc;
345 }
346
347 }

mercurial