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

Fri, 04 Oct 2013 16:21:34 +0100

author
mkos
date
Fri, 04 Oct 2013 16:21:34 +0100
changeset 408
b0610cd08440
parent 368
0989ad8c0860
child 637
9c07ef4934dd
permissions
-rw-r--r--

8025054: Update JAX-WS RI integration to 2.2.9-b130926.1035
Reviewed-by: chegar

     1 /*
     2  * Copyright (c) 1997, 2013, 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.editable.*;
    31 import com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil;
    33 import javax.xml.stream.XMLStreamReader;
    34 import javax.xml.stream.Location;
    36 import org.xml.sax.Locator;
    37 import org.xml.sax.helpers.LocatorImpl;
    39 /**
    40  * {@link WSDLParserExtension} that delegates to
    41  * multiple {@link WSDLParserExtension}s.
    42  *
    43  * <p>
    44  * This simplifies {@link RuntimeWSDLParser} since it now
    45  * only needs to work with one {@link WSDLParserExtension}.
    46  *
    47  * <p>
    48  * This class is guaranteed to return true from
    49  * all the extension callback methods.
    50  *
    51  * @author Kohsuke Kawaguchi
    52  */
    53 final class WSDLParserExtensionFacade extends WSDLParserExtension {
    54     private final WSDLParserExtension[] extensions;
    56     WSDLParserExtensionFacade(WSDLParserExtension... extensions) {
    57         assert extensions!=null;
    58         this.extensions = extensions;
    59     }
    61     public void start(WSDLParserExtensionContext context) {
    62         for (WSDLParserExtension e : extensions) {
    63             e.start(context);
    64         }
    65     }
    67     public boolean serviceElements(EditableWSDLService service, XMLStreamReader reader) {
    68         for (WSDLParserExtension e : extensions) {
    69             if(e.serviceElements(service,reader))
    70                 return true;
    71         }
    72         XMLStreamReaderUtil.skipElement(reader);
    73         return true;
    74     }
    76     public void serviceAttributes(EditableWSDLService service, XMLStreamReader reader) {
    77         for (WSDLParserExtension e : extensions)
    78             e.serviceAttributes(service,reader);
    79     }
    81     public boolean portElements(EditableWSDLPort port, XMLStreamReader reader) {
    82         for (WSDLParserExtension e : extensions) {
    83             if(e.portElements(port,reader))
    84                 return true;
    85         }
    86         //extension is not understood by any WSDlParserExtension
    87         //Check if it must be understood.
    88         if(isRequiredExtension(reader)) {
    89             port.addNotUnderstoodExtension(reader.getName(),getLocator(reader));
    90         }
    91         XMLStreamReaderUtil.skipElement(reader);
    92         return true;
    93     }
    95     public boolean portTypeOperationInput(EditableWSDLOperation op, XMLStreamReader reader) {
    96         for (WSDLParserExtension e : extensions)
    97             e.portTypeOperationInput(op,reader);
    99         return false;
   100     }
   102     public boolean portTypeOperationOutput(EditableWSDLOperation op, XMLStreamReader reader) {
   103         for (WSDLParserExtension e : extensions)
   104             e.portTypeOperationOutput(op,reader);
   106         return false;
   107     }
   109     public boolean portTypeOperationFault(EditableWSDLOperation op, XMLStreamReader reader) {
   110         for (WSDLParserExtension e : extensions)
   111             e.portTypeOperationFault(op,reader);
   113         return false;
   114     }
   116     public void portAttributes(EditableWSDLPort port, XMLStreamReader reader) {
   117         for (WSDLParserExtension e : extensions)
   118             e.portAttributes(port,reader);
   119     }
   121     public boolean definitionsElements(XMLStreamReader reader){
   122         for (WSDLParserExtension e : extensions) {
   123             if (e.definitionsElements(reader)) {
   124                 return true;
   125             }
   126         }
   127         XMLStreamReaderUtil.skipElement(reader);
   128         return true;
   129     }
   131     public boolean bindingElements(EditableWSDLBoundPortType binding, XMLStreamReader reader){
   132         for (WSDLParserExtension e : extensions) {
   133             if (e.bindingElements(binding, reader)) {
   134                 return true;
   135             }
   136         }
   137         //extension is not understood by any WSDlParserExtension
   138         //Check if it must be understood.
   139         if (isRequiredExtension(reader)) {
   140             binding.addNotUnderstoodExtension(
   141                     reader.getName(), getLocator(reader));
   142         }
   143         XMLStreamReaderUtil.skipElement(reader);
   144         return true;
   145     }
   147     public void bindingAttributes(EditableWSDLBoundPortType binding, XMLStreamReader reader){
   148         for (WSDLParserExtension e : extensions) {
   149             e.bindingAttributes(binding, reader);
   150         }
   151     }
   153     public boolean portTypeElements(EditableWSDLPortType portType, XMLStreamReader reader) {
   154         for (WSDLParserExtension e : extensions) {
   155             if (e.portTypeElements(portType, reader)) {
   156                 return true;
   157             }
   158         }
   159         XMLStreamReaderUtil.skipElement(reader);
   160         return true;
   161     }
   163     public void portTypeAttributes(EditableWSDLPortType portType, XMLStreamReader reader) {
   164         for (WSDLParserExtension e : extensions) {
   165             e.portTypeAttributes(portType, reader);
   166         }
   167     }
   169     public boolean portTypeOperationElements(EditableWSDLOperation operation, XMLStreamReader reader) {
   170         for (WSDLParserExtension e : extensions) {
   171             if (e.portTypeOperationElements(operation, reader)) {
   172                 return true;
   173             }
   174         }
   175         XMLStreamReaderUtil.skipElement(reader);
   176         return true;
   177     }
   179     public void portTypeOperationAttributes(EditableWSDLOperation operation, XMLStreamReader reader) {
   180         for (WSDLParserExtension e : extensions) {
   181             e.portTypeOperationAttributes(operation, reader);
   182         }
   183     }
   185     public boolean bindingOperationElements(EditableWSDLBoundOperation operation, XMLStreamReader reader) {
   186         for (WSDLParserExtension e : extensions) {
   187             if (e.bindingOperationElements(operation, reader)) {
   188                 return true;
   189             }
   190         }
   191         XMLStreamReaderUtil.skipElement(reader);
   192         return true;
   193     }
   195     public void bindingOperationAttributes(EditableWSDLBoundOperation operation, XMLStreamReader reader) {
   196         for (WSDLParserExtension e : extensions) {
   197             e.bindingOperationAttributes(operation, reader);
   198         }
   199     }
   201     public boolean messageElements(EditableWSDLMessage msg, XMLStreamReader reader) {
   202         for (WSDLParserExtension e : extensions) {
   203             if (e.messageElements(msg, reader)) {
   204                 return true;
   205             }
   206         }
   207         XMLStreamReaderUtil.skipElement(reader);
   208         return true;
   209     }
   211     public void messageAttributes(EditableWSDLMessage msg, XMLStreamReader reader) {
   212         for (WSDLParserExtension e : extensions) {
   213             e.messageAttributes(msg, reader);
   214         }
   215     }
   217     public boolean portTypeOperationInputElements(EditableWSDLInput input, XMLStreamReader reader) {
   218         for (WSDLParserExtension e : extensions) {
   219             if (e.portTypeOperationInputElements(input, reader)) {
   220                 return true;
   221             }
   222         }
   223         XMLStreamReaderUtil.skipElement(reader);
   224         return true;
   225     }
   227     public void portTypeOperationInputAttributes(EditableWSDLInput input, XMLStreamReader reader) {
   228         for (WSDLParserExtension e : extensions) {
   229             e.portTypeOperationInputAttributes(input, reader);
   230         }
   231     }
   233     public boolean portTypeOperationOutputElements(EditableWSDLOutput output, XMLStreamReader reader) {
   234         for (WSDLParserExtension e : extensions) {
   235             if (e.portTypeOperationOutputElements(output, reader)) {
   236                 return true;
   237             }
   238         }
   239         XMLStreamReaderUtil.skipElement(reader);
   240         return true;
   241     }
   243     public void portTypeOperationOutputAttributes(EditableWSDLOutput output, XMLStreamReader reader) {
   244         for (WSDLParserExtension e : extensions) {
   245             e.portTypeOperationOutputAttributes(output, reader);
   246         }
   247     }
   249     public boolean portTypeOperationFaultElements(EditableWSDLFault fault, XMLStreamReader reader) {
   250         for (WSDLParserExtension e : extensions) {
   251             if (e.portTypeOperationFaultElements(fault, reader)) {
   252                 return true;
   253             }
   254         }
   255         XMLStreamReaderUtil.skipElement(reader);
   256         return true;
   257     }
   259     public void portTypeOperationFaultAttributes(EditableWSDLFault fault, XMLStreamReader reader) {
   260         for (WSDLParserExtension e : extensions) {
   261             e.portTypeOperationFaultAttributes(fault, reader);
   262         }
   263     }
   265     public boolean bindingOperationInputElements(EditableWSDLBoundOperation operation, XMLStreamReader reader) {
   266         for (WSDLParserExtension e : extensions) {
   267             if (e.bindingOperationInputElements(operation, reader)) {
   268                 return true;
   269             }
   270         }
   271         XMLStreamReaderUtil.skipElement(reader);
   272         return true;
   273     }
   275     public void bindingOperationInputAttributes(EditableWSDLBoundOperation operation, XMLStreamReader reader) {
   276         for (WSDLParserExtension e : extensions) {
   277             e.bindingOperationInputAttributes(operation, reader);
   278         }
   279     }
   281     public boolean bindingOperationOutputElements(EditableWSDLBoundOperation operation, XMLStreamReader reader) {
   282         for (WSDLParserExtension e : extensions) {
   283             if (e.bindingOperationOutputElements(operation, reader)) {
   284                 return true;
   285             }
   286         }
   287         XMLStreamReaderUtil.skipElement(reader);
   288         return true;
   289     }
   291     public void bindingOperationOutputAttributes(EditableWSDLBoundOperation operation, XMLStreamReader reader) {
   292         for (WSDLParserExtension e : extensions) {
   293             e.bindingOperationOutputAttributes(operation, reader);
   294         }
   295     }
   297     public boolean bindingOperationFaultElements(EditableWSDLBoundFault fault, XMLStreamReader reader) {
   298         for (WSDLParserExtension e : extensions) {
   299             if (e.bindingOperationFaultElements(fault, reader)) {
   300                 return true;
   301             }
   302         }
   303         XMLStreamReaderUtil.skipElement(reader);
   304         return true;
   305     }
   307     public void bindingOperationFaultAttributes(EditableWSDLBoundFault fault, XMLStreamReader reader) {
   308         for (WSDLParserExtension e : extensions) {
   309             e.bindingOperationFaultAttributes(fault, reader);
   310         }
   311     }
   313     public void finished(WSDLParserExtensionContext context) {
   314         for (WSDLParserExtension e : extensions) {
   315             e.finished(context);
   316         }
   317     }
   319     public void postFinished(WSDLParserExtensionContext context) {
   320         for (WSDLParserExtension e : extensions) {
   321             e.postFinished(context);
   322         }
   323     }
   324     /**
   325      *
   326      * @param reader
   327      * @return If the element has wsdl:required attribute set to true
   328      */
   330     private boolean isRequiredExtension(XMLStreamReader reader) {
   331         String required = reader.getAttributeValue(WSDLConstants.NS_WSDL, "required");
   332         if(required != null)
   333             return Boolean.parseBoolean(required);
   334         return false;
   335     }
   337     private Locator getLocator(XMLStreamReader reader) {
   338         Location location = reader.getLocation();
   339             LocatorImpl loc = new LocatorImpl();
   340             loc.setSystemId(location.getSystemId());
   341             loc.setLineNumber(location.getLineNumber());
   342         return loc;
   343     }
   345 }

mercurial