/*
 * reserved comment block
 * DO NOT REMOVE OR ALTER!
 */
/*
 * 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.jaxp;

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.validation.ValidationManager;
import com.sun.org.apache.xerces.internal.impl.xs.XSMessageFormatter;
import com.sun.org.apache.xerces.internal.jaxp.validation.XSGrammarPoolContainer;
import com.sun.org.apache.xerces.internal.util.FeatureState;
import com.sun.org.apache.xerces.internal.util.PropertyState;
import com.sun.org.apache.xerces.internal.xni.grammars.XMLGrammarPool;
import com.sun.org.apache.xerces.internal.xni.parser.XMLComponentManager;
import com.sun.org.apache.xerces.internal.xni.parser.XMLConfigurationException;

Parser configuration for Xerces' XMLSchemaValidator.

/** * <p>Parser configuration for Xerces' XMLSchemaValidator.</p> * */
final class SchemaValidatorConfiguration implements XMLComponentManager { // feature identifiers
Feature identifier: schema validation.
/** Feature identifier: schema validation. */
private static final String SCHEMA_VALIDATION = Constants.XERCES_FEATURE_PREFIX + Constants.SCHEMA_VALIDATION_FEATURE;
Feature identifier: validation.
/** Feature identifier: validation. */
private static final String VALIDATION = Constants.SAX_FEATURE_PREFIX + Constants.VALIDATION_FEATURE;
Feature identifier: use grammar pool only.
/** Feature identifier: use grammar pool only. */
private static final String USE_GRAMMAR_POOL_ONLY = Constants.XERCES_FEATURE_PREFIX + Constants.USE_GRAMMAR_POOL_ONLY_FEATURE;
Feature identifier: parser settings.
/** Feature identifier: parser settings. */
private static final String PARSER_SETTINGS = Constants.XERCES_FEATURE_PREFIX + Constants.PARSER_SETTINGS; // property identifiers
Property identifier: error reporter.
/** Property identifier: error reporter. */
private static final String ERROR_REPORTER = Constants.XERCES_PROPERTY_PREFIX + Constants.ERROR_REPORTER_PROPERTY;
Property identifier: validation manager.
/** Property identifier: validation manager. */
private static final String VALIDATION_MANAGER = Constants.XERCES_PROPERTY_PREFIX + Constants.VALIDATION_MANAGER_PROPERTY;
Property identifier: grammar pool.
/** Property identifier: grammar pool. */
private static final String XMLGRAMMAR_POOL = Constants.XERCES_PROPERTY_PREFIX + Constants.XMLGRAMMAR_POOL_PROPERTY; // // Data //
Parent component manager.
/** Parent component manager. **/
private final XMLComponentManager fParentComponentManager;
The Schema's grammar pool.
/** The Schema's grammar pool. **/
private final XMLGrammarPool fGrammarPool;
Tracks whether the validator should use components from the grammar pool to the exclusion of all others.
/** * Tracks whether the validator should use components from * the grammar pool to the exclusion of all others. */
private final boolean fUseGrammarPoolOnly;
Validation manager.
/** Validation manager. */
private final ValidationManager fValidationManager; public SchemaValidatorConfiguration(XMLComponentManager parentManager, XSGrammarPoolContainer grammarContainer, ValidationManager validationManager) { fParentComponentManager = parentManager; fGrammarPool = grammarContainer.getGrammarPool(); fUseGrammarPoolOnly = grammarContainer.isFullyComposed(); fValidationManager = validationManager; // add schema message formatter to error reporter try { XMLErrorReporter errorReporter = (XMLErrorReporter) fParentComponentManager.getProperty(ERROR_REPORTER); if (errorReporter != null) { errorReporter.putMessageFormatter(XSMessageFormatter.SCHEMA_DOMAIN, new XSMessageFormatter()); } } // Ignore exception. catch (XMLConfigurationException exc) {} }
Returns the state of a feature.
Params:
  • featureId – The feature identifier.
Throws:
  • XMLConfigurationException – Thrown for configuration error. In general, components should only throw this exception if it is really a critical error.
Returns:true if the feature is supported
/** * Returns the state of a feature. * * @param featureId The feature identifier. * @return true if the feature is supported * * @throws XMLConfigurationException Thrown for configuration error. * In general, components should * only throw this exception if * it is <strong>really</strong> * a critical error. */
public boolean getFeature(String featureId) throws XMLConfigurationException { FeatureState state = getFeatureState(featureId); if (state.isExceptional()) { throw new XMLConfigurationException(state.status, featureId); } return state.state; } public FeatureState getFeatureState(String featureId) { if (PARSER_SETTINGS.equals(featureId)) { return fParentComponentManager.getFeatureState(featureId); } else if (VALIDATION.equals(featureId) || SCHEMA_VALIDATION.equals(featureId)) { return FeatureState.is(true); } else if (USE_GRAMMAR_POOL_ONLY.equals(featureId)) { return FeatureState.is(fUseGrammarPoolOnly); } return fParentComponentManager.getFeatureState(featureId); } public PropertyState getPropertyState(String propertyId) { if (XMLGRAMMAR_POOL.equals(propertyId)) { return PropertyState.is(fGrammarPool); } else if (VALIDATION_MANAGER.equals(propertyId)) { return PropertyState.is(fValidationManager); } return fParentComponentManager.getPropertyState(propertyId); }
Returns the value of a property.
Params:
  • propertyId – The property identifier.
Throws:
  • XMLConfigurationException – Thrown for configuration error. In general, components should only throw this exception if it is really a critical error.
Returns:the value of the property
/** * Returns the value of a property. * * @param propertyId The property identifier. * @return the value of the property * * @throws XMLConfigurationException Thrown for configuration error. * In general, components should * only throw this exception if * it is <strong>really</strong> * a critical error. */
public Object getProperty(String propertyId) throws XMLConfigurationException { PropertyState state = getPropertyState(propertyId); if (state.isExceptional()) { throw new XMLConfigurationException(state.status, propertyId); } return state.state; } public boolean getFeature(String featureId, boolean defaultValue) { FeatureState state = getFeatureState(featureId); if (state.isExceptional()) { return defaultValue; } return state.state; } public Object getProperty(String propertyId, Object defaultValue) { PropertyState state = getPropertyState(propertyId); if (state.isExceptional()) { return defaultValue; } return state.state; } }