All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.org.apache.xerces.internal.parsers.IntegratedParserConfiguration Maven / Gradle / Ivy

The newest version!
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 *
 *
 * This file incorporates work covered by the following copyright and
 * permission notice:
 *
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.sun.org.apache.xerces.internal.parsers;

import com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl;
import com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl;
import com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator;
import com.sun.org.apache.xerces.internal.impl.dtd.XMLNSDTDValidator;
import com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator;
import com.sun.org.apache.xerces.internal.impl.xs.XSMessageFormatter;
import com.sun.org.apache.xerces.internal.util.SymbolTable;
import com.sun.org.apache.xerces.internal.xni.grammars.XMLGrammarPool;
import com.sun.org.apache.xerces.internal.xni.parser.XMLComponent;
import com.sun.org.apache.xerces.internal.xni.parser.XMLComponentManager;
import com.sun.org.apache.xerces.internal.xni.parser.XMLDocumentScanner;

/**
 * This is configuration uses a scanner that integrates both scanning of the document
 * and binding namespaces.
 *
 * If namespace feature is turned on, the pipeline is constructured with the 
 * following components:
 * XMLNSDocumentScannerImpl -> XMLNSDTDValidator -> (optional) XMLSchemaValidator
 * 
 * If the namespace feature is turned off the default document scanner implementation
 * is used (XMLDocumentScannerImpl).
 * 

* In addition to the features and properties recognized by the base * parser configuration, this class recognizes these additional * features and properties: *

    *
  • Features *
      *
    • http://apache.org/xml/features/validation/schema
    • *
    • http://apache.org/xml/features/validation/schema-full-checking
    • *
    • http://apache.org/xml/features/validation/schema/normalized-value
    • *
    • http://apache.org/xml/features/validation/schema/element-default
    • *
    *
  • Properties *
      *
    • http://apache.org/xml/properties/internal/error-reporter
    • *
    • http://apache.org/xml/properties/internal/entity-manager
    • *
    • http://apache.org/xml/properties/internal/document-scanner
    • *
    • http://apache.org/xml/properties/internal/dtd-scanner
    • *
    • http://apache.org/xml/properties/internal/grammar-pool
    • *
    • http://apache.org/xml/properties/internal/validator/dtd
    • *
    • http://apache.org/xml/properties/internal/datatype-validator-factory
    • *
    *
* * @author Elena Litani, IBM * * @version $Id: IntegratedParserConfiguration.java,v 1.6 2010-11-01 04:40:09 joehw Exp $ */ public class IntegratedParserConfiguration extends StandardParserConfiguration { // // REVISIT: should this configuration depend on the others // like DTD/Standard one? // /** Document scanner that does namespace binding. */ protected XMLNSDocumentScannerImpl fNamespaceScanner; /** Default Xerces implementation of scanner */ protected XMLDocumentScannerImpl fNonNSScanner; /** DTD Validator that does not bind namespaces */ protected XMLDTDValidator fNonNSDTDValidator; // // Constructors // /** Default constructor. */ public IntegratedParserConfiguration() { this(null, null, null); } // () /** * Constructs a parser configuration using the specified symbol table. * * @param symbolTable The symbol table to use. */ public IntegratedParserConfiguration(SymbolTable symbolTable) { this(symbolTable, null, null); } // (SymbolTable) /** * Constructs a parser configuration using the specified symbol table and * grammar pool. *

* REVISIT: * Grammar pool will be updated when the new validation engine is * implemented. * * @param symbolTable The symbol table to use. * @param grammarPool The grammar pool to use. */ public IntegratedParserConfiguration(SymbolTable symbolTable, XMLGrammarPool grammarPool) { this(symbolTable, grammarPool, null); } // (SymbolTable,XMLGrammarPool) /** * Constructs a parser configuration using the specified symbol table, * grammar pool, and parent settings. *

* REVISIT: * Grammar pool will be updated when the new validation engine is * implemented. * * @param symbolTable The symbol table to use. * @param grammarPool The grammar pool to use. * @param parentSettings The parent settings. */ public IntegratedParserConfiguration(SymbolTable symbolTable, XMLGrammarPool grammarPool, XMLComponentManager parentSettings) { super(symbolTable, grammarPool, parentSettings); // create components fNonNSScanner = new XMLDocumentScannerImpl(); fNonNSDTDValidator = new XMLDTDValidator(); // add components addComponent((XMLComponent)fNonNSScanner); addComponent((XMLComponent)fNonNSDTDValidator); } // (SymbolTable,XMLGrammarPool) /** Configures the pipeline. */ protected void configurePipeline() { // use XML 1.0 datatype library setProperty(DATATYPE_VALIDATOR_FACTORY, fDatatypeValidatorFactory); // setup DTD pipeline configureDTDPipeline(); // setup document pipeline if (fFeatures.get(NAMESPACES) == Boolean.TRUE) { fProperties.put(NAMESPACE_BINDER, fNamespaceBinder); fScanner = fNamespaceScanner; fProperties.put(DOCUMENT_SCANNER, fNamespaceScanner); if (fDTDValidator != null) { fProperties.put(DTD_VALIDATOR, fDTDValidator); fNamespaceScanner.setDTDValidator(fDTDValidator); fNamespaceScanner.setDocumentHandler(fDTDValidator); fDTDValidator.setDocumentSource(fNamespaceScanner); fDTDValidator.setDocumentHandler(fDocumentHandler); if (fDocumentHandler != null) { fDocumentHandler.setDocumentSource(fDTDValidator); } fLastComponent = fDTDValidator; } else { fNamespaceScanner.setDocumentHandler(fDocumentHandler); fNamespaceScanner.setDTDValidator(null); if (fDocumentHandler != null) { fDocumentHandler.setDocumentSource(fNamespaceScanner); } fLastComponent = fNamespaceScanner; } } else { fScanner = fNonNSScanner; fProperties.put(DOCUMENT_SCANNER, fNonNSScanner); if (fNonNSDTDValidator != null) { fProperties.put(DTD_VALIDATOR, fNonNSDTDValidator); fNonNSScanner.setDocumentHandler(fNonNSDTDValidator); fNonNSDTDValidator.setDocumentSource(fNonNSScanner); fNonNSDTDValidator.setDocumentHandler(fDocumentHandler); if (fDocumentHandler != null) { fDocumentHandler.setDocumentSource(fNonNSDTDValidator); } fLastComponent = fNonNSDTDValidator; } else { fScanner.setDocumentHandler(fDocumentHandler); if (fDocumentHandler != null) { fDocumentHandler.setDocumentSource(fScanner); } fLastComponent = fScanner; } } // setup document pipeline if (fFeatures.get(XMLSCHEMA_VALIDATION) == Boolean.TRUE) { // If schema validator was not in the pipeline insert it. if (fSchemaValidator == null) { fSchemaValidator = new XMLSchemaValidator(); // add schema component fProperties.put(SCHEMA_VALIDATOR, fSchemaValidator); addComponent(fSchemaValidator); // add schema message formatter if (fErrorReporter.getMessageFormatter(XSMessageFormatter.SCHEMA_DOMAIN) == null) { XSMessageFormatter xmft = new XSMessageFormatter(); fErrorReporter.putMessageFormatter(XSMessageFormatter.SCHEMA_DOMAIN, xmft); } } fLastComponent.setDocumentHandler(fSchemaValidator); fSchemaValidator.setDocumentSource(fLastComponent); fSchemaValidator.setDocumentHandler(fDocumentHandler); if (fDocumentHandler != null) { fDocumentHandler.setDocumentSource(fSchemaValidator); } fLastComponent = fSchemaValidator; } } // configurePipeline() /** Create a document scanner: this scanner performs namespace binding */ protected XMLDocumentScanner createDocumentScanner() { fNamespaceScanner = new XMLNSDocumentScannerImpl(); return fNamespaceScanner; } // createDocumentScanner():XMLDocumentScanner /** Create a DTD validator: this validator performs namespace binding. */ protected XMLDTDValidator createDTDValidator() { return new XMLNSDTDValidator(); } // createDTDValidator():XMLDTDValidator } // class IntegratedParserConfiguration





© 2015 - 2024 Weber Informatics LLC | Privacy Policy