FileDocCategorySizeDatePackage
DocumentBuilderFactoryImpl.javaAPI DocJava SE 6 API7591Tue Jun 10 00:22:48 BST 2008com.sun.org.apache.xerces.internal.jaxp

DocumentBuilderFactoryImpl

public class DocumentBuilderFactoryImpl extends DocumentBuilderFactory
author
Rajiv Mordani
author
Edwin Goei
version
$Id: DocumentBuilderFactoryImpl.java,v 1.3 2005/09/26 13:02:47 sunithareddy Exp $

Fields Summary
private Hashtable
attributes
These are DocumentBuilderFactory attributes not DOM attributes
private Hashtable
features
private Schema
grammar
private boolean
isXIncludeAware
private boolean
fSecureProcess
State of the secure processing feature, initially false
Constructors Summary
Methods Summary
public java.lang.ObjectgetAttribute(java.lang.String name)
Allows the user to retrieve specific attributes on the underlying implementation.

        // See if it's in the attributes Hashtable
        if (attributes != null) {
            Object val = attributes.get(name);
            if (val != null) {
                return val;
            }
        }

        DOMParser domParser = null;
        try {
            // We create a dummy DocumentBuilderImpl in case the attribute
            // name is not one that is in the attributes hashtable.
            domParser =
                new DocumentBuilderImpl(this, attributes, features).getDOMParser();
            return domParser.getProperty(name);
        } catch (SAXException se1) {
            // assert(name is not recognized or not supported), try feature
            try {
                boolean result = domParser.getFeature(name);
                // Must have been a feature
                return result ? Boolean.TRUE : Boolean.FALSE;
            } catch (SAXException se2) {
                // Not a property or a feature
                throw new IllegalArgumentException(se1.getMessage());
            }
        }
    
public booleangetFeature(java.lang.String name)

        if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
            return fSecureProcess;
        }
        // See if it's in the features Hashtable
        if (features != null) {
            Object val = features.get(name);
            if (val != null) {
                return ((Boolean) val).booleanValue();
            }
        }
        try {
            DOMParser domParser = new DocumentBuilderImpl(this, attributes, features).getDOMParser();
            return domParser.getFeature(name);
        }
        catch (SAXException e) {
            throw new ParserConfigurationException(e.getMessage());
        }
    
public javax.xml.validation.SchemagetSchema()

        return grammar;
    
public booleanisXIncludeAware()

        return this.isXIncludeAware;
    
public javax.xml.parsers.DocumentBuildernewDocumentBuilder()
Creates a new instance of a {@link javax.xml.parsers.DocumentBuilder} using the currently configured parameters.


                      
      
          
    
        /** Check that if a Schema has been specified that neither of the schema properties have been set. */
        if (grammar != null && attributes != null) {
            if (attributes.containsKey(JAXPConstants.JAXP_SCHEMA_LANGUAGE)) {
                throw new ParserConfigurationException(
                        SAXMessageFormatter.formatMessage(null, 
                        "schema-already-specified", new Object[] {JAXPConstants.JAXP_SCHEMA_LANGUAGE}));
            }
            else if (attributes.containsKey(JAXPConstants.JAXP_SCHEMA_SOURCE)) {
                throw new ParserConfigurationException(
                        SAXMessageFormatter.formatMessage(null, 
                        "schema-already-specified", new Object[] {JAXPConstants.JAXP_SCHEMA_SOURCE}));                
            }
        }
        
        try {
            return new DocumentBuilderImpl(this, attributes, features, fSecureProcess);
        } catch (SAXException se) {
            // Handles both SAXNotSupportedException, SAXNotRecognizedException
            throw new ParserConfigurationException(se.getMessage());
        }
    
public voidsetAttribute(java.lang.String name, java.lang.Object value)
Allows the user to set specific attributes on the underlying implementation.

param
name name of attribute
param
value null means to remove attribute

        // This handles removal of attributes
        if (value == null) {
            if (attributes != null) {
                attributes.remove(name);
            }
            // Unrecognized attributes do not cause an exception
            return;
        }
        
        // This is ugly.  We have to collect the attributes and then
        // later create a DocumentBuilderImpl to verify the attributes.

        // Create Hashtable if none existed before
        if (attributes == null) {
            attributes = new Hashtable();
        }

        attributes.put(name, value);

        // Test the attribute name by possibly throwing an exception
        try {
            new DocumentBuilderImpl(this, attributes, features);
        } catch (Exception e) {
            attributes.remove(name);
            throw new IllegalArgumentException(e.getMessage());
        }
    
public voidsetFeature(java.lang.String name, boolean value)

        // If this is the secure processing feature, save it then return.
        if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
            fSecureProcess = value;
            return;
        }
        if (features == null) {
            features = new Hashtable();
        }
        features.put(name, value ? Boolean.TRUE : Boolean.FALSE);
        // Test the feature by possibly throwing SAX exceptions
        try {
            new DocumentBuilderImpl(this, attributes, features);
        } 
        catch (SAXNotSupportedException e) {
            features.remove(name);
            throw new ParserConfigurationException(e.getMessage());
        } 
        catch (SAXNotRecognizedException e) {
            features.remove(name);
            throw new ParserConfigurationException(e.getMessage());
        }
    
public voidsetSchema(javax.xml.validation.Schema grammar)

        this.grammar = grammar;
    
public voidsetXIncludeAware(boolean state)

        this.isXIncludeAware = state;