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

Tue, 06 Mar 2012 16:09:35 -0800

author
ohair
date
Tue, 06 Mar 2012 16:09:35 -0800
changeset 286
f50545b5e2f1
child 368
0989ad8c0860
permissions
-rw-r--r--

7150322: Stop using drop source bundles in jaxws
Reviewed-by: darcy, ohrstrom

     1 /*
     2  * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     8  * particular file as subject to the "Classpath" exception as provided
     9  * by Oracle in the LICENSE file that accompanied this code.
    10  *
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    14  * version 2 for more details (a copy is included in the LICENSE file that
    15  * accompanied this code).
    16  *
    17  * You should have received a copy of the GNU General Public License version
    18  * 2 along with this work; if not, write to the Free Software Foundation,
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    20  *
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    22  * or visit www.oracle.com if you need additional information or have any
    23  * questions.
    24  */
    26 package com.sun.xml.internal.ws.wsdl.parser;
    28 import com.sun.xml.internal.ws.api.wsdl.parser.WSDLParserExtension;
    29 import com.sun.xml.internal.ws.api.wsdl.parser.WSDLParserExtensionContext;
    30 import com.sun.xml.internal.ws.api.model.wsdl.*;
    31 import com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil;
    32 import com.sun.xml.internal.ws.model.wsdl.WSDLPortImpl;
    33 import com.sun.xml.internal.ws.model.wsdl.WSDLBoundPortTypeImpl;
    35 import javax.xml.stream.XMLStreamReader;
    36 import javax.xml.stream.Location;
    38 import org.xml.sax.Locator;
    39 import org.xml.sax.helpers.LocatorImpl;
    41 /**
    42  * {@link WSDLParserExtension} that delegates to
    43  * multiple {@link WSDLParserExtension}s.
    44  *
    45  * <p>
    46  * This simplifies {@link RuntimeWSDLParser} since it now
    47  * only needs to work with one {@link WSDLParserExtension}.
    48  *
    49  * <p>
    50  * This class is guaranteed to return true from
    51  * all the extension callback methods.
    52  *
    53  * @author Kohsuke Kawaguchi
    54  */
    55 final class WSDLParserExtensionFacade extends WSDLParserExtension {
    56     private final WSDLParserExtension[] extensions;
    58     WSDLParserExtensionFacade(WSDLParserExtension... extensions) {
    59         assert extensions!=null;
    60         this.extensions = extensions;
    61     }
    63     public void start(WSDLParserExtensionContext context) {
    64         for (WSDLParserExtension e : extensions) {
    65             e.start(context);
    66         }
    67     }
    69     public boolean serviceElements(WSDLService service, XMLStreamReader reader) {
    70         for (WSDLParserExtension e : extensions) {
    71             if(e.serviceElements(service,reader))
    72                 return true;
    73         }
    74         XMLStreamReaderUtil.skipElement(reader);
    75         return true;
    76     }
    78     public void serviceAttributes(WSDLService service, XMLStreamReader reader) {
    79         for (WSDLParserExtension e : extensions)
    80             e.serviceAttributes(service,reader);
    81     }
    83     public boolean portElements(WSDLPort port, XMLStreamReader reader) {
    84         for (WSDLParserExtension e : extensions) {
    85             if(e.portElements(port,reader))
    86                 return true;
    87         }
    88         //extension is not understood by any WSDlParserExtension
    89         //Check if it must be understood.
    90         if(isRequiredExtension(reader)) {
    91             ((WSDLPortImpl)port).addNotUnderstoodExtension(reader.getName(),getLocator(reader));
    92         }
    93         XMLStreamReaderUtil.skipElement(reader);
    94         return true;
    95     }
    97     public boolean portTypeOperationInput(WSDLOperation op, XMLStreamReader reader) {
    98         for (WSDLParserExtension e : extensions)
    99             e.portTypeOperationInput(op,reader);
   101         return false;
   102     }
   104     public boolean portTypeOperationOutput(WSDLOperation op, XMLStreamReader reader) {
   105         for (WSDLParserExtension e : extensions)
   106             e.portTypeOperationOutput(op,reader);
   108         return false;
   109     }
   111     public boolean portTypeOperationFault(WSDLOperation op, XMLStreamReader reader) {
   112         for (WSDLParserExtension e : extensions)
   113             e.portTypeOperationFault(op,reader);
   115         return false;
   116     }
   118     public void portAttributes(WSDLPort port, XMLStreamReader reader) {
   119         for (WSDLParserExtension e : extensions)
   120             e.portAttributes(port,reader);
   121     }
   123     public boolean definitionsElements(XMLStreamReader reader){
   124         for (WSDLParserExtension e : extensions) {
   125             if (e.definitionsElements(reader)) {
   126                 return true;
   127             }
   128         }
   129         XMLStreamReaderUtil.skipElement(reader);
   130         return true;
   131     }
   133     public boolean bindingElements(WSDLBoundPortType binding, XMLStreamReader reader){
   134         for (WSDLParserExtension e : extensions) {
   135             if (e.bindingElements(binding, reader)) {
   136                 return true;
   137             }
   138         }
   139         //extension is not understood by any WSDlParserExtension
   140         //Check if it must be understood.
   141         if (isRequiredExtension(reader)) {
   142             ((WSDLBoundPortTypeImpl) binding).addNotUnderstoodExtension(
   143                     reader.getName(), getLocator(reader));
   144         }
   145         XMLStreamReaderUtil.skipElement(reader);
   146         return true;
   147     }
   149     public void bindingAttributes(WSDLBoundPortType binding, XMLStreamReader reader){
   150         for (WSDLParserExtension e : extensions) {
   151             e.bindingAttributes(binding, reader);
   152         }
   153     }
   155     public boolean portTypeElements(WSDLPortType portType, XMLStreamReader reader) {
   156         for (WSDLParserExtension e : extensions) {
   157             if (e.portTypeElements(portType, reader)) {
   158                 return true;
   159             }
   160         }
   161         XMLStreamReaderUtil.skipElement(reader);
   162         return true;
   163     }
   165     public void portTypeAttributes(WSDLPortType portType, XMLStreamReader reader) {
   166         for (WSDLParserExtension e : extensions) {
   167             e.portTypeAttributes(portType, reader);
   168         }
   169     }
   171     public boolean portTypeOperationElements(WSDLOperation operation, XMLStreamReader reader) {
   172         for (WSDLParserExtension e : extensions) {
   173             if (e.portTypeOperationElements(operation, reader)) {
   174                 return true;
   175             }
   176         }
   177         XMLStreamReaderUtil.skipElement(reader);
   178         return true;
   179     }
   181     public void portTypeOperationAttributes(WSDLOperation operation, XMLStreamReader reader) {
   182         for (WSDLParserExtension e : extensions) {
   183             e.portTypeOperationAttributes(operation, reader);
   184         }
   185     }
   187     public boolean bindingOperationElements(WSDLBoundOperation operation, XMLStreamReader reader) {
   188         for (WSDLParserExtension e : extensions) {
   189             if (e.bindingOperationElements(operation, reader)) {
   190                 return true;
   191             }
   192         }
   193         XMLStreamReaderUtil.skipElement(reader);
   194         return true;
   195     }
   197     public void bindingOperationAttributes(WSDLBoundOperation operation, XMLStreamReader reader) {
   198         for (WSDLParserExtension e : extensions) {
   199             e.bindingOperationAttributes(operation, reader);
   200         }
   201     }
   203     public boolean messageElements(WSDLMessage msg, XMLStreamReader reader) {
   204         for (WSDLParserExtension e : extensions) {
   205             if (e.messageElements(msg, reader)) {
   206                 return true;
   207             }
   208         }
   209         XMLStreamReaderUtil.skipElement(reader);
   210         return true;
   211     }
   213     public void messageAttributes(WSDLMessage msg, XMLStreamReader reader) {
   214         for (WSDLParserExtension e : extensions) {
   215             e.messageAttributes(msg, reader);
   216         }
   217     }
   219     public boolean portTypeOperationInputElements(WSDLInput input, XMLStreamReader reader) {
   220         for (WSDLParserExtension e : extensions) {
   221             if (e.portTypeOperationInputElements(input, reader)) {
   222                 return true;
   223             }
   224         }
   225         XMLStreamReaderUtil.skipElement(reader);
   226         return true;
   227     }
   229     public void portTypeOperationInputAttributes(WSDLInput input, XMLStreamReader reader) {
   230         for (WSDLParserExtension e : extensions) {
   231             e.portTypeOperationInputAttributes(input, reader);
   232         }
   233     }
   235     public boolean portTypeOperationOutputElements(WSDLOutput output, XMLStreamReader reader) {
   236         for (WSDLParserExtension e : extensions) {
   237             if (e.portTypeOperationOutputElements(output, reader)) {
   238                 return true;
   239             }
   240         }
   241         XMLStreamReaderUtil.skipElement(reader);
   242         return true;
   243     }
   245     public void portTypeOperationOutputAttributes(WSDLOutput output, XMLStreamReader reader) {
   246         for (WSDLParserExtension e : extensions) {
   247             e.portTypeOperationOutputAttributes(output, reader);
   248         }
   249     }
   251     public boolean portTypeOperationFaultElements(WSDLFault fault, XMLStreamReader reader) {
   252         for (WSDLParserExtension e : extensions) {
   253             if (e.portTypeOperationFaultElements(fault, reader)) {
   254                 return true;
   255             }
   256         }
   257         XMLStreamReaderUtil.skipElement(reader);
   258         return true;
   259     }
   261     public void portTypeOperationFaultAttributes(WSDLFault fault, XMLStreamReader reader) {
   262         for (WSDLParserExtension e : extensions) {
   263             e.portTypeOperationFaultAttributes(fault, reader);
   264         }
   265     }
   267     public boolean bindingOperationInputElements(WSDLBoundOperation operation, XMLStreamReader reader) {
   268         for (WSDLParserExtension e : extensions) {
   269             if (e.bindingOperationInputElements(operation, reader)) {
   270                 return true;
   271             }
   272         }
   273         XMLStreamReaderUtil.skipElement(reader);
   274         return true;
   275     }
   277     public void bindingOperationInputAttributes(WSDLBoundOperation operation, XMLStreamReader reader) {
   278         for (WSDLParserExtension e : extensions) {
   279             e.bindingOperationInputAttributes(operation, reader);
   280         }
   281     }
   283     public boolean bindingOperationOutputElements(WSDLBoundOperation operation, XMLStreamReader reader) {
   284         for (WSDLParserExtension e : extensions) {
   285             if (e.bindingOperationOutputElements(operation, reader)) {
   286                 return true;
   287             }
   288         }
   289         XMLStreamReaderUtil.skipElement(reader);
   290         return true;
   291     }
   293     public void bindingOperationOutputAttributes(WSDLBoundOperation operation, XMLStreamReader reader) {
   294         for (WSDLParserExtension e : extensions) {
   295             e.bindingOperationOutputAttributes(operation, reader);
   296         }
   297     }
   299     public boolean bindingOperationFaultElements(WSDLBoundFault fault, XMLStreamReader reader) {
   300         for (WSDLParserExtension e : extensions) {
   301             if (e.bindingOperationFaultElements(fault, reader)) {
   302                 return true;
   303             }
   304         }
   305         XMLStreamReaderUtil.skipElement(reader);
   306         return true;
   307     }
   309     public void bindingOperationFaultAttributes(WSDLBoundFault fault, XMLStreamReader reader) {
   310         for (WSDLParserExtension e : extensions) {
   311             e.bindingOperationFaultAttributes(fault, reader);
   312         }
   313     }
   315     public void finished(WSDLParserExtensionContext context) {
   316         for (WSDLParserExtension e : extensions) {
   317             e.finished(context);
   318         }
   319     }
   321     public void postFinished(WSDLParserExtensionContext context) {
   322         for (WSDLParserExtension e : extensions) {
   323             e.postFinished(context);
   324         }
   325     }
   326     /**
   327      *
   328      * @param reader
   329      * @return If the element has wsdl:required attribute set to true
   330      */
   332     private boolean isRequiredExtension(XMLStreamReader reader) {
   333         String required = reader.getAttributeValue(WSDLConstants.NS_WSDL, "required");
   334         if(required != null)
   335             return Boolean.parseBoolean(required);
   336         return false;
   337     }
   339     private Locator getLocator(XMLStreamReader reader) {
   340         Location location = reader.getLocation();
   341             LocatorImpl loc = new LocatorImpl();
   342             loc.setSystemId(location.getSystemId());
   343             loc.setLineNumber(location.getLineNumber());
   344         return loc;
   345     }
   347 }

mercurial