    001    /*
    002     * Licensed to the Apache Software Foundation (ASF) under one or more
    003     * contributor license agreements.  See the NOTICE file distributed with
    004     * this work for additional information regarding copyright ownership.
    005     * The ASF licenses this file to You under the Apache License, Version 2.0
    006     * (the "License"); you may not use this file except in compliance with
    007     * the License.  You may obtain a copy of the License at
    008     *
    009     *     http://www.apache.org/licenses/LICENSE-2.0
    010     *
    011     * Unless required by applicable law or agreed to in writing, software
    012     * distributed under the License is distributed on an "AS IS" BASIS,
    013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014     * See the License for the specific language governing permissions and
    015     * limitations under the License.
    016     */
    017    package org.apache.commons.jxpath.xml;
    018
    019    import java.io.InputStream;
    020
    021    /**
    022     * The abstract superclass of XML parsers that produce DOM Documents.
    023     * The features have the same defaults as {@link javax.xml.parsers.DocumentBuilderFactory}.
    024     *
    025     * @author Dmitri Plotnikov
    026     * @version $Revision: 652845 $ $Date: 2008-05-02 12:46:46 -0500 (Fri, 02 May 2008) $
    027     */
    028    public abstract class XMLParser2 implements XMLParser {
    029        private boolean validating = false;
    030        private boolean namespaceAware = true;
    031        private boolean whitespace = false;
    032        private boolean expandEntityRef = true;
    033        private boolean ignoreComments = false;
    034        private boolean coalescing = false;
    035
    036        /**
    037         * Set whether the underlying parser should be validating.
    038         * @param validating flag
    039         * @see javax.xml.parsers.DocumentBuilderFactory#setValidating(boolean)
    040         */
    041        public void setValidating(boolean validating) {
    042            this.validating = validating;
    043        }
    044
    045        /**
    046         * Learn whether the underlying parser is validating.
    047         * @return boolean
    048         * @see javax.xml.parsers.DocumentBuilderFactory#isValidating()
    049         */
    050        public boolean isValidating() {
    051            return validating;
    052        }
    053
    054        /**
    055         * Learn whether the underlying parser is ns-aware.
    056         * @return boolean
    057         * @see javax.xml.parsers.DocumentBuilderFactory#isNamespaceAware()
    058         */
    059        public boolean isNamespaceAware() {
    060            return namespaceAware;
    061        }
    062
    063        /**
    064         * Set whether the underlying parser is ns-aware.
    065         * @param namespaceAware flag
    066         * @see javax.xml.parsers.DocumentBuilderFactory#setNamespaceAware(boolean)
    067         */
    068        public void setNamespaceAware(boolean namespaceAware) {
    069            this.namespaceAware = namespaceAware;
    070        }
    071
    072        /**
    073         * Set whether the underlying parser is ignoring whitespace.
    074         * @param whitespace flag
    075         * @see javax.xml.parsers.DocumentBuilderFactory#setIgnoringElementContentWhitespace(boolean)
    076         */
    077        public void setIgnoringElementContentWhitespace(boolean whitespace) {
    078            this.whitespace = whitespace;
    079        }
    080
    081        /**
    082         * Learn whether the underlying parser is ignoring whitespace.
    083         * @return boolean
    084         * @see javax.xml.parsers.DocumentBuilderFactory#isIgnoringElementContentWhitespace()
    085         */
    086        public boolean isIgnoringElementContentWhitespace() {
    087            return whitespace;
    088        }
    089
    090        /**
    091         * Learn whether the underlying parser expands entity references.
    092         * @return boolean
    093         * @see javax.xml.parsers.DocumentBuilderFactory#isExpandEntityReferences()
    094         */
    095        public boolean isExpandEntityReferences() {
    096            return expandEntityRef;
    097        }
    098
    099        /**
    100         * Set whether the underlying parser expands entity references.
    101         * @param expandEntityRef flag
    102         * @see javax.xml.parsers.DocumentBuilderFactory#setExpandEntityReferences(boolean)
    103         */
    104        public void setExpandEntityReferences(boolean expandEntityRef) {
    105            this.expandEntityRef = expandEntityRef;
    106        }
    107
    108        /**
    109         * Learn whether the underlying parser ignores comments.
    110         * @return boolean
    111         * @see javax.xml.parsers.DocumentBuilderFactory#isIgnoringComments()
    112         */
    113        public boolean isIgnoringComments() {
    114            return ignoreComments;
    115        }
    116
    117        /**
    118         * Set whether the underlying parser ignores comments.
    119         * @param ignoreComments flag
    120         * @see javax.xml.parsers.DocumentBuilderFactory#setIgnoringComments(boolean)
    121         */
    122        public void setIgnoringComments(boolean ignoreComments) {
    123            this.ignoreComments = ignoreComments;
    124        }
    125
    126        /**
    127         * Learn whether the underlying parser is coalescing.
    128         * @return boolean
    129         * @see javax.xml.parsers.DocumentBuilderFactory#isCoalescing()
    130         */
    131        public boolean isCoalescing() {
    132            return coalescing;
    133        }
    134
    135        /**
    136         * Set whether the underlying parser is coalescing.
    137         * @param coalescing flag
    138         * @see javax.xml.parsers.DocumentBuilderFactory#setCoalescing(boolean)
    139         */
    140        public void setCoalescing(boolean coalescing) {
    141            this.coalescing = coalescing;
    142        }
    143
    144        public abstract Object parseXML(InputStream stream);
    145    }