src/share/jaxws_classes/com/sun/tools/internal/ws/wsdl/parser/JAXWSBindingExtensionHandler.java

Wed, 27 Apr 2016 01:27:09 +0800

author
aoqi
date
Wed, 27 Apr 2016 01:27:09 +0800
changeset 0
373ffda63c9a
child 637
9c07ef4934dd
permissions
-rw-r--r--

Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/jaxws/
changeset: 657:d47a47f961ee
tag: jdk8u25-b17

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation. Oracle designates this
aoqi@0 8 * particular file as subject to the "Classpath" exception as provided
aoqi@0 9 * by Oracle in the LICENSE file that accompanied this code.
aoqi@0 10 *
aoqi@0 11 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 14 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 15 * accompanied this code).
aoqi@0 16 *
aoqi@0 17 * You should have received a copy of the GNU General Public License version
aoqi@0 18 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 20 *
aoqi@0 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 22 * or visit www.oracle.com if you need additional information or have any
aoqi@0 23 * questions.
aoqi@0 24 */
aoqi@0 25
aoqi@0 26 package com.sun.tools.internal.ws.wsdl.parser;
aoqi@0 27
aoqi@0 28 import com.sun.tools.internal.ws.api.wsdl.TWSDLExtensible;
aoqi@0 29 import com.sun.tools.internal.ws.api.wsdl.TWSDLExtension;
aoqi@0 30 import com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext;
aoqi@0 31 import com.sun.tools.internal.ws.util.xml.XmlUtil;
aoqi@0 32 import com.sun.tools.internal.ws.wsdl.document.*;
aoqi@0 33 import com.sun.tools.internal.ws.wsdl.document.jaxws.CustomName;
aoqi@0 34 import com.sun.tools.internal.ws.wsdl.document.jaxws.JAXWSBinding;
aoqi@0 35 import com.sun.tools.internal.ws.wsdl.document.jaxws.JAXWSBindingsConstants;
aoqi@0 36 import com.sun.tools.internal.ws.wsdl.document.jaxws.Parameter;
aoqi@0 37 import org.w3c.dom.Element;
aoqi@0 38 import org.w3c.dom.Node;
aoqi@0 39 import org.w3c.dom.NodeList;
aoqi@0 40
aoqi@0 41 import javax.xml.namespace.NamespaceContext;
aoqi@0 42 import javax.xml.namespace.QName;
aoqi@0 43 import javax.xml.xpath.*;
aoqi@0 44 import java.util.Iterator;
aoqi@0 45 import java.util.Map;
aoqi@0 46
aoqi@0 47
aoqi@0 48 /**
aoqi@0 49 * @author Vivek Pandey
aoqi@0 50 *
aoqi@0 51 * jaxws:bindings exension handler.
aoqi@0 52 *
aoqi@0 53 */
aoqi@0 54 public class JAXWSBindingExtensionHandler extends AbstractExtensionHandler {
aoqi@0 55
aoqi@0 56 // xml security enabled always, xpath used for parsing "part" attribute
aoqi@0 57 private static final ContextClassloaderLocal<XPathFactory> xpf = new ContextClassloaderLocal<XPathFactory>() {
aoqi@0 58 @Override
aoqi@0 59 protected XPathFactory initialValue() throws Exception {
aoqi@0 60 return XPathFactory.newInstance();
aoqi@0 61 }
aoqi@0 62 };
aoqi@0 63
aoqi@0 64 private final XPath xpath = xpf.get().newXPath();
aoqi@0 65
aoqi@0 66 public JAXWSBindingExtensionHandler(Map<String, AbstractExtensionHandler> extensionHandlerMap) {
aoqi@0 67 super(extensionHandlerMap);
aoqi@0 68 }
aoqi@0 69
aoqi@0 70 /* (non-Javadoc)
aoqi@0 71 * @see AbstractExtensionHandler#getNamespaceURI()
aoqi@0 72 */
aoqi@0 73 @Override
aoqi@0 74 public String getNamespaceURI() {
aoqi@0 75 return JAXWSBindingsConstants.NS_JAXWS_BINDINGS;
aoqi@0 76 }
aoqi@0 77
aoqi@0 78 /**
aoqi@0 79 * @param context
aoqi@0 80 * @param parent
aoqi@0 81 * @param e
aoqi@0 82 */
aoqi@0 83 private boolean parseGlobalJAXWSBindings(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
aoqi@0 84 context.push();
aoqi@0 85 context.registerNamespaces(e);
aoqi@0 86
aoqi@0 87 JAXWSBinding jaxwsBinding = getJAXWSExtension(parent);
aoqi@0 88 if(jaxwsBinding == null) {
aoqi@0 89 jaxwsBinding = new JAXWSBinding(context.getLocation(e));
aoqi@0 90 }
aoqi@0 91 String attr = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.WSDL_LOCATION_ATTR);
aoqi@0 92 if (attr != null) {
aoqi@0 93 jaxwsBinding.setWsdlLocation(attr);
aoqi@0 94 }
aoqi@0 95
aoqi@0 96 attr = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.NODE_ATTR);
aoqi@0 97 if (attr != null) {
aoqi@0 98 jaxwsBinding.setNode(attr);
aoqi@0 99 }
aoqi@0 100
aoqi@0 101 attr = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.VERSION_ATTR);
aoqi@0 102 if (attr != null) {
aoqi@0 103 jaxwsBinding.setVersion(attr);
aoqi@0 104 }
aoqi@0 105
aoqi@0 106 for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
aoqi@0 107 Element e2 = Util.nextElement(iter);
aoqi@0 108 if (e2 == null) {
aoqi@0 109 break;
aoqi@0 110 }
aoqi@0 111
aoqi@0 112 if (XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.PACKAGE)) {
aoqi@0 113 parsePackage(context, jaxwsBinding, e2);
aoqi@0 114 if ((jaxwsBinding.getJaxwsPackage() != null) && (jaxwsBinding.getJaxwsPackage().getJavaDoc() != null)) {
aoqi@0 115 ((Definitions) parent).setDocumentation(new Documentation(jaxwsBinding.getJaxwsPackage().getJavaDoc()));
aoqi@0 116 }
aoqi@0 117 } else if (XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_WRAPPER_STYLE)) {
aoqi@0 118 parseWrapperStyle(context, jaxwsBinding, e2);
aoqi@0 119 } else if (XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_ASYNC_MAPPING)) {
aoqi@0 120 parseAsynMapping(context, jaxwsBinding, e2);
aoqi@0 121 } // else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_ADDITIONAL_SOAPHEADER_MAPPING)){
aoqi@0 122 // parseAdditionalSOAPHeaderMapping(context, jaxwsBinding, e2);
aoqi@0 123 // }
aoqi@0 124 else if (XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_MIME_CONTENT)) {
aoqi@0 125 parseMimeContent(context, jaxwsBinding, e2);
aoqi@0 126 } else {
aoqi@0 127 Util.fail(
aoqi@0 128 "parsing.invalidExtensionElement",
aoqi@0 129 e2.getTagName(),
aoqi@0 130 e2.getNamespaceURI());
aoqi@0 131 return false;
aoqi@0 132 }
aoqi@0 133 }
aoqi@0 134 parent.addExtension(jaxwsBinding);
aoqi@0 135 context.pop();
aoqi@0 136 // context.fireDoneParsingEntity(
aoqi@0 137 // JAXWSBindingsConstants.JAXWS_BINDINGS,
aoqi@0 138 // jaxwsBinding);
aoqi@0 139 return true;
aoqi@0 140 }
aoqi@0 141
aoqi@0 142 private static JAXWSBinding getJAXWSExtension(TWSDLExtensible extensible) {
aoqi@0 143 for (TWSDLExtension extension:extensible.extensions()) {
aoqi@0 144 if (extension.getClass().equals(JAXWSBinding.class)) {
aoqi@0 145 return (JAXWSBinding)extension;
aoqi@0 146 }
aoqi@0 147 }
aoqi@0 148
aoqi@0 149 return null;
aoqi@0 150 }
aoqi@0 151
aoqi@0 152 /**
aoqi@0 153 * @param context
aoqi@0 154 * @param parent
aoqi@0 155 * @param e
aoqi@0 156 */
aoqi@0 157 private void parseProvider(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding parent, Element e) {
aoqi@0 158 String val = e.getTextContent();
aoqi@0 159 if (val == null) {
aoqi@0 160 return;
aoqi@0 161 }
aoqi@0 162 if (val.equals("false") || val.equals("0")) {
aoqi@0 163 ((JAXWSBinding)parent).setProvider(Boolean.FALSE);
aoqi@0 164 } else if(val.equals("true") || val.equals("1")) {
aoqi@0 165 ((JAXWSBinding)parent).setProvider(Boolean.TRUE);
aoqi@0 166 }
aoqi@0 167
aoqi@0 168 }
aoqi@0 169
aoqi@0 170 /**
aoqi@0 171 * @param context
aoqi@0 172 * @param parent
aoqi@0 173 * @param e
aoqi@0 174 */
aoqi@0 175 private void parsePackage(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding parent, Element e) {
aoqi@0 176 //System.out.println("In handlePackageExtension: " + e.getNodeName());
aoqi@0 177 String packageName = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.NAME_ATTR);
aoqi@0 178 JAXWSBinding binding = (JAXWSBinding)parent;
aoqi@0 179 binding.setJaxwsPackage(new CustomName(packageName, getJavaDoc(e)));
aoqi@0 180 }
aoqi@0 181
aoqi@0 182 /**
aoqi@0 183 * @param context
aoqi@0 184 * @param parent
aoqi@0 185 * @param e
aoqi@0 186 */
aoqi@0 187 private void parseWrapperStyle(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding parent, Element e) {
aoqi@0 188 //System.out.println("In handleWrapperStyleExtension: " + e.getNodeName());
aoqi@0 189 String val = e.getTextContent();
aoqi@0 190 if (val == null) {
aoqi@0 191 return;
aoqi@0 192 }
aoqi@0 193 if (val.equals("false") || val.equals("0")) {
aoqi@0 194 ((JAXWSBinding) parent).setEnableWrapperStyle(Boolean.FALSE);
aoqi@0 195 } else if (val.equals("true") || val.equals("1")) {
aoqi@0 196 ((JAXWSBinding) parent).setEnableWrapperStyle(Boolean.TRUE);
aoqi@0 197 }
aoqi@0 198 }
aoqi@0 199
aoqi@0 200 /**
aoqi@0 201 * @param context
aoqi@0 202 * @param parent
aoqi@0 203 * @param e
aoqi@0 204 */
aoqi@0 205 // private void parseAdditionalSOAPHeaderMapping(TWSDLParserContextImpl context, TWSDLExtensible parent, Element e) {
aoqi@0 206 // //System.out.println("In handleAdditionalSOAPHeaderExtension: " + e.getNodeName());
aoqi@0 207 // String val = e.getTextContent();
aoqi@0 208 // if(val == null)
aoqi@0 209 // return;
aoqi@0 210 // if(val.equals("false") || val.equals("0")){
aoqi@0 211 // ((JAXWSBinding)parent).setEnableAdditionalHeaderMapping(Boolean.FALSE);
aoqi@0 212 // }else if(val.equals("true") || val.equals("1")){
aoqi@0 213 // ((JAXWSBinding)parent).setEnableAdditionalHeaderMapping(Boolean.TRUE);
aoqi@0 214 // }
aoqi@0 215 // }
aoqi@0 216
aoqi@0 217 /**
aoqi@0 218 * @param context
aoqi@0 219 * @param parent
aoqi@0 220 * @param e
aoqi@0 221 */
aoqi@0 222 private void parseAsynMapping(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding parent, Element e) {
aoqi@0 223 //System.out.println("In handleAsynMappingExtension: " + e.getNodeName());
aoqi@0 224 String val = e.getTextContent();
aoqi@0 225 if (val == null) {
aoqi@0 226 return;
aoqi@0 227 }
aoqi@0 228 if (val.equals("false") || val.equals("0")) {
aoqi@0 229 ((JAXWSBinding) parent).setEnableAsyncMapping(Boolean.FALSE);
aoqi@0 230 } else if (val.equals("true") || val.equals("1")) {
aoqi@0 231 ((JAXWSBinding) parent).setEnableAsyncMapping(Boolean.TRUE);
aoqi@0 232 }
aoqi@0 233 }
aoqi@0 234
aoqi@0 235 /**
aoqi@0 236 * @param context
aoqi@0 237 * @param parent
aoqi@0 238 * @param e
aoqi@0 239 */
aoqi@0 240 private void parseMimeContent(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding parent, Element e) {
aoqi@0 241 //System.out.println("In handleMimeContentExtension: " + e.getNodeName());
aoqi@0 242 String val = e.getTextContent();
aoqi@0 243 if (val == null) {
aoqi@0 244 return;
aoqi@0 245 }
aoqi@0 246 if (val.equals("false") || val.equals("0")) {
aoqi@0 247 ((JAXWSBinding) parent).setEnableMimeContentMapping(Boolean.FALSE);
aoqi@0 248 } else if (val.equals("true") || val.equals("1")) {
aoqi@0 249 ((JAXWSBinding) parent).setEnableMimeContentMapping(Boolean.TRUE);
aoqi@0 250 }
aoqi@0 251 }
aoqi@0 252
aoqi@0 253 /**
aoqi@0 254 * @param context
aoqi@0 255 * @param jaxwsBinding
aoqi@0 256 * @param e
aoqi@0 257 */
aoqi@0 258 private void parseMethod(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding jaxwsBinding, Element e) {
aoqi@0 259 String methodName = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.NAME_ATTR);
aoqi@0 260 String javaDoc = getJavaDoc(e);
aoqi@0 261 CustomName name = new CustomName(methodName, javaDoc);
aoqi@0 262 jaxwsBinding.setMethodName(name);
aoqi@0 263 }
aoqi@0 264
aoqi@0 265 /**
aoqi@0 266 * @param context
aoqi@0 267 * @param jaxwsBinding
aoqi@0 268 * @param e
aoqi@0 269 */
aoqi@0 270 private void parseParameter(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding jaxwsBinding, Element e) {
aoqi@0 271 String part = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.PART_ATTR);
aoqi@0 272 Element msgPartElm = evaluateXPathNode(e.getOwnerDocument(), part, new NamespaceContextImpl(e));
aoqi@0 273 Node msgElm = msgPartElm.getParentNode();
aoqi@0 274 //MessagePart msgPart = new MessagePart();
aoqi@0 275
aoqi@0 276 String partName = XmlUtil.getAttributeOrNull(msgPartElm, "name");
aoqi@0 277 String msgName = XmlUtil.getAttributeOrNull((Element)msgElm, "name");
aoqi@0 278 if ((partName == null) || (msgName == null)) {
aoqi@0 279 return;
aoqi@0 280 }
aoqi@0 281
aoqi@0 282 String element = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.ELEMENT_ATTR);
aoqi@0 283 String name = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.NAME_ATTR);
aoqi@0 284
aoqi@0 285 QName elementName = null;
aoqi@0 286 if(element != null){
aoqi@0 287 String uri = e.lookupNamespaceURI(XmlUtil.getPrefix(element));
aoqi@0 288 elementName = (uri == null)?null:new QName(uri, XmlUtil.getLocalPart(element));
aoqi@0 289 }
aoqi@0 290
aoqi@0 291 jaxwsBinding.addParameter(new Parameter(msgName, partName, elementName, name));
aoqi@0 292 }
aoqi@0 293
aoqi@0 294 private Element evaluateXPathNode(Node target, String expression, NamespaceContext namespaceContext) {
aoqi@0 295 NodeList nlst;
aoqi@0 296 try {
aoqi@0 297 xpath.setNamespaceContext(namespaceContext);
aoqi@0 298 nlst = (NodeList)xpath.evaluate(expression, target, XPathConstants.NODESET);
aoqi@0 299 } catch (XPathExpressionException e) {
aoqi@0 300 Util.fail("internalizer.XPathEvaluationError", e.getMessage());
aoqi@0 301 return null; // abort processing this <jaxb:bindings>
aoqi@0 302 }
aoqi@0 303
aoqi@0 304 if( nlst.getLength()==0 ) {
aoqi@0 305 Util.fail("internalizer.XPathEvaluatesToNoTarget", new Object[]{expression});
aoqi@0 306 return null; // abort
aoqi@0 307 }
aoqi@0 308
aoqi@0 309 if( nlst.getLength()!=1 ) {
aoqi@0 310 Util.fail("internalizer.XPathEvaulatesToTooManyTargets", new Object[]{expression, nlst.getLength()});
aoqi@0 311 return null; // abort
aoqi@0 312 }
aoqi@0 313
aoqi@0 314 Node rnode = nlst.item(0);
aoqi@0 315 if(!(rnode instanceof Element )) {
aoqi@0 316 Util.fail("internalizer.XPathEvaluatesToNonElement", new Object[]{expression});
aoqi@0 317 return null; // abort
aoqi@0 318 }
aoqi@0 319 return (Element)rnode;
aoqi@0 320 }
aoqi@0 321
aoqi@0 322 /**
aoqi@0 323 * @param context
aoqi@0 324 * @param jaxwsBinding
aoqi@0 325 * @param e
aoqi@0 326 */
aoqi@0 327 private void parseClass(com.sun.tools.internal.ws.api.wsdl.TWSDLParserContext context, JAXWSBinding jaxwsBinding, Element e) {
aoqi@0 328 String className = XmlUtil.getAttributeOrNull(e, JAXWSBindingsConstants.NAME_ATTR);
aoqi@0 329 String javaDoc = getJavaDoc(e);
aoqi@0 330 jaxwsBinding.setClassName(new CustomName(className, javaDoc));
aoqi@0 331 }
aoqi@0 332
aoqi@0 333
aoqi@0 334 @Override
aoqi@0 335 public boolean handleDefinitionsExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
aoqi@0 336 return parseGlobalJAXWSBindings(context, parent, e);
aoqi@0 337 }
aoqi@0 338
aoqi@0 339 @Override
aoqi@0 340 public boolean handlePortTypeExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
aoqi@0 341 if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
aoqi@0 342 context.push();
aoqi@0 343 context.registerNamespaces(e);
aoqi@0 344 JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
aoqi@0 345
aoqi@0 346 for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
aoqi@0 347 Element e2 = Util.nextElement(iter);
aoqi@0 348 if (e2 == null) {
aoqi@0 349 break;
aoqi@0 350 }
aoqi@0 351
aoqi@0 352 if (XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_WRAPPER_STYLE)) {
aoqi@0 353 parseWrapperStyle(context, jaxwsBinding, e2);
aoqi@0 354 } else if (XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_ASYNC_MAPPING)) {
aoqi@0 355 parseAsynMapping(context, jaxwsBinding, e2);
aoqi@0 356 } else if (XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.CLASS)) {
aoqi@0 357 parseClass(context, jaxwsBinding, e2);
aoqi@0 358 if ((jaxwsBinding.getClassName() != null) && (jaxwsBinding.getClassName().getJavaDoc() != null) && (parent instanceof PortType)) {
aoqi@0 359 ((PortType) parent).setDocumentation(new Documentation(jaxwsBinding.getClassName().getJavaDoc()));
aoqi@0 360 }
aoqi@0 361 } else {
aoqi@0 362 Util.fail(
aoqi@0 363 "parsing.invalidExtensionElement",
aoqi@0 364 e2.getTagName(),
aoqi@0 365 e2.getNamespaceURI());
aoqi@0 366 return false;
aoqi@0 367 }
aoqi@0 368 }
aoqi@0 369 parent.addExtension(jaxwsBinding);
aoqi@0 370 context.pop();
aoqi@0 371 // context.fireDoneParsingEntity(
aoqi@0 372 // JAXWSBindingsConstants.JAXWS_BINDINGS,
aoqi@0 373 // jaxwsBinding);
aoqi@0 374 return true;
aoqi@0 375 }else {
aoqi@0 376 Util.fail(
aoqi@0 377 "parsing.invalidExtensionElement",
aoqi@0 378 e.getTagName(),
aoqi@0 379 e.getNamespaceURI());
aoqi@0 380 return false;
aoqi@0 381 }
aoqi@0 382 }
aoqi@0 383
aoqi@0 384 @Override
aoqi@0 385 public boolean handleOperationExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
aoqi@0 386 if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
aoqi@0 387 if(parent instanceof Operation){
aoqi@0 388 return handlePortTypeOperation(context, (Operation)parent, e);
aoqi@0 389 }else if(parent instanceof BindingOperation){
aoqi@0 390 return handleBindingOperation(context, (BindingOperation)parent, e);
aoqi@0 391 }
aoqi@0 392 }else {
aoqi@0 393 Util.fail(
aoqi@0 394 "parsing.invalidExtensionElement",
aoqi@0 395 e.getTagName(),
aoqi@0 396 e.getNamespaceURI());
aoqi@0 397 return false;
aoqi@0 398 }
aoqi@0 399 return false;
aoqi@0 400 }
aoqi@0 401
aoqi@0 402 private boolean handleBindingOperation(TWSDLParserContext context, BindingOperation operation, Element e) {
aoqi@0 403 if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
aoqi@0 404 context.push();
aoqi@0 405 context.registerNamespaces(e);
aoqi@0 406 JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
aoqi@0 407
aoqi@0 408 for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
aoqi@0 409 Element e2 = Util.nextElement(iter);
aoqi@0 410 if (e2 == null) {
aoqi@0 411 break;
aoqi@0 412 }
aoqi@0 413
aoqi@0 414 // if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_ADDITIONAL_SOAPHEADER_MAPPING)){
aoqi@0 415 // parseAdditionalSOAPHeaderMapping(context, jaxwsBinding, e2);
aoqi@0 416 // }else
aoqi@0 417 if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_MIME_CONTENT)){
aoqi@0 418 parseMimeContent(context, jaxwsBinding, e2);
aoqi@0 419 }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.PARAMETER)){
aoqi@0 420 parseParameter(context, jaxwsBinding, e2);
aoqi@0 421 }else{
aoqi@0 422 Util.fail(
aoqi@0 423 "parsing.invalidExtensionElement",
aoqi@0 424 e2.getTagName(),
aoqi@0 425 e2.getNamespaceURI());
aoqi@0 426 return false;
aoqi@0 427 }
aoqi@0 428 }
aoqi@0 429 operation.addExtension(jaxwsBinding);
aoqi@0 430 context.pop();
aoqi@0 431 // context.fireDoneParsingEntity(
aoqi@0 432 // JAXWSBindingsConstants.JAXWS_BINDINGS,
aoqi@0 433 // jaxwsBinding);
aoqi@0 434 return true;
aoqi@0 435 }else {
aoqi@0 436 Util.fail(
aoqi@0 437 "parsing.invalidExtensionElement",
aoqi@0 438 e.getTagName(),
aoqi@0 439 e.getNamespaceURI());
aoqi@0 440 return false;
aoqi@0 441 }
aoqi@0 442 }
aoqi@0 443
aoqi@0 444 private boolean handlePortTypeOperation(TWSDLParserContext context, Operation parent, Element e) {
aoqi@0 445 context.push();
aoqi@0 446 context.registerNamespaces(e);
aoqi@0 447 JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
aoqi@0 448
aoqi@0 449 for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
aoqi@0 450 Element e2 = Util.nextElement(iter);
aoqi@0 451 if (e2 == null) {
aoqi@0 452 break;
aoqi@0 453 }
aoqi@0 454
aoqi@0 455 if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_WRAPPER_STYLE)){
aoqi@0 456 parseWrapperStyle(context, jaxwsBinding, e2);
aoqi@0 457 }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_ASYNC_MAPPING)){
aoqi@0 458 parseAsynMapping(context, jaxwsBinding, e2);
aoqi@0 459 }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.METHOD)){
aoqi@0 460 parseMethod(context, jaxwsBinding, e2);
aoqi@0 461 if((jaxwsBinding.getMethodName() != null) && (jaxwsBinding.getMethodName().getJavaDoc() != null)){
aoqi@0 462 parent.setDocumentation(new Documentation(jaxwsBinding.getMethodName().getJavaDoc()));
aoqi@0 463 }
aoqi@0 464 }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.PARAMETER)){
aoqi@0 465 parseParameter(context, jaxwsBinding, e2);
aoqi@0 466 }else{
aoqi@0 467 Util.fail(
aoqi@0 468 "parsing.invalidExtensionElement",
aoqi@0 469 e2.getTagName(),
aoqi@0 470 e2.getNamespaceURI());
aoqi@0 471 return false;
aoqi@0 472 }
aoqi@0 473 }
aoqi@0 474 parent.addExtension(jaxwsBinding);
aoqi@0 475 context.pop();
aoqi@0 476 // context.fireDoneParsingEntity(
aoqi@0 477 // JAXWSBindingsConstants.JAXWS_BINDINGS,
aoqi@0 478 // jaxwsBinding);
aoqi@0 479 return true;
aoqi@0 480 }
aoqi@0 481
aoqi@0 482 @Override
aoqi@0 483 public boolean handleBindingExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
aoqi@0 484 if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
aoqi@0 485 context.push();
aoqi@0 486 context.registerNamespaces(e);
aoqi@0 487 JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
aoqi@0 488
aoqi@0 489 for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
aoqi@0 490 Element e2 = Util.nextElement(iter);
aoqi@0 491 if (e2 == null) {
aoqi@0 492 break;
aoqi@0 493 }
aoqi@0 494
aoqi@0 495 // if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_ADDITIONAL_SOAPHEADER_MAPPING)){
aoqi@0 496 // parseAdditionalSOAPHeaderMapping(context, jaxwsBinding, e2);
aoqi@0 497 // }else
aoqi@0 498 if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.ENABLE_MIME_CONTENT)){
aoqi@0 499 parseMimeContent(context, jaxwsBinding, e2);
aoqi@0 500 }else{
aoqi@0 501 Util.fail(
aoqi@0 502 "parsing.invalidExtensionElement",
aoqi@0 503 e2.getTagName(),
aoqi@0 504 e2.getNamespaceURI());
aoqi@0 505 return false;
aoqi@0 506 }
aoqi@0 507 }
aoqi@0 508 parent.addExtension(jaxwsBinding);
aoqi@0 509 context.pop();
aoqi@0 510 // context.fireDoneParsingEntity(
aoqi@0 511 // JAXWSBindingsConstants.JAXWS_BINDINGS,
aoqi@0 512 // jaxwsBinding);
aoqi@0 513 return true;
aoqi@0 514 }else {
aoqi@0 515 Util.fail(
aoqi@0 516 "parsing.invalidExtensionElement",
aoqi@0 517 e.getTagName(),
aoqi@0 518 e.getNamespaceURI());
aoqi@0 519 return false;
aoqi@0 520 }
aoqi@0 521 }
aoqi@0 522
aoqi@0 523 /* (non-Javadoc)
aoqi@0 524 * @see ExtensionHandlerBase#handleFaultExtension(TWSDLParserContextImpl, TWSDLExtensible, org.w3c.dom.Element)
aoqi@0 525 */
aoqi@0 526 @Override
aoqi@0 527 public boolean handleFaultExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
aoqi@0 528 if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
aoqi@0 529 context.push();
aoqi@0 530 context.registerNamespaces(e);
aoqi@0 531 JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
aoqi@0 532
aoqi@0 533 for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
aoqi@0 534 Element e2 = Util.nextElement(iter);
aoqi@0 535 if (e2 == null) {
aoqi@0 536 break;
aoqi@0 537 }
aoqi@0 538 if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.CLASS)){
aoqi@0 539 parseClass(context, jaxwsBinding, e2);
aoqi@0 540 if((jaxwsBinding.getClassName() != null) && (jaxwsBinding.getClassName().getJavaDoc() != null)){
aoqi@0 541 ((Fault)parent).setDocumentation(new Documentation(jaxwsBinding.getClassName().getJavaDoc()));
aoqi@0 542 }
aoqi@0 543 }else{
aoqi@0 544 Util.fail(
aoqi@0 545 "parsing.invalidExtensionElement",
aoqi@0 546 e2.getTagName(),
aoqi@0 547 e2.getNamespaceURI());
aoqi@0 548 return false;
aoqi@0 549 }
aoqi@0 550 }
aoqi@0 551 parent.addExtension(jaxwsBinding);
aoqi@0 552 context.pop();
aoqi@0 553 // context.fireDoneParsingEntity(
aoqi@0 554 // JAXWSBindingsConstants.JAXWS_BINDINGS,
aoqi@0 555 // jaxwsBinding);
aoqi@0 556 return true;
aoqi@0 557 }else {
aoqi@0 558 Util.fail(
aoqi@0 559 "parsing.invalidExtensionElement",
aoqi@0 560 e.getTagName(),
aoqi@0 561 e.getNamespaceURI());
aoqi@0 562 return false;
aoqi@0 563 }
aoqi@0 564 }
aoqi@0 565
aoqi@0 566 @Override
aoqi@0 567 public boolean handleServiceExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
aoqi@0 568 if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
aoqi@0 569 context.push();
aoqi@0 570 context.registerNamespaces(e);
aoqi@0 571 JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
aoqi@0 572
aoqi@0 573 for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
aoqi@0 574 Element e2 = Util.nextElement(iter);
aoqi@0 575 if (e2 == null) {
aoqi@0 576 break;
aoqi@0 577 }
aoqi@0 578 if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.CLASS)){
aoqi@0 579 parseClass(context, jaxwsBinding, e2);
aoqi@0 580 if((jaxwsBinding.getClassName() != null) && (jaxwsBinding.getClassName().getJavaDoc() != null)){
aoqi@0 581 ((Service)parent).setDocumentation(new Documentation(jaxwsBinding.getClassName().getJavaDoc()));
aoqi@0 582 }
aoqi@0 583 }else{
aoqi@0 584 Util.fail(
aoqi@0 585 "parsing.invalidExtensionElement",
aoqi@0 586 e2.getTagName(),
aoqi@0 587 e2.getNamespaceURI());
aoqi@0 588 return false;
aoqi@0 589 }
aoqi@0 590 }
aoqi@0 591 parent.addExtension(jaxwsBinding);
aoqi@0 592 context.pop();
aoqi@0 593 // context.fireDoneParsingEntity(
aoqi@0 594 // JAXWSBindingsConstants.JAXWS_BINDINGS,
aoqi@0 595 // jaxwsBinding);
aoqi@0 596 return true;
aoqi@0 597 }else {
aoqi@0 598 Util.fail(
aoqi@0 599 "parsing.invalidExtensionElement",
aoqi@0 600 e.getTagName(),
aoqi@0 601 e.getNamespaceURI());
aoqi@0 602 return false;
aoqi@0 603 }
aoqi@0 604 }
aoqi@0 605
aoqi@0 606 @Override
aoqi@0 607 public boolean handlePortExtension(TWSDLParserContext context, TWSDLExtensible parent, Element e) {
aoqi@0 608 if(XmlUtil.matchesTagNS(e, JAXWSBindingsConstants.JAXWS_BINDINGS)){
aoqi@0 609 context.push();
aoqi@0 610 context.registerNamespaces(e);
aoqi@0 611 JAXWSBinding jaxwsBinding = new JAXWSBinding(context.getLocation(e));
aoqi@0 612
aoqi@0 613 for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
aoqi@0 614 Element e2 = Util.nextElement(iter);
aoqi@0 615 if (e2 == null) {
aoqi@0 616 break;
aoqi@0 617 }
aoqi@0 618
aoqi@0 619 if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.PROVIDER)){
aoqi@0 620 parseProvider(context, jaxwsBinding, e2);
aoqi@0 621 }else if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.METHOD)){
aoqi@0 622 parseMethod(context, jaxwsBinding, e2);
aoqi@0 623 if((jaxwsBinding.getMethodName() != null) && (jaxwsBinding.getMethodName().getJavaDoc() != null)){
aoqi@0 624 ((Port)parent).setDocumentation(new Documentation(jaxwsBinding.getMethodName().getJavaDoc()));
aoqi@0 625 }
aoqi@0 626 }else{
aoqi@0 627 Util.fail(
aoqi@0 628 "parsing.invalidExtensionElement",
aoqi@0 629 e2.getTagName(),
aoqi@0 630 e2.getNamespaceURI());
aoqi@0 631 return false;
aoqi@0 632 }
aoqi@0 633 }
aoqi@0 634 parent.addExtension(jaxwsBinding);
aoqi@0 635 context.pop();
aoqi@0 636 // context.fireDoneParsingEntity(
aoqi@0 637 // JAXWSBindingsConstants.JAXWS_BINDINGS,
aoqi@0 638 // jaxwsBinding);
aoqi@0 639 return true;
aoqi@0 640 }else {
aoqi@0 641 Util.fail(
aoqi@0 642 "parsing.invalidExtensionElement",
aoqi@0 643 e.getTagName(),
aoqi@0 644 e.getNamespaceURI());
aoqi@0 645 return false;
aoqi@0 646 }
aoqi@0 647 }
aoqi@0 648
aoqi@0 649 private String getJavaDoc(Element e){
aoqi@0 650 for(Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext();){
aoqi@0 651 Element e2 = Util.nextElement(iter);
aoqi@0 652 if (e2 == null) {
aoqi@0 653 break;
aoqi@0 654 }
aoqi@0 655 if(XmlUtil.matchesTagNS(e2, JAXWSBindingsConstants.JAVADOC)){
aoqi@0 656 return XmlUtil.getTextForNode(e2);
aoqi@0 657 }
aoqi@0 658 }
aoqi@0 659 return null;
aoqi@0 660 }
aoqi@0 661 }

mercurial