325N/A/*
325N/A * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
325N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
325N/A *
325N/A * This code is free software; you can redistribute it and/or modify it
325N/A * under the terms of the GNU General Public License version 2 only, as
325N/A * published by the Free Software Foundation. Oracle designates this
325N/A * particular file as subject to the "Classpath" exception as provided
325N/A * by Oracle in the LICENSE file that accompanied this code.
325N/A *
325N/A * This code is distributed in the hope that it will be useful, but WITHOUT
325N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
325N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
325N/A * version 2 for more details (a copy is included in the LICENSE file that
325N/A * accompanied this code).
325N/A *
325N/A * You should have received a copy of the GNU General Public License version
325N/A * 2 along with this work; if not, write to the Free Software Foundation,
325N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
325N/A *
325N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
325N/A * or visit www.oracle.com if you need additional information or have any
325N/A * questions.
325N/A */
325N/A
325N/Apackage com.sun.tools.internal.ws.wsdl.parser;
325N/A
325N/Aimport com.sun.tools.internal.ws.api.wsdl.TWSDLExtensible;
325N/Aimport com.sun.tools.internal.ws.api.wsdl.TWSDLExtension;
325N/Aimport com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext;
325N/Aimport com.sun.tools.internal.ws.util.xml.XmlUtil;
325N/Aimport com.sun.tools.internal.ws.wsdl.document.*;
325N/Aimport com.sun.tools.internal.ws.wsdl.document.jaxws.CustomName;
325N/Aimport com.sun.tools.internal.ws.wsdl.document.jaxws.JAXWSBinding;
325N/Aimport com.sun.tools.internal.ws.wsdl.document.jaxws.JAXWSBindingsConstants;
325N/Aimport com.sun.tools.internal.ws.wsdl.document.jaxws.Parameter;
325N/Aimport org.w3c.dom.Element;
325N/Aimport org.w3c.dom.Node;
325N/Aimport org.w3c.dom.NodeList;
325N/A
325N/Aimport javax.xml.namespace.NamespaceContext;
325N/Aimport javax.xml.namespace.QName;
325N/Aimport javax.xml.xpath.XPath;
325N/Aimport javax.xml.xpath.XPathConstants;
325N/Aimport javax.xml.xpath.XPathExpressionException;
325N/Aimport javax.xml.xpath.XPathFactory;
325N/Aimport java.util.Iterator;
325N/Aimport java.util.Map;
325N/A
325N/A
325N/A/**
325N/A * @author Vivek Pandey
325N/A *
325N/A * jaxws:bindings exension handler.
325N/A *
325N/A */
325N/Apublic class JAXWSBindingExtensionHandler extends AbstractExtensionHandler {
325N/A
325N/A private static final XPathFactory xpf = XPathFactory.newInstance();
325N/A private final XPath xpath = xpf.newXPath();
325N/A
325N/A public JAXWSBindingExtensionHandler(Map<String, AbstractExtensionHandler> extensionHandlerMap) {
325N/A super(extensionHandlerMap);
325N/A }
325N/A
325N/A /* (non-Javadoc)
325N/A * @see AbstractExtensionHandler#getNamespaceURI()
325N/A */
325N/A public String getNamespaceURI() {
325N/A return JAXWSBindingsConstants.NS_JAXWS_BINDINGS;
325N/A }
325N/A
325N/A /**
325N/A * @param context
325N/A * @param parent
325N/A * @param e
325N/A */
325N/A private boolean parseGlobalJAXWSBindings(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
325N/A context.push();
325N/A context.registerNamespaces(e);
325N/A
325N/A JAXWSBinding jaxwsBinding = getJAXWSExtension(parent);
325N/A if(jaxwsBinding == null)
325N/A jaxwsBinding = new JAXWSBinding(context.getLocation(e));
325N/A String attr = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.WSDL_LOCATION_ATTR);
325N/A if (attr != null) {
325N/A jaxwsBinding.setWsdlLocation(attr);
325N/A }
325N/A
325N/A attr = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.NODE_ATTR);
325N/A if (attr != null) {
325N/A jaxwsBinding.setNode(attr);
325N/A }
325N/A
325N/A attr = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.VERSION_ATTR);
325N/A if (attr != null) {
325N/A jaxwsBinding.setVersion(attr);
325N/A }
325N/A
325N/A for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
325N/A Element e2 = Util.nextElement(iter);
325N/A if (e2 == null)
325N/A break;
325N/A
325N/A if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.PACKAGE)){
325N/A parsePackage(context, jaxwsBinding, e2);
325N/A if((jaxwsBinding.getJaxwsPackage() != null) && (jaxwsBinding.getJaxwsPackage().getJavaDoc() != null)){
325N/A ((Definitions)parent).setDocumentation(new Documentation(jaxwsBinding.getJaxwsPackage().getJavaDoc()));
325N/A }
325N/A }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_WRAPPER_STYLE)){
325N/A parseWrapperStyle(context, jaxwsBinding, e2);
325N/A }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_ASYNC_MAPPING)){
325N/A parseAsynMapping(context, jaxwsBinding, e2);
325N/A }
325N/A// else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_ADDITIONAL_SOAPHEADER_MAPPING)){
325N/A// parseAdditionalSOAPHeaderMapping(context, jaxwsBinding, e2);
325N/A// }
325N/A else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_MIME_CONTENT)){
325N/A parseMimeContent(context, jaxwsBinding, e2);
325N/A }else{
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e2.getTagName(),
325N/A e2.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A parent.addExtension(jaxwsBinding);
325N/A context.pop();
325N/A// context.fireDoneParsingEntity(
325N/A// JAXWSBindingsConstants.JAXWS_BINDINGS,
325N/A// jaxwsBinding);
325N/A return true;
325N/A }
325N/A
325N/A private static JAXWSBinding getJAXWSExtension(TWSDLExtensible extensible) {
325N/A for (TWSDLExtension extension:extensible.extensions()) {
325N/A if (extension.getClass().equals(JAXWSBinding.class)) {
325N/A return (JAXWSBinding)extension;
325N/A }
325N/A }
325N/A
325N/A return null;
325N/A }
325N/A
325N/A /**
325N/A * @param context
325N/A * @param parent
325N/A * @param e
325N/A */
325N/A private void parseProvider(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding parent, Element e) {
325N/A String val = e.getTextContent();
325N/A if(val == null)
325N/A return;
325N/A if(val.equals("false") || val.equals("0")){
325N/A ((JAXWSBinding)parent).setProvider(Boolean.FALSE);
325N/A }else if(val.equals("true") || val.equals("1")){
325N/A ((JAXWSBinding)parent).setProvider(Boolean.TRUE);
325N/A }
325N/A
325N/A }
325N/A
325N/A /**
325N/A *
325N/A * @param context
325N/A * @param parent
325N/A * @param e
325N/A */
325N/A private void parseJAXBBindings(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, TWSDLExtensible parent, Element e) {
325N/A JAXWSBinding binding = (JAXWSBinding)parent;
325N/A binding.addJaxbBindings(e);
325N/A }
325N/A
325N/A /**
325N/A * @param context
325N/A * @param parent
325N/A * @param e
325N/A */
325N/A private void parsePackage(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding parent, Element e) {
325N/A //System.out.println("In handlePackageExtension: " + e.getNodeName());
325N/A String packageName = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.NAME_ATTR);
325N/A JAXWSBinding binding = (JAXWSBinding)parent;
325N/A binding.setJaxwsPackage(new CustomName(packageName, getJavaDoc(e)));
325N/A }
325N/A
325N/A /**
325N/A * @param context
325N/A * @param parent
325N/A * @param e
325N/A */
325N/A private void parseWrapperStyle(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding parent, Element e) {
325N/A //System.out.println("In handleWrapperStyleExtension: " + e.getNodeName());
325N/A String val = e.getTextContent();
325N/A if(val == null)
325N/A return;
325N/A if(val.equals("false") || val.equals("0")){
325N/A ((JAXWSBinding)parent).setEnableWrapperStyle(Boolean.FALSE);
325N/A }else if(val.equals("true") || val.equals("1")){
325N/A ((JAXWSBinding)parent).setEnableWrapperStyle(Boolean.TRUE);
325N/A }
325N/A }
325N/A
325N/A /**
325N/A * @param context
325N/A * @param parent
325N/A * @param e
325N/A */
325N/A// private void parseAdditionalSOAPHeaderMapping(TWSDLParserContextImpl context, TWSDLExtensible parent, Element e) {
325N/A// //System.out.println("In handleAdditionalSOAPHeaderExtension: " + e.getNodeName());
325N/A// String val = e.getTextContent();
325N/A// if(val == null)
325N/A// return;
325N/A// if(val.equals("false") || val.equals("0")){
325N/A// ((JAXWSBinding)parent).setEnableAdditionalHeaderMapping(Boolean.FALSE);
325N/A// }else if(val.equals("true") || val.equals("1")){
325N/A// ((JAXWSBinding)parent).setEnableAdditionalHeaderMapping(Boolean.TRUE);
325N/A// }
325N/A// }
325N/A
325N/A /**
325N/A * @param context
325N/A * @param parent
325N/A * @param e
325N/A */
325N/A private void parseAsynMapping(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding parent, Element e) {
325N/A //System.out.println("In handleAsynMappingExtension: " + e.getNodeName());
325N/A String val = e.getTextContent();
325N/A if(val == null)
325N/A return;
325N/A if(val.equals("false") || val.equals("0")){
325N/A ((JAXWSBinding)parent).setEnableAsyncMapping(Boolean.FALSE);
325N/A }else if(val.equals("true") || val.equals("1")){
325N/A ((JAXWSBinding)parent).setEnableAsyncMapping(Boolean.TRUE);
325N/A }
325N/A }
325N/A
325N/A /**
325N/A * @param context
325N/A * @param parent
325N/A * @param e
325N/A */
325N/A private void parseMimeContent(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding parent, Element e) {
325N/A //System.out.println("In handleMimeContentExtension: " + e.getNodeName());
325N/A String val = e.getTextContent();
325N/A if(val == null)
325N/A return;
325N/A if(val.equals("false") || val.equals("0")){
325N/A ((JAXWSBinding)parent).setEnableMimeContentMapping(Boolean.FALSE);
325N/A }else if(val.equals("true") || val.equals("1")){
325N/A ((JAXWSBinding)parent).setEnableMimeContentMapping(Boolean.TRUE);
325N/A }
325N/A }
325N/A
325N/A /**
325N/A * @param context
325N/A * @param jaxwsBinding
325N/A * @param e
325N/A */
325N/A private void parseMethod(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding jaxwsBinding, Element e) {
325N/A String methodName = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.NAME_ATTR);
325N/A String javaDoc = getJavaDoc(e);
325N/A CustomName name = new CustomName(methodName, javaDoc);
325N/A jaxwsBinding.setMethodName(name);
325N/A }
325N/A
325N/A /**
325N/A * @param context
325N/A * @param jaxwsBinding
325N/A * @param e
325N/A */
325N/A private void parseParameter(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding jaxwsBinding, Element e) {
325N/A String part = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.PART_ATTR);
325N/A Element msgPartElm = evaluateXPathNode(e.getOwnerDocument(), part, new NamespaceContextImpl(e));
325N/A Node msgElm = msgPartElm.getParentNode();
325N/A //MessagePart msgPart = new MessagePart();
325N/A
325N/A String partName = XmlUtil.getAttributeOrNull(msgPartElm, "name");
325N/A String msgName = XmlUtil.getAttributeOrNull((Element)msgElm, "name");
325N/A if((partName == null) || (msgName == null))
325N/A return;
325N/A
325N/A String val = XmlUtil.getAttributeOrNull(msgPartElm, "element");
325N/A
325N/A String element = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.ELEMENT_ATTR);
325N/A String name = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.NAME_ATTR);
325N/A
325N/A QName elementName = null;
325N/A if(element != null){
325N/A String uri = e.lookupNamespaceURI(XmlUtil.getPrefix(element));
325N/A elementName = (uri == null)?null:new QName(uri, XmlUtil.getLocalPart(element));
325N/A }
325N/A
325N/A jaxwsBinding.addParameter(new Parameter(msgName, partName, elementName, name));
325N/A }
325N/A
325N/A private Element evaluateXPathNode(Node target, String expression, NamespaceContext namespaceContext) {
325N/A NodeList nlst;
325N/A try {
325N/A xpath.setNamespaceContext(namespaceContext);
325N/A nlst = (NodeList)xpath.evaluate(expression, target, XPathConstants.NODESET);
325N/A } catch (XPathExpressionException e) {
325N/A Util.fail("internalizer.XPathEvaluationError", e.getMessage());
325N/A return null; // abort processing this <jaxb:bindings>
325N/A }
325N/A
325N/A if( nlst.getLength()==0 ) {
325N/A Util.fail("internalizer.XPathEvaluatesToNoTarget", new Object[]{expression});
325N/A return null; // abort
325N/A }
325N/A
325N/A if( nlst.getLength()!=1 ) {
325N/A Util.fail("internalizer.XPathEvaulatesToTooManyTargets", new Object[]{expression, nlst.getLength()});
325N/A return null; // abort
325N/A }
325N/A
325N/A Node rnode = nlst.item(0);
325N/A if(!(rnode instanceof Element )) {
325N/A Util.fail("internalizer.XPathEvaluatesToNonElement", new Object[]{expression});
325N/A return null; // abort
325N/A }
325N/A return (Element)rnode;
325N/A }
325N/A
325N/A /**
325N/A * @param context
325N/A * @param jaxwsBinding
325N/A * @param e
325N/A */
325N/A private void parseClass(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding jaxwsBinding, Element e) {
325N/A String className = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.NAME_ATTR);
325N/A String javaDoc = getJavaDoc(e);
325N/A jaxwsBinding.setClassName(new CustomName(className, javaDoc));
325N/A }
325N/A
325N/A
325N/A /**
325N/A * @param context
325N/A * @param jaxwsBinding
325N/A * @param e
325N/A */
325N/A private void parseException(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding jaxwsBinding, Element e) {
325N/A for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
325N/A Element e2 = Util.nextElement(iter);
325N/A if (e2 == null)
325N/A break;
325N/A if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.CLASS)){
325N/A String className = XmlUtil.getAttributeOrNull(e2, JAXWSBindingsConstants.NAME_ATTR);
325N/A String javaDoc = getJavaDoc(e2);
325N/A jaxwsBinding.setException(new com.sun.tools.internal.ws.wsdl.document.jaxws.Exception(new CustomName(className, javaDoc)));
325N/A }
325N/A }
325N/A }
325N/A
325N/A public boolean handleDefinitionsExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
325N/A return parseGlobalJAXWSBindings(context, parent, e);
325N/A }
325N/A
325N/A public boolean handlePortTypeExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
325N/A if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
325N/A context.push();
325N/A context.registerNamespaces(e);
325N/A JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
325N/A
325N/A for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
325N/A Element e2 = Util.nextElement(iter);
325N/A if (e2 == null)
325N/A break;
325N/A
325N/A if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_WRAPPER_STYLE)){
325N/A parseWrapperStyle(context, jaxwsBinding, e2);
325N/A }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_ASYNC_MAPPING)){
325N/A parseAsynMapping(context, jaxwsBinding, e2);
325N/A }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.CLASS)){
325N/A parseClass(context, jaxwsBinding, e2);
325N/A if((jaxwsBinding.getClassName() != null) && (jaxwsBinding.getClassName().getJavaDoc() != null)){
325N/A ((PortType)parent).setDocumentation(new Documentation(jaxwsBinding.getClassName().getJavaDoc()));
325N/A }
325N/A }else{
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e2.getTagName(),
325N/A e2.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A parent.addExtension(jaxwsBinding);
325N/A context.pop();
325N/A// context.fireDoneParsingEntity(
325N/A// JAXWSBindingsConstants.JAXWS_BINDINGS,
325N/A// jaxwsBinding);
325N/A return true;
325N/A }else {
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e.getTagName(),
325N/A e.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A
325N/A public boolean handleOperationExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
325N/A if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
325N/A if(parent instanceof Operation){
325N/A return handlePortTypeOperation(context, (Operation)parent, e);
325N/A }else if(parent instanceof BindingOperation){
325N/A return handleBindingOperation(context, (BindingOperation)parent, e);
325N/A }
325N/A }else {
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e.getTagName(),
325N/A e.getNamespaceURI());
325N/A return false;
325N/A }
325N/A return false;
325N/A }
325N/A
325N/A private boolean handleBindingOperation(TWSDLParserContext context, BindingOperation operation, Element e) {
325N/A if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
325N/A context.push();
325N/A context.registerNamespaces(e);
325N/A JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
325N/A
325N/A for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
325N/A Element e2 = Util.nextElement(iter);
325N/A if (e2 == null)
325N/A break;
325N/A
325N/A// if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_ADDITIONAL_SOAPHEADER_MAPPING)){
325N/A// parseAdditionalSOAPHeaderMapping(context, jaxwsBinding, e2);
325N/A// }else
325N/A if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_MIME_CONTENT)){
325N/A parseMimeContent(context, jaxwsBinding, e2);
325N/A }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.PARAMETER)){
325N/A parseParameter(context, jaxwsBinding, e2);
325N/A }else{
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e2.getTagName(),
325N/A e2.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A operation.addExtension(jaxwsBinding);
325N/A context.pop();
325N/A// context.fireDoneParsingEntity(
325N/A// JAXWSBindingsConstants.JAXWS_BINDINGS,
325N/A// jaxwsBinding);
325N/A return true;
325N/A }else {
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e.getTagName(),
325N/A e.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A
325N/A private boolean handlePortTypeOperation(TWSDLParserContext context, Operation parent, Element e) {
325N/A context.push();
325N/A context.registerNamespaces(e);
325N/A JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
325N/A
325N/A for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
325N/A Element e2 = Util.nextElement(iter);
325N/A if (e2 == null)
325N/A break;
325N/A
325N/A if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_WRAPPER_STYLE)){
325N/A parseWrapperStyle(context, jaxwsBinding, e2);
325N/A }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_ASYNC_MAPPING)){
325N/A parseAsynMapping(context, jaxwsBinding, e2);
325N/A }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.METHOD)){
325N/A parseMethod(context, jaxwsBinding, e2);
325N/A if((jaxwsBinding.getMethodName() != null) && (jaxwsBinding.getMethodName().getJavaDoc() != null)){
325N/A parent.setDocumentation(new Documentation(jaxwsBinding.getMethodName().getJavaDoc()));
325N/A }
325N/A }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.PARAMETER)){
325N/A parseParameter(context, jaxwsBinding, e2);
325N/A }else{
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e2.getTagName(),
325N/A e2.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A parent.addExtension(jaxwsBinding);
325N/A context.pop();
325N/A// context.fireDoneParsingEntity(
325N/A// JAXWSBindingsConstants.JAXWS_BINDINGS,
325N/A// jaxwsBinding);
325N/A return true;
325N/A }
325N/A
325N/A public boolean handleBindingExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
325N/A if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
325N/A context.push();
325N/A context.registerNamespaces(e);
325N/A JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
325N/A
325N/A for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
325N/A Element e2 = Util.nextElement(iter);
325N/A if (e2 == null)
325N/A break;
325N/A
325N/A// if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_ADDITIONAL_SOAPHEADER_MAPPING)){
325N/A// parseAdditionalSOAPHeaderMapping(context, jaxwsBinding, e2);
325N/A// }else
325N/A if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_MIME_CONTENT)){
325N/A parseMimeContent(context, jaxwsBinding, e2);
325N/A }else{
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e2.getTagName(),
325N/A e2.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A parent.addExtension(jaxwsBinding);
325N/A context.pop();
325N/A// context.fireDoneParsingEntity(
325N/A// JAXWSBindingsConstants.JAXWS_BINDINGS,
325N/A// jaxwsBinding);
325N/A return true;
325N/A }else {
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e.getTagName(),
325N/A e.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A
325N/A /* (non-Javadoc)
325N/A * @see ExtensionHandlerBase#handleFaultExtension(TWSDLParserContextImpl, TWSDLExtensible, org.w3c.dom.Element)
325N/A */
325N/A public boolean handleFaultExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
325N/A if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
325N/A context.push();
325N/A context.registerNamespaces(e);
325N/A JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
325N/A
325N/A for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
325N/A Element e2 = Util.nextElement(iter);
325N/A if (e2 == null)
325N/A break;
325N/A if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.CLASS)){
325N/A parseClass(context, jaxwsBinding, e2);
325N/A if((jaxwsBinding.getClassName() != null) && (jaxwsBinding.getClassName().getJavaDoc() != null)){
325N/A ((Fault)parent).setDocumentation(new Documentation(jaxwsBinding.getClassName().getJavaDoc()));
325N/A }
325N/A }else{
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e2.getTagName(),
325N/A e2.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A parent.addExtension(jaxwsBinding);
325N/A context.pop();
325N/A// context.fireDoneParsingEntity(
325N/A// JAXWSBindingsConstants.JAXWS_BINDINGS,
325N/A// jaxwsBinding);
325N/A return true;
325N/A }else {
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e.getTagName(),
325N/A e.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A
325N/A public boolean handleServiceExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
325N/A if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
325N/A context.push();
325N/A context.registerNamespaces(e);
325N/A JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
325N/A
325N/A for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
325N/A Element e2 = Util.nextElement(iter);
325N/A if (e2 == null)
325N/A break;
325N/A if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.CLASS)){
325N/A parseClass(context, jaxwsBinding, e2);
325N/A if((jaxwsBinding.getClassName() != null) && (jaxwsBinding.getClassName().getJavaDoc() != null)){
325N/A ((Service)parent).setDocumentation(new Documentation(jaxwsBinding.getClassName().getJavaDoc()));
325N/A }
325N/A }else{
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e2.getTagName(),
325N/A e2.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A parent.addExtension(jaxwsBinding);
325N/A context.pop();
325N/A// context.fireDoneParsingEntity(
325N/A// JAXWSBindingsConstants.JAXWS_BINDINGS,
325N/A// jaxwsBinding);
325N/A return true;
325N/A }else {
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e.getTagName(),
325N/A e.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A
325N/A public boolean handlePortExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
325N/A if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
325N/A context.push();
325N/A context.registerNamespaces(e);
325N/A JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
325N/A
325N/A for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
325N/A Element e2 = Util.nextElement(iter);
325N/A if (e2 == null)
325N/A break;
325N/A
325N/A if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.PROVIDER)){
325N/A parseProvider(context, jaxwsBinding, e2);
325N/A }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.METHOD)){
325N/A parseMethod(context, jaxwsBinding, e2);
325N/A if((jaxwsBinding.getMethodName() != null) && (jaxwsBinding.getMethodName().getJavaDoc() != null)){
325N/A ((Port)parent).setDocumentation(new Documentation(jaxwsBinding.getMethodName().getJavaDoc()));
325N/A }
325N/A }else{
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e2.getTagName(),
325N/A e2.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A parent.addExtension(jaxwsBinding);
325N/A context.pop();
325N/A// context.fireDoneParsingEntity(
325N/A// JAXWSBindingsConstants.JAXWS_BINDINGS,
325N/A// jaxwsBinding);
325N/A return true;
325N/A }else {
325N/A Util.fail(
325N/A "parsing.invalidExtensionElement",
325N/A e.getTagName(),
325N/A e.getNamespaceURI());
325N/A return false;
325N/A }
325N/A }
325N/A
325N/A private String getJavaDoc(Element e){
325N/A for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
325N/A Element e2 = Util.nextElement(iter);
325N/A if (e2 == null)
325N/A break;
325N/A if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.JAVADOC)){
325N/A return XmlUtil.getTextForNode(e2);
325N/A }
325N/A }
325N/A return null;
325N/A }
325N/A}