40 import com.sun.xml.internal.ws.api.policy.PolicyResolverFactory; |
40 import com.sun.xml.internal.ws.api.policy.PolicyResolverFactory; |
41 import com.sun.xml.internal.ws.api.addressing.AddressingVersion; |
41 import com.sun.xml.internal.ws.api.addressing.AddressingVersion; |
42 import com.sun.xml.internal.ws.api.addressing.WSEndpointReference; |
42 import com.sun.xml.internal.ws.api.addressing.WSEndpointReference; |
43 import com.sun.xml.internal.ws.api.model.ParameterBinding; |
43 import com.sun.xml.internal.ws.api.model.ParameterBinding; |
44 import com.sun.xml.internal.ws.api.model.wsdl.WSDLDescriptorKind; |
44 import com.sun.xml.internal.ws.api.model.wsdl.WSDLDescriptorKind; |
|
45 import com.sun.xml.internal.ws.api.model.wsdl.WSDLModel; |
|
46 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLBoundFault; |
|
47 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLBoundOperation; |
|
48 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLBoundPortType; |
|
49 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLFault; |
|
50 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLInput; |
|
51 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLMessage; |
|
52 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLModel; |
|
53 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLOperation; |
|
54 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLOutput; |
|
55 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLPart; |
|
56 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLPort; |
|
57 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLPortType; |
|
58 import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLService; |
45 import com.sun.xml.internal.ws.api.server.Container; |
59 import com.sun.xml.internal.ws.api.server.Container; |
46 import com.sun.xml.internal.ws.api.server.ContainerResolver; |
60 import com.sun.xml.internal.ws.api.server.ContainerResolver; |
47 import com.sun.xml.internal.ws.api.streaming.XMLStreamReaderFactory; |
61 import com.sun.xml.internal.ws.api.streaming.XMLStreamReaderFactory; |
48 import com.sun.xml.internal.ws.api.wsdl.parser.MetaDataResolver; |
62 import com.sun.xml.internal.ws.api.wsdl.parser.MetaDataResolver; |
49 import com.sun.xml.internal.ws.api.wsdl.parser.MetadataResolverFactory; |
63 import com.sun.xml.internal.ws.api.wsdl.parser.MetadataResolverFactory; |
58 import com.sun.xml.internal.ws.streaming.TidyXMLStreamReader; |
72 import com.sun.xml.internal.ws.streaming.TidyXMLStreamReader; |
59 import com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil; |
73 import com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil; |
60 import com.sun.xml.internal.ws.util.ServiceFinder; |
74 import com.sun.xml.internal.ws.util.ServiceFinder; |
61 import com.sun.xml.internal.ws.util.xml.XmlUtil; |
75 import com.sun.xml.internal.ws.util.xml.XmlUtil; |
62 import com.sun.xml.internal.ws.policy.jaxws.PolicyWSDLParserExtension; |
76 import com.sun.xml.internal.ws.policy.jaxws.PolicyWSDLParserExtension; |
|
77 |
63 import org.xml.sax.EntityResolver; |
78 import org.xml.sax.EntityResolver; |
64 import org.xml.sax.SAXException; |
79 import org.xml.sax.SAXException; |
65 |
80 |
66 import javax.jws.soap.SOAPBinding.Style; |
81 import javax.jws.soap.SOAPBinding.Style; |
67 import javax.xml.namespace.QName; |
82 import javax.xml.namespace.QName; |
68 import javax.xml.stream.*; |
83 import javax.xml.stream.*; |
69 import javax.xml.transform.Source; |
84 import javax.xml.transform.Source; |
70 import javax.xml.transform.stream.StreamSource; |
85 import javax.xml.transform.stream.StreamSource; |
71 import javax.xml.ws.Service; |
86 import javax.xml.ws.Service; |
72 import javax.xml.ws.WebServiceException; |
87 import javax.xml.ws.WebServiceException; |
|
88 |
73 import java.io.IOException; |
89 import java.io.IOException; |
74 import java.io.InputStream; |
90 import java.io.InputStream; |
75 import java.io.FilterInputStream; |
91 import java.io.FilterInputStream; |
76 import java.net.URISyntaxException; |
92 import java.net.URISyntaxException; |
77 import java.net.URL; |
93 import java.net.URL; |
124 * |
140 * |
125 * @param wsdlLoc |
141 * @param wsdlLoc |
126 * Either this or <tt>wsdl</tt> parameter must be given. |
142 * Either this or <tt>wsdl</tt> parameter must be given. |
127 * Null location means the system won't be able to resolve relative references in the WSDL, |
143 * Null location means the system won't be able to resolve relative references in the WSDL, |
128 */ |
144 */ |
129 public static WSDLModelImpl parse(@Nullable URL wsdlLoc, @NotNull Source wsdlSource, @NotNull EntityResolver resolver, |
145 public static WSDLModel parse(@Nullable URL wsdlLoc, @NotNull Source wsdlSource, @NotNull EntityResolver resolver, |
130 boolean isClientSide, Container container, |
146 boolean isClientSide, Container container, |
131 WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
147 WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
132 return parse(wsdlLoc, wsdlSource, resolver, isClientSide, container, Service.class, PolicyResolverFactory.create(),extensions); |
148 return parse(wsdlLoc, wsdlSource, resolver, isClientSide, container, Service.class, PolicyResolverFactory.create(),extensions); |
133 } |
149 } |
134 |
150 |
139 * |
155 * |
140 * @param wsdlLoc |
156 * @param wsdlLoc |
141 * Either this or <tt>wsdl</tt> parameter must be given. |
157 * Either this or <tt>wsdl</tt> parameter must be given. |
142 * Null location means the system won't be able to resolve relative references in the WSDL, |
158 * Null location means the system won't be able to resolve relative references in the WSDL, |
143 */ |
159 */ |
144 public static WSDLModelImpl parse(@Nullable URL wsdlLoc, @NotNull Source wsdlSource, @NotNull EntityResolver resolver, |
160 public static WSDLModel parse(@Nullable URL wsdlLoc, @NotNull Source wsdlSource, @NotNull EntityResolver resolver, |
145 boolean isClientSide, Container container, Class serviceClass, |
161 boolean isClientSide, Container container, Class serviceClass, |
146 WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
162 WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
147 return parse(wsdlLoc, wsdlSource, resolver, isClientSide, container, serviceClass, PolicyResolverFactory.create(),extensions); |
163 return parse(wsdlLoc, wsdlSource, resolver, isClientSide, container, serviceClass, PolicyResolverFactory.create(),extensions); |
148 } |
164 } |
149 |
165 |
154 * |
170 * |
155 * @param wsdlLoc |
171 * @param wsdlLoc |
156 * Either this or <tt>wsdl</tt> parameter must be given. |
172 * Either this or <tt>wsdl</tt> parameter must be given. |
157 * Null location means the system won't be able to resolve relative references in the WSDL, |
173 * Null location means the system won't be able to resolve relative references in the WSDL, |
158 */ |
174 */ |
159 public static WSDLModelImpl parse(@Nullable URL wsdlLoc, @NotNull Source wsdlSource, @NotNull EntityResolver resolver, |
175 public static WSDLModel parse(@Nullable URL wsdlLoc, @NotNull Source wsdlSource, @NotNull EntityResolver resolver, |
160 boolean isClientSide, Container container, @NotNull PolicyResolver policyResolver, |
176 boolean isClientSide, Container container, @NotNull PolicyResolver policyResolver, |
161 WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
177 WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
162 return parse(wsdlLoc, wsdlSource, resolver, isClientSide, container, Service.class, policyResolver, extensions); |
178 return parse(wsdlLoc, wsdlSource, resolver, isClientSide, container, Service.class, policyResolver, extensions); |
163 } |
179 } |
164 |
180 |
169 * |
185 * |
170 * @param wsdlLoc |
186 * @param wsdlLoc |
171 * Either this or <tt>wsdl</tt> parameter must be given. |
187 * Either this or <tt>wsdl</tt> parameter must be given. |
172 * Null location means the system won't be able to resolve relative references in the WSDL, |
188 * Null location means the system won't be able to resolve relative references in the WSDL, |
173 */ |
189 */ |
174 public static WSDLModelImpl parse(@Nullable URL wsdlLoc, @NotNull Source wsdlSource, @NotNull EntityResolver resolver, |
190 public static WSDLModel parse(@Nullable URL wsdlLoc, @NotNull Source wsdlSource, @NotNull EntityResolver resolver, |
175 boolean isClientSide, Container container, Class serviceClass, |
191 boolean isClientSide, Container container, Class serviceClass, |
176 @NotNull PolicyResolver policyResolver, |
192 @NotNull PolicyResolver policyResolver, |
177 WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
193 WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
178 return parse(wsdlLoc, wsdlSource, resolver, isClientSide, container, serviceClass, policyResolver, false, extensions); |
194 return parse(wsdlLoc, wsdlSource, resolver, isClientSide, container, serviceClass, policyResolver, false, extensions); |
179 } |
195 } |
185 * |
201 * |
186 * @param wsdlLoc |
202 * @param wsdlLoc |
187 * Either this or <tt>wsdl</tt> parameter must be given. |
203 * Either this or <tt>wsdl</tt> parameter must be given. |
188 * Null location means the system won't be able to resolve relative references in the WSDL, |
204 * Null location means the system won't be able to resolve relative references in the WSDL, |
189 */ |
205 */ |
190 public static WSDLModelImpl parse(@Nullable URL wsdlLoc, @NotNull Source wsdlSource, @NotNull EntityResolver resolver, |
206 public static WSDLModel parse(@Nullable URL wsdlLoc, @NotNull Source wsdlSource, @NotNull EntityResolver resolver, |
191 boolean isClientSide, Container container, Class serviceClass, |
207 boolean isClientSide, Container container, Class serviceClass, |
192 @NotNull PolicyResolver policyResolver, |
208 @NotNull PolicyResolver policyResolver, |
193 boolean isUseStreamFromEntityResolverWrapper, |
209 boolean isUseStreamFromEntityResolverWrapper, |
194 WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
210 WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
195 assert resolver != null; |
211 assert resolver != null; |
224 throw new WebServiceException(ClientMessages.WSDL_CONTAINS_NO_SERVICE(wsdlLoc)); |
240 throw new WebServiceException(ClientMessages.WSDL_CONTAINS_NO_SERVICE(wsdlLoc)); |
225 |
241 |
226 return wsdlParser.wsdlDoc; |
242 return wsdlParser.wsdlDoc; |
227 } |
243 } |
228 |
244 |
229 private static WSDLModelImpl tryWithMex(@NotNull RuntimeWSDLParser wsdlParser, @NotNull URL wsdlLoc, @NotNull EntityResolver resolver, boolean isClientSide, Container container, Throwable e, Class serviceClass, PolicyResolver policyResolver, WSDLParserExtension... extensions) throws SAXException, XMLStreamException { |
245 private static WSDLModel tryWithMex(@NotNull RuntimeWSDLParser wsdlParser, @NotNull URL wsdlLoc, @NotNull EntityResolver resolver, boolean isClientSide, Container container, Throwable e, Class serviceClass, PolicyResolver policyResolver, WSDLParserExtension... extensions) throws SAXException, XMLStreamException { |
230 ArrayList<Throwable> exceptions = new ArrayList<Throwable>(); |
246 ArrayList<Throwable> exceptions = new ArrayList<Throwable>(); |
231 try { |
247 try { |
232 WSDLModelImpl wsdlModel = wsdlParser.parseUsingMex(wsdlLoc, resolver, isClientSide, container, serviceClass, policyResolver,extensions); |
248 WSDLModel wsdlModel = wsdlParser.parseUsingMex(wsdlLoc, resolver, isClientSide, container, serviceClass, policyResolver,extensions); |
233 if(wsdlModel == null){ |
249 if(wsdlModel == null){ |
234 throw new WebServiceException(ClientMessages.FAILED_TO_PARSE(wsdlLoc.toExternalForm(), e.getMessage()), e); |
250 throw new WebServiceException(ClientMessages.FAILED_TO_PARSE(wsdlLoc.toExternalForm(), e.getMessage()), e); |
235 } |
251 } |
236 return wsdlModel; |
252 return wsdlModel; |
237 } catch (URISyntaxException e1) { |
253 } catch (URISyntaxException e1) { |
293 private static boolean hasWSDLDefinitions(XMLStreamReader reader) { |
309 private static boolean hasWSDLDefinitions(XMLStreamReader reader) { |
294 XMLStreamReaderUtil.nextElementContent(reader); |
310 XMLStreamReaderUtil.nextElementContent(reader); |
295 return reader.getName().equals(WSDLConstants.QNAME_DEFINITIONS); |
311 return reader.getName().equals(WSDLConstants.QNAME_DEFINITIONS); |
296 } |
312 } |
297 |
313 |
298 public static WSDLModelImpl parse(XMLEntityResolver.Parser wsdl, XMLEntityResolver resolver, boolean isClientSide, Container container, PolicyResolver policyResolver, WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
314 public static WSDLModel parse(XMLEntityResolver.Parser wsdl, XMLEntityResolver resolver, boolean isClientSide, Container container, PolicyResolver policyResolver, WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
299 assert resolver != null; |
315 assert resolver != null; |
300 RuntimeWSDLParser parser = new RuntimeWSDLParser( wsdl.systemId.toExternalForm(), resolver, isClientSide, container, policyResolver, extensions); |
316 RuntimeWSDLParser parser = new RuntimeWSDLParser( wsdl.systemId.toExternalForm(), resolver, isClientSide, container, policyResolver, extensions); |
301 parser.extensionFacade.start(parser.context); |
317 parser.extensionFacade.start(parser.context); |
302 parser.parseWSDL(wsdl, false); |
318 parser.parseWSDL(wsdl, false); |
303 parser.wsdlDoc.freeze(); |
319 parser.wsdlDoc.freeze(); |
304 parser.extensionFacade.finished(parser.context); |
320 parser.extensionFacade.finished(parser.context); |
305 parser.extensionFacade.postFinished(parser.context); |
321 parser.extensionFacade.postFinished(parser.context); |
306 return parser.wsdlDoc; |
322 return parser.wsdlDoc; |
307 } |
323 } |
308 |
324 |
309 public static WSDLModelImpl parse(XMLEntityResolver.Parser wsdl, XMLEntityResolver resolver, boolean isClientSide, Container container, WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
325 public static WSDLModel parse(XMLEntityResolver.Parser wsdl, XMLEntityResolver resolver, boolean isClientSide, Container container, WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { |
310 assert resolver != null; |
326 assert resolver != null; |
311 RuntimeWSDLParser parser = new RuntimeWSDLParser( wsdl.systemId.toExternalForm(), resolver, isClientSide, container, PolicyResolverFactory.create(), extensions); |
327 RuntimeWSDLParser parser = new RuntimeWSDLParser( wsdl.systemId.toExternalForm(), resolver, isClientSide, container, PolicyResolverFactory.create(), extensions); |
312 parser.extensionFacade.start(parser.context); |
328 parser.extensionFacade.start(parser.context); |
313 parser.parseWSDL(wsdl, false); |
329 parser.parseWSDL(wsdl, false); |
314 parser.wsdlDoc.freeze(); |
330 parser.wsdlDoc.freeze(); |
458 private void parseService(XMLStreamReader reader) { |
474 private void parseService(XMLStreamReader reader) { |
459 service_nsdecl.putAll(wsdldef_nsdecl); |
475 service_nsdecl.putAll(wsdldef_nsdecl); |
460 readNSDecl(service_nsdecl,reader); |
476 readNSDecl(service_nsdecl,reader); |
461 |
477 |
462 String serviceName = ParserUtil.getMandatoryNonEmptyAttribute(reader, WSDLConstants.ATTR_NAME); |
478 String serviceName = ParserUtil.getMandatoryNonEmptyAttribute(reader, WSDLConstants.ATTR_NAME); |
463 WSDLServiceImpl service = new WSDLServiceImpl(reader,wsdlDoc,new QName(targetNamespace, serviceName)); |
479 EditableWSDLService service = new WSDLServiceImpl(reader,wsdlDoc,new QName(targetNamespace, serviceName)); |
464 extensionFacade.serviceAttributes(service, reader); |
480 extensionFacade.serviceAttributes(service, reader); |
465 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
481 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
466 QName name = reader.getName(); |
482 QName name = reader.getName(); |
467 if (WSDLConstants.QNAME_PORT.equals(name)) { |
483 if (WSDLConstants.QNAME_PORT.equals(name)) { |
468 parsePort(reader, service); |
484 parsePort(reader, service); |
475 } |
491 } |
476 wsdlDoc.addService(service); |
492 wsdlDoc.addService(service); |
477 service_nsdecl = new HashMap<String, String>(); |
493 service_nsdecl = new HashMap<String, String>(); |
478 } |
494 } |
479 |
495 |
480 private void parsePort(XMLStreamReader reader, WSDLServiceImpl service) { |
496 private void parsePort(XMLStreamReader reader, EditableWSDLService service) { |
481 port_nsdecl.putAll(service_nsdecl); |
497 port_nsdecl.putAll(service_nsdecl); |
482 readNSDecl(port_nsdecl,reader); |
498 readNSDecl(port_nsdecl,reader); |
483 |
499 |
484 String portName = ParserUtil.getMandatoryNonEmptyAttribute(reader, WSDLConstants.ATTR_NAME); |
500 String portName = ParserUtil.getMandatoryNonEmptyAttribute(reader, WSDLConstants.ATTR_NAME); |
485 String binding = ParserUtil.getMandatoryNonEmptyAttribute(reader, "binding"); |
501 String binding = ParserUtil.getMandatoryNonEmptyAttribute(reader, "binding"); |
486 |
502 |
487 QName bindingName = ParserUtil.getQName(reader, binding); |
503 QName bindingName = ParserUtil.getQName(reader, binding); |
488 QName portQName = new QName(service.getName().getNamespaceURI(), portName); |
504 QName portQName = new QName(service.getName().getNamespaceURI(), portName); |
489 WSDLPortImpl port = new WSDLPortImpl(reader,service, portQName, bindingName); |
505 EditableWSDLPort port = new WSDLPortImpl(reader,service, portQName, bindingName); |
490 |
506 |
491 extensionFacade.portAttributes(port, reader); |
507 extensionFacade.portAttributes(port, reader); |
492 |
508 |
493 String location; |
509 String location; |
494 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
510 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
599 } |
615 } |
600 return soapVersion.equals(SOAPVersion.SOAP_11)?BindingID.SOAP11_HTTP:BindingID.SOAP12_HTTP; |
616 return soapVersion.equals(SOAPVersion.SOAP_11)?BindingID.SOAP11_HTTP:BindingID.SOAP12_HTTP; |
601 } |
617 } |
602 |
618 |
603 |
619 |
604 private void parseBindingOperation(XMLStreamReader reader, WSDLBoundPortTypeImpl binding) { |
620 private void parseBindingOperation(XMLStreamReader reader, EditableWSDLBoundPortType binding) { |
605 String bindingOpName = ParserUtil.getMandatoryNonEmptyAttribute(reader, "name"); |
621 String bindingOpName = ParserUtil.getMandatoryNonEmptyAttribute(reader, "name"); |
606 if (bindingOpName == null) { |
622 if (bindingOpName == null) { |
607 //TODO: throw exception? |
623 //TODO: throw exception? |
608 //skip wsdl:binding element for now |
624 //skip wsdl:binding element for now |
609 XMLStreamReaderUtil.skipElement(reader); |
625 XMLStreamReaderUtil.skipElement(reader); |
610 return; |
626 return; |
611 } |
627 } |
612 |
628 |
613 QName opName = new QName(binding.getPortTypeName().getNamespaceURI(), bindingOpName); |
629 QName opName = new QName(binding.getPortTypeName().getNamespaceURI(), bindingOpName); |
614 WSDLBoundOperationImpl bindingOp = new WSDLBoundOperationImpl(reader,binding, opName); |
630 EditableWSDLBoundOperation bindingOp = new WSDLBoundOperationImpl(reader,binding, opName); |
615 binding.put(opName, bindingOp); |
631 binding.put(opName, bindingOp); |
616 extensionFacade.bindingOperationAttributes(bindingOp, reader); |
632 extensionFacade.bindingOperationAttributes(bindingOp, reader); |
617 |
633 |
618 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
634 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
619 QName name = reader.getName(); |
635 QName name = reader.getName(); |
747 parts.put(part, ParameterBinding.HEADER); |
763 parts.put(part, ParameterBinding.HEADER); |
748 goToEnd(reader); |
764 goToEnd(reader); |
749 } |
765 } |
750 |
766 |
751 |
767 |
752 private static void parseMimeMultipartBinding(XMLStreamReader reader, WSDLBoundOperationImpl op, BindingMode mode) { |
768 private static void parseMimeMultipartBinding(XMLStreamReader reader, EditableWSDLBoundOperation op, BindingMode mode) { |
753 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
769 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
754 QName name = reader.getName(); |
770 QName name = reader.getName(); |
755 if (MIMEConstants.QNAME_PART.equals(name)) { |
771 if (MIMEConstants.QNAME_PART.equals(name)) { |
756 parseMIMEPart(reader, op, mode); |
772 parseMIMEPart(reader, op, mode); |
757 } else { |
773 } else { |
758 XMLStreamReaderUtil.skipElement(reader); |
774 XMLStreamReaderUtil.skipElement(reader); |
759 } |
775 } |
760 } |
776 } |
761 } |
777 } |
762 |
778 |
763 private static void parseMIMEPart(XMLStreamReader reader, WSDLBoundOperationImpl op, BindingMode mode) { |
779 private static void parseMIMEPart(XMLStreamReader reader, EditableWSDLBoundOperation op, BindingMode mode) { |
764 boolean bodyFound = false; |
780 boolean bodyFound = false; |
765 Map<String, ParameterBinding> parts = null; |
781 Map<String, ParameterBinding> parts = null; |
766 if (mode == BindingMode.INPUT) { |
782 if (mode == BindingMode.INPUT) { |
767 parts = op.getInputParts(); |
783 parts = op.getInputParts(); |
768 } else if (mode == BindingMode.OUTPUT) { |
784 } else if (mode == BindingMode.OUTPUT) { |
818 //TODO: throw exception? |
834 //TODO: throw exception? |
819 //skip wsdl:portType element for now |
835 //skip wsdl:portType element for now |
820 XMLStreamReaderUtil.skipElement(reader); |
836 XMLStreamReaderUtil.skipElement(reader); |
821 return; |
837 return; |
822 } |
838 } |
823 WSDLPortTypeImpl portType = new WSDLPortTypeImpl(reader,wsdlDoc, new QName(targetNamespace, portTypeName)); |
839 EditableWSDLPortType portType = new WSDLPortTypeImpl(reader,wsdlDoc, new QName(targetNamespace, portTypeName)); |
824 extensionFacade.portTypeAttributes(portType, reader); |
840 extensionFacade.portTypeAttributes(portType, reader); |
825 wsdlDoc.addPortType(portType); |
841 wsdlDoc.addPortType(portType); |
826 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
842 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
827 QName name = reader.getName(); |
843 QName name = reader.getName(); |
828 if (WSDLConstants.QNAME_OPERATION.equals(name)) { |
844 if (WSDLConstants.QNAME_OPERATION.equals(name)) { |
832 } |
848 } |
833 } |
849 } |
834 } |
850 } |
835 |
851 |
836 |
852 |
837 private void parsePortTypeOperation(XMLStreamReader reader, WSDLPortTypeImpl portType) { |
853 private void parsePortTypeOperation(XMLStreamReader reader, EditableWSDLPortType portType) { |
838 String operationName = ParserUtil.getMandatoryNonEmptyAttribute(reader, WSDLConstants.ATTR_NAME); |
854 String operationName = ParserUtil.getMandatoryNonEmptyAttribute(reader, WSDLConstants.ATTR_NAME); |
839 if (operationName == null) { |
855 if (operationName == null) { |
840 //TODO: throw exception? |
856 //TODO: throw exception? |
841 //skip wsdl:portType element for now |
857 //skip wsdl:portType element for now |
842 XMLStreamReaderUtil.skipElement(reader); |
858 XMLStreamReaderUtil.skipElement(reader); |
843 return; |
859 return; |
844 } |
860 } |
845 |
861 |
846 QName operationQName = new QName(portType.getName().getNamespaceURI(), operationName); |
862 QName operationQName = new QName(portType.getName().getNamespaceURI(), operationName); |
847 WSDLOperationImpl operation = new WSDLOperationImpl(reader,portType, operationQName); |
863 EditableWSDLOperation operation = new WSDLOperationImpl(reader,portType, operationQName); |
848 extensionFacade.portTypeOperationAttributes(operation, reader); |
864 extensionFacade.portTypeOperationAttributes(operation, reader); |
849 String parameterOrder = ParserUtil.getAttribute(reader, "parameterOrder"); |
865 String parameterOrder = ParserUtil.getAttribute(reader, "parameterOrder"); |
850 operation.setParameterOrder(parameterOrder); |
866 operation.setParameterOrder(parameterOrder); |
851 portType.put(operationName, operation); |
867 portType.put(operationName, operation); |
852 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
868 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
862 } |
878 } |
863 } |
879 } |
864 } |
880 } |
865 |
881 |
866 |
882 |
867 private void parsePortTypeOperationFault(XMLStreamReader reader, WSDLOperationImpl operation) { |
883 private void parsePortTypeOperationFault(XMLStreamReader reader, EditableWSDLOperation operation) { |
868 String msg = ParserUtil.getMandatoryNonEmptyAttribute(reader, "message"); |
884 String msg = ParserUtil.getMandatoryNonEmptyAttribute(reader, "message"); |
869 QName msgName = ParserUtil.getQName(reader, msg); |
885 QName msgName = ParserUtil.getQName(reader, msg); |
870 String name = ParserUtil.getMandatoryNonEmptyAttribute(reader, "name"); |
886 String name = ParserUtil.getMandatoryNonEmptyAttribute(reader, "name"); |
871 WSDLFaultImpl fault = new WSDLFaultImpl(reader,name, msgName, operation); |
887 EditableWSDLFault fault = new WSDLFaultImpl(reader,name, msgName, operation); |
872 operation.addFault(fault); |
888 operation.addFault(fault); |
873 extensionFacade.portTypeOperationFaultAttributes(fault, reader); |
889 extensionFacade.portTypeOperationFaultAttributes(fault, reader); |
874 extensionFacade.portTypeOperationFault(operation, reader); |
890 extensionFacade.portTypeOperationFault(operation, reader); |
875 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
891 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
876 extensionFacade.portTypeOperationFaultElements(fault, reader); |
892 extensionFacade.portTypeOperationFaultElements(fault, reader); |
877 } |
893 } |
878 } |
894 } |
879 |
895 |
880 private void parsePortTypeOperationInput(XMLStreamReader reader, WSDLOperationImpl operation) { |
896 private void parsePortTypeOperationInput(XMLStreamReader reader, EditableWSDLOperation operation) { |
881 String msg = ParserUtil.getMandatoryNonEmptyAttribute(reader, "message"); |
897 String msg = ParserUtil.getMandatoryNonEmptyAttribute(reader, "message"); |
882 QName msgName = ParserUtil.getQName(reader, msg); |
898 QName msgName = ParserUtil.getQName(reader, msg); |
883 String name = ParserUtil.getAttribute(reader, "name"); |
899 String name = ParserUtil.getAttribute(reader, "name"); |
884 WSDLInputImpl input = new WSDLInputImpl(reader, name, msgName, operation); |
900 EditableWSDLInput input = new WSDLInputImpl(reader, name, msgName, operation); |
885 operation.setInput(input); |
901 operation.setInput(input); |
886 extensionFacade.portTypeOperationInputAttributes(input, reader); |
902 extensionFacade.portTypeOperationInputAttributes(input, reader); |
887 extensionFacade.portTypeOperationInput(operation, reader); |
903 extensionFacade.portTypeOperationInput(operation, reader); |
888 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
904 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
889 extensionFacade.portTypeOperationInputElements(input, reader); |
905 extensionFacade.portTypeOperationInputElements(input, reader); |
890 } |
906 } |
891 } |
907 } |
892 |
908 |
893 private void parsePortTypeOperationOutput(XMLStreamReader reader, WSDLOperationImpl operation) { |
909 private void parsePortTypeOperationOutput(XMLStreamReader reader, EditableWSDLOperation operation) { |
894 String msg = ParserUtil.getAttribute(reader, "message"); |
910 String msg = ParserUtil.getAttribute(reader, "message"); |
895 QName msgName = ParserUtil.getQName(reader, msg); |
911 QName msgName = ParserUtil.getQName(reader, msg); |
896 String name = ParserUtil.getAttribute(reader, "name"); |
912 String name = ParserUtil.getAttribute(reader, "name"); |
897 WSDLOutputImpl output = new WSDLOutputImpl(reader,name, msgName, operation); |
913 EditableWSDLOutput output = new WSDLOutputImpl(reader,name, msgName, operation); |
898 operation.setOutput(output); |
914 operation.setOutput(output); |
899 extensionFacade.portTypeOperationOutputAttributes(output, reader); |
915 extensionFacade.portTypeOperationOutputAttributes(output, reader); |
900 extensionFacade.portTypeOperationOutput(operation, reader); |
916 extensionFacade.portTypeOperationOutput(operation, reader); |
901 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
917 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
902 extensionFacade.portTypeOperationOutputElements(output, reader); |
918 extensionFacade.portTypeOperationOutputElements(output, reader); |
903 } |
919 } |
904 } |
920 } |
905 |
921 |
906 private void parseMessage(XMLStreamReader reader) { |
922 private void parseMessage(XMLStreamReader reader) { |
907 String msgName = ParserUtil.getMandatoryNonEmptyAttribute(reader, WSDLConstants.ATTR_NAME); |
923 String msgName = ParserUtil.getMandatoryNonEmptyAttribute(reader, WSDLConstants.ATTR_NAME); |
908 WSDLMessageImpl msg = new WSDLMessageImpl(reader,new QName(targetNamespace, msgName)); |
924 EditableWSDLMessage msg = new WSDLMessageImpl(reader,new QName(targetNamespace, msgName)); |
909 extensionFacade.messageAttributes(msg, reader); |
925 extensionFacade.messageAttributes(msg, reader); |
910 int partIndex = 0; |
926 int partIndex = 0; |
911 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
927 while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { |
912 QName name = reader.getName(); |
928 QName name = reader.getName(); |
913 if (WSDLConstants.QNAME_PART.equals(name)) { |
929 if (WSDLConstants.QNAME_PART.equals(name)) { |