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

Thu, 31 Aug 2017 15:18:52 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:18:52 +0800
changeset 637
9c07ef4934dd
parent 368
0989ad8c0860
parent 0
373ffda63c9a
permissions
-rw-r--r--

merge

     1 /*
     2  * Copyright (c) 1997, 2012, 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.tools.internal.ws.wsdl.parser;
    28 import org.w3c.dom.Document;
    29 import org.xml.sax.ContentHandler;
    30 import org.xml.sax.EntityResolver;
    31 import org.xml.sax.ErrorHandler;
    32 import org.xml.sax.InputSource;
    33 import org.xml.sax.SAXException;
    35 import java.io.IOException;
    37 import com.sun.xml.internal.xsom.parser.XMLParser;
    39 /**
    40  * {@link XMLParser} implementation that
    41  * parses XML from a DOM forest instead of parsing it from
    42  * its original location.
    43  *
    44  * @author Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
    45  * @author Vivek Pandey
    46  */
    47 public class DOMForestParser implements XMLParser {
    49     /**
    50      * DOM forest to be "parsed".
    51      */
    52     private final DOMForest forest;
    54     /**
    55      * Scanner object will do the actual SAX events generation.
    56      */
    57     private final DOMForestScanner scanner;
    59     private final XMLParser fallbackParser;
    61     /**
    62      * @param fallbackParser This parser will be used when DOMForestParser needs to parse
    63      *                       documents that are not in the forest.
    64      */
    65     public DOMForestParser(DOMForest forest, XMLParser fallbackParser) {
    66         this.forest = forest;
    67         this.scanner = new DOMForestScanner(forest);
    68         this.fallbackParser = fallbackParser;
    69     }
    72     public void parse(InputSource source, ContentHandler handler,  EntityResolver entityResolver, ErrorHandler errHandler) throws SAXException, IOException {
    74     }
    76     public void parse(InputSource source, ContentHandler handler, ErrorHandler errorHandler, EntityResolver entityResolver)
    78             throws SAXException, IOException {
    79         String systemId = source.getSystemId();
    80         Document dom = forest.get(systemId);
    82         if (dom == null) {
    83             // if no DOM tree is built for it,
    84             // let the fall back parser parse the original document.
    85             //
    86             // for example, XSOM parses datatypes.xsd (XML Schema part 2)
    87             // but this will never be built into the forest.
    88             fallbackParser.parse(source, handler, errorHandler, entityResolver);
    89             return;
    90         }
    92         scanner.scan(dom, handler);
    94     }
    95 }

mercurial