cmnodefactory.java

来自「JAVA的一些源码 JAVA2 STANDARD EDITION DEVELO」· Java 代码 · 共 242 行

JAVA
242
字号
/* * The Apache Software License, Version 1.1 * * * Copyright (c) 2003 The Apache Software Foundation.  All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * 3. The end-user documentation included with the redistribution, *    if any, must include the following acknowledgment: *       "This product includes software developed by the *        Apache Software Foundation (http://www.apache.org/)." *    Alternately, this acknowledgment may appear in the software itself, *    if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xerces" and "Apache Software Foundation" must *    not be used to endorse or promote products derived from this *    software without prior written permission. For written *    permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", *    nor may "Apache" appear in their name, without prior written *    permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== *  */package com.sun.org.apache.xerces.internal.impl.xs.models;import com.sun.org.apache.xerces.internal.impl.Constants;import com.sun.org.apache.xerces.internal.impl.XMLErrorReporter;import com.sun.org.apache.xerces.internal.impl.dtd.models.CMNode;import com.sun.org.apache.xerces.internal.xni.parser.XMLComponentManager;/** * <p>Creates nodes.</p> *  * @author  Neeraj Bajaj * @version $Revision: 1.2 $, $Date: 2004/01/22 20:36:54 $ */public class CMNodeFactory {    /**     * Property identifier: error reporter.     */    private static final String ERROR_REPORTER =        Constants.XERCES_PROPERTY_PREFIX + Constants.ERROR_REPORTER_PROPERTY;        /**     * <p>Output extra debugging messages to {@link System.err}.</p>     */    private static final boolean DEBUG = false;        /**     * <p>Count of number of nodes created.</p>     */    private int nodeCount = 0;        /**     * Error reporter. This property identifier is:     * http://apache.org/xml/properties/internal/error-reporter     */    private XMLErrorReporter fErrorReporter = null;        /**     * Default constructor.     */    public CMNodeFactory() {        if (DEBUG) {            System.err.println("CMNodeFactory()");        }    }        /**     * <p>Reset internal state using <code>componentManager</code> provided values.</p>     *      * @param componentManager {@link XMLComponentManager} to provide new values for internal state.     */    public void reset(XMLComponentManager componentManager) {                if (DEBUG) {            System.err.println("CMNodeFactory#reset("            + "componentManager[" + componentManager.toString() + "])");        }        // error reporter        fErrorReporter = (XMLErrorReporter) componentManager.getProperty(ERROR_REPORTER);    } //reset()        /**     * <p>Create a new leaf node as defined by the params.</p>     *      * @param type Type of leaf node to return.     * @param leaf Leaf <code>Object</code>     * @param id ID of leaf to return.     * @param position Position of leaf to return.     *      * @return New node as defined by the params.     */    public CMNode getCMLeafNode(int type, Object leaf, int id, int position) {                // this is a new node        nodeCount++;        if (DEBUG) {            System.err.println("CMNodeFactory#getCMLeafNode("            + "type[" + type + "], "            + "leaf[" + leaf.toString() + "], "            + "id[" + id + "], "            + "position[" + position + "])\n"            + "\tnodeCount=" + nodeCount);        }                        // create new node as defined by the params        return new XSCMLeaf(type, leaf, id, position);    }        /**     * <p>Create a leaf node as defined by the params.</p>     *      * @param type Type of node to create.     * @param childNode Child node.     *      * @return New node as defined by the params.     */    public CMNode getCMUniOpNode(int type, CMNode childNode) {        // this is a new node        nodeCount++;        if (DEBUG) {            System.err.println("CMNodeFactory#getCMUniOpNode("            + "type[" + type + "], "            + "childNode[" + childNode.toString() + "])\n"            + "\tnodeCount=" + nodeCount);        }                // create new node as defined by the params        return new XSCMUniOp(type, childNode);    }    /**     * <p>Create a leaf node as defined by the params.</p>     *      * @param type Type of node to create.     * @param leftNode Left node.     * @param rightNode Right node.     *      * @return New node as defined by the params.     */    public CMNode getCMBinOpNode(int type, CMNode leftNode, CMNode rightNode) {        // this is a new node        nodeCount++;        if (DEBUG) {            System.err.println("CMNodeFactory#getCMBinOpNode("            + "type[" + type + "], "            + "leftNode[" + leftNode.toString() + "], "            + "rightNode[" + rightNode.toString() + "])\n"            + "\tnodeCount=" + nodeCount);        }                // create new node as defined by the params        return new XSCMBinOp(type, leftNode, rightNode);    }    /**     * <p>Reset the internal node count to 0.</p>     */    public void resetNodeCount() {        nodeCount = 0;                if (DEBUG) {            System.err.println("CMNodeFactory#resetNodeCount: "                + "nodeCount=" + nodeCount + " (after reset)");        }    }        /**     * <p>Sets the value of a property. This method is called by the component     * manager any time after reset when a property changes value.</p>     *      * <p> <strong>Note:</strong> Components should silently ignore properties     * that do not affect the operation of the component.</p>     *     * @param propertyId The property identifier.     * @param value The value of the property.     */    public void setProperty(String propertyId, Object value) {                if (DEBUG) {            System.err.println("CMNodeFactory#setProperty("            + "propertyId[" + propertyId + "], "            + "value[" + value.toString() + "])");        }        // Xerces properties?        if (propertyId.startsWith(Constants.XERCES_PROPERTY_PREFIX)) {            String property = propertyId.substring(Constants.XERCES_PROPERTY_PREFIX.length());                                    // error reporter?            if (property.equals(Constants.ERROR_REPORTER_PROPERTY)) {                fErrorReporter = (XMLErrorReporter) value;                return;            }                        // silently ignore unknown Xerces property            return;        } else {            // silently ignore unknown non-Xerces property            return;        }    } // setProperty(String,Object)} // CMNodeFactory()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?