public static WSDLModel parse(XMLEntityResolver.Parser wsdl, XMLEntityResolver resolver, boolean isClientSide, Container container, PolicyResolver policyResolver, WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { assert resolver != null; RuntimeWSDLParser parser = new RuntimeWSDLParser( wsdl.systemId.toExternalForm(), resolver, isClientSide, container, policyResolver, extensions); parser.extensionFacade.start(parser.context); parser.parseWSDL(wsdl, false); parser.wsdlDoc.freeze(); parser.extensionFacade.finished(parser.context); parser.extensionFacade.postFinished(parser.context); return parser.wsdlDoc; }
private void parseImport(@NotNull URL wsdlLoc) throws XMLStreamException, IOException, SAXException { String systemId = wsdlLoc.toExternalForm(); XMLEntityResolver.Parser parser = resolver.resolveEntity(null, systemId); if (parser == null) { parser = new Parser(wsdlLoc, createReader(wsdlLoc)); } parseWSDL(parser, true); }
private void parseInputBinding(XMLStreamReader reader, EditableWSDLBoundOperation bindingOp) { boolean bodyFound = false; extensionFacade.bindingOperationInputAttributes(bindingOp, reader); while (XMLStreamReaderUtil.nextElementContent(reader) != XMLStreamConstants.END_ELEMENT) { QName name = reader.getName(); if ((SOAPConstants.QNAME_BODY.equals(name) || SOAPConstants.QNAME_SOAP12BODY.equals(name)) && !bodyFound) { bodyFound = true; bindingOp.setInputExplicitBodyParts(parseSOAPBodyBinding(reader, bindingOp, BindingMode.INPUT)); goToEnd(reader); } else if ((SOAPConstants.QNAME_HEADER.equals(name) || SOAPConstants.QNAME_SOAP12HEADER.equals(name))) { parseSOAPHeaderBinding(reader, bindingOp.getInputParts()); } else if (MIMEConstants.QNAME_MULTIPART_RELATED.equals(name)) { parseMimeMultipartBinding(reader, bindingOp, BindingMode.INPUT); } else { extensionFacade.bindingOperationInputElements(bindingOp, reader); } } }
XMLStreamReaderUtil.nextElementContent(reader); if (WSDLConstants.QNAME_DEFINITIONS.equals(reader.getName())) { readNSDecl(wsdldef_nsdecl, reader); parseImport(parser.systemId, reader); } else if (WSDLConstants.QNAME_MESSAGE.equals(name)) { parseMessage(reader); } else if (WSDLConstants.QNAME_PORT_TYPE.equals(name)) { parsePortType(reader); } else if (WSDLConstants.QNAME_BINDING.equals(name)) { parseBinding(reader); } else if (WSDLConstants.QNAME_SERVICE.equals(name)) { parseService(reader); } else { extensionFacade.definitionsElements(reader);
/** * Parses WSDL from the given wsdlLoc and gives a {@link WSDLModel} built from it. * * @param wsdlEntityParser Works like an entityResolver to resolve WSDLs * @param resolver {@link XMLEntityResolver}, works at XML infoset level * @param isClientSide true - its invoked on the client, false means its invoked on the server * @param container - container in which the parser is run * @param policyResolver - PolicyResolver for resolving effective Policy * @param extensions var args of {@link com.sun.xml.ws.api.wsdl.parser.WSDLParserExtension}s * @return A {@link WSDLModel} built from the given wsdlLocation} * @throws java.io.IOException * @throws javax.xml.stream.XMLStreamException * @throws org.xml.sax.SAXException */ public static @NotNull WSDLModel parse(XMLEntityResolver.Parser wsdlEntityParser, XMLEntityResolver resolver, boolean isClientSide, @NotNull Container container, PolicyResolver policyResolver, WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { return RuntimeWSDLParser.parse(wsdlEntityParser, resolver, isClientSide, container, policyResolver, extensions); }
assert resolver != null; RuntimeWSDLParser wsdlParser = new RuntimeWSDLParser(wsdlSource.getSystemId(), new EntityResolverWrapper(resolver, isUseStreamFromEntityResolverWrapper), isClientSide, container, policyResolver, extensions); Parser parser; try{ parser = wsdlParser.resolveWSDL(wsdlLoc, wsdlSource, serviceClass); if(!hasWSDLDefinitions(parser.parser)){ throw new XMLStreamException(ClientMessages.RUNTIME_WSDLPARSER_INVALID_WSDL(parser.systemId, WSDLConstants.QNAME_DEFINITIONS, parser.parser.getName(), parser.parser.getLocation())); return tryWithMex(wsdlParser, wsdlLoc, resolver, isClientSide, container, e, serviceClass, policyResolver, extensions); return tryWithMex(wsdlParser, wsdlLoc, resolver, isClientSide, container, e, serviceClass, policyResolver, extensions); wsdlParser.parseWSDL(parser, false); wsdlParser.wsdlDoc.freeze(); wsdlParser.extensionFacade.finished(wsdlParser.context);
String style = null; if (WSDLConstants.QNAME_INPUT.equals(name)) { parseInputBinding(reader, bindingOp); } else if (WSDLConstants.QNAME_OUTPUT.equals(name)) { parseOutputBinding(reader, bindingOp); } else if (WSDLConstants.QNAME_FAULT.equals(name)) { parseFaultBinding(reader, bindingOp); } else if (SOAPConstants.QNAME_OPERATION.equals(name) || SOAPConstants.QNAME_SOAP12OPERATION.equals(name)) { bindingOp.setSoapAction(soapAction); goToEnd(reader); } else { extensionFacade.bindingOperationElements(bindingOp, reader);
if (WSDLConstants.NS_SOAP_BINDING.equals(name)) { String transport = reader.getAttributeValue(null, WSDLConstants.ATTR_TRANSPORT); binding.setBindingId(createBindingId(transport, SOAPVersion.SOAP_11)); binding.setStyle(Style.DOCUMENT); goToEnd(reader); } else if (WSDLConstants.NS_SOAP12_BINDING.equals(name)) { String transport = reader.getAttributeValue(null, WSDLConstants.ATTR_TRANSPORT); binding.setBindingId(createBindingId(transport, SOAPVersion.SOAP_12)); binding.setStyle(Style.DOCUMENT); goToEnd(reader); } else if (WSDLConstants.QNAME_OPERATION.equals(name)) { parseBindingOperation(reader, binding); } else { extensionFacade.bindingElements(binding, reader);
wsdlParser = new RuntimeWSDLParser(wsdlLoc.toExternalForm(), new MexEntityResolver(wsdls), isClientSide, container, policyResolver, extensions); wsdlParser.extensionFacade.start(wsdlParser.context); String systemId = src.getSystemId(); Parser parser = wsdlParser.resolver.resolveEntity(null, systemId); wsdlParser.parseWSDL(parser, false); urlString += "?wsdl"; wsdlLoc = new URL(urlString); wsdlParser = new RuntimeWSDLParser(wsdlLoc.toExternalForm(),new EntityResolverWrapper(resolver), isClientSide, container, policyResolver, extensions); wsdlParser.extensionFacade.start(wsdlParser.context); Parser parser = resolveWSDL(wsdlLoc, new StreamSource(wsdlLoc.toExternalForm()), serviceClass); wsdlParser.parseWSDL(parser, false);
if (isKnownReadableSource(wsdlSource)) { parser = new Parser(wsdlLoc, createReader(wsdlSource)); } else if (wsdlLoc != null) { parser = new Parser(wsdlLoc, createReader(wsdlLoc, serviceClass)); parser = new Parser(wsdlLoc, createReader(wsdlSource));
private static void parseSOAPHeaderBinding(XMLStreamReader reader, Map<String, ParameterBinding> parts) { String part = reader.getAttributeValue(null, "part"); //if(part == null| part.equals("")||message == null || message.equals("")){ if (part == null || part.equals("")) { return; } //lets not worry about message attribute for now, probably additional headers wont be there //String message = reader.getAttributeValue(null, "message"); //QName msgName = ParserUtil.getQName(reader, message); parts.put(part, ParameterBinding.HEADER); goToEnd(reader); }
/** * Make sure to return a "fresh" reader each time it is called because * more than one active reader may be needed within a single thread * to parse a WSDL file. */ private static XMLStreamReader createReader(URL wsdlLoc) throws IOException, XMLStreamException { return createReader(wsdlLoc, null); }
XMLStreamReaderUtil.nextElementContent(reader); if (WSDLConstants.QNAME_DEFINITIONS.equals(reader.getName())) { readNSDecl(wsdldef_nsdecl, reader); parseImport(parser.systemId, reader); } else if (WSDLConstants.QNAME_MESSAGE.equals(name)) { parseMessage(reader); } else if (WSDLConstants.QNAME_PORT_TYPE.equals(name)) { parsePortType(reader); } else if (WSDLConstants.QNAME_BINDING.equals(name)) { parseBinding(reader); } else if (WSDLConstants.QNAME_SERVICE.equals(name)) { parseService(reader); } else { extensionFacade.definitionsElements(reader);
/** * Parses WSDL from the given wsdlLoc and gives a {@link WSDLModel} built from it. * * @param wsdlEntityParser Works like an entityResolver to resolve WSDLs * @param resolver {@link XMLEntityResolver}, works at XML infoset level * @param isClientSide true - its invoked on the client, false means its invoked on the server * @param container - container in which the parser is run * @param policyResolver - PolicyResolver for resolving effective Policy * @param extensions var args of {@link com.sun.xml.ws.api.wsdl.parser.WSDLParserExtension}s * @return A {@link WSDLModel} built from the given wsdlLocation} * @throws java.io.IOException * @throws javax.xml.stream.XMLStreamException * @throws org.xml.sax.SAXException */ public static @NotNull WSDLModel parse(XMLEntityResolver.Parser wsdlEntityParser, XMLEntityResolver resolver, boolean isClientSide, @NotNull Container container, PolicyResolver policyResolver, WSDLParserExtension... extensions) throws IOException, XMLStreamException, SAXException { return RuntimeWSDLParser.parse(wsdlEntityParser, resolver, isClientSide, container, policyResolver, extensions); }
assert resolver != null; RuntimeWSDLParser wsdlParser = new RuntimeWSDLParser(wsdlSource.getSystemId(), new EntityResolverWrapper(resolver, isUseStreamFromEntityResolverWrapper), isClientSide, container, policyResolver, extensions); Parser parser; try{ parser = wsdlParser.resolveWSDL(wsdlLoc, wsdlSource, serviceClass); if(!hasWSDLDefinitions(parser.parser)){ throw new XMLStreamException(ClientMessages.RUNTIME_WSDLPARSER_INVALID_WSDL(parser.systemId, WSDLConstants.QNAME_DEFINITIONS, parser.parser.getName(), parser.parser.getLocation())); return tryWithMex(wsdlParser, wsdlLoc, resolver, isClientSide, container, e, serviceClass, policyResolver, extensions); return tryWithMex(wsdlParser, wsdlLoc, resolver, isClientSide, container, e, serviceClass, policyResolver, extensions); wsdlParser.parseWSDL(parser, false); wsdlParser.wsdlDoc.freeze(); wsdlParser.extensionFacade.finished(wsdlParser.context);
String style = null; if (WSDLConstants.QNAME_INPUT.equals(name)) { parseInputBinding(reader, bindingOp); } else if (WSDLConstants.QNAME_OUTPUT.equals(name)) { parseOutputBinding(reader, bindingOp); } else if (WSDLConstants.QNAME_FAULT.equals(name)) { parseFaultBinding(reader, bindingOp); } else if (SOAPConstants.QNAME_OPERATION.equals(name) || SOAPConstants.QNAME_SOAP12OPERATION.equals(name)) { bindingOp.setSoapAction(soapAction); goToEnd(reader); } else { extensionFacade.bindingOperationElements(bindingOp, reader);
if (WSDLConstants.NS_SOAP_BINDING.equals(name)) { String transport = reader.getAttributeValue(null, WSDLConstants.ATTR_TRANSPORT); binding.setBindingId(createBindingId(transport, SOAPVersion.SOAP_11)); binding.setStyle(Style.DOCUMENT); goToEnd(reader); } else if (WSDLConstants.NS_SOAP12_BINDING.equals(name)) { String transport = reader.getAttributeValue(null, WSDLConstants.ATTR_TRANSPORT); binding.setBindingId(createBindingId(transport, SOAPVersion.SOAP_12)); binding.setStyle(Style.DOCUMENT); goToEnd(reader); } else if (WSDLConstants.QNAME_OPERATION.equals(name)) { parseBindingOperation(reader, binding); } else { extensionFacade.bindingElements(binding, reader);
wsdlParser = new RuntimeWSDLParser(wsdlLoc.toExternalForm(), new MexEntityResolver(wsdls), isClientSide, container, policyResolver, extensions); wsdlParser.extensionFacade.start(wsdlParser.context); String systemId = src.getSystemId(); Parser parser = wsdlParser.resolver.resolveEntity(null, systemId); wsdlParser.parseWSDL(parser, false); urlString += "?wsdl"; wsdlLoc = new URL(urlString); wsdlParser = new RuntimeWSDLParser(wsdlLoc.toExternalForm(),new EntityResolverWrapper(resolver), isClientSide, container, policyResolver, extensions); wsdlParser.extensionFacade.start(wsdlParser.context); Parser parser = resolveWSDL(wsdlLoc, new StreamSource(wsdlLoc.toExternalForm()), serviceClass); wsdlParser.parseWSDL(parser, false);
if (isKnownReadableSource(wsdlSource)) { parser = new Parser(wsdlLoc, createReader(wsdlSource)); } else if (wsdlLoc != null) { parser = new Parser(wsdlLoc, createReader(wsdlLoc, serviceClass)); parser = new Parser(wsdlLoc, createReader(wsdlSource));
private static void parseSOAPHeaderBinding(XMLStreamReader reader, Map<String, ParameterBinding> parts) { String part = reader.getAttributeValue(null, "part"); //if(part == null| part.equals("")||message == null || message.equals("")){ if (part == null || part.equals("")) { return; } //lets not worry about message attribute for now, probably additional headers wont be there //String message = reader.getAttributeValue(null, "message"); //QName msgName = ParserUtil.getQName(reader, message); parts.put(part, ParameterBinding.HEADER); goToEnd(reader); }