FileDocCategorySizeDatePackage
DocumentBuilderFactoryImpl.javaAPI DocJava SE 5 API8884Fri Aug 26 14:55:54 BST 2005com.sun.org.apache.xerces.internal.jaxp

DocumentBuilderFactoryImpl

public class DocumentBuilderFactoryImpl extends DocumentBuilderFactory
author
Rajiv Mordani
author
Edwin Goei
version
$Id: DocumentBuilderFactoryImpl.java,v 1.14 2004/02/24 23:15:58 mrglavas Exp $

Fields Summary
private Hashtable
attributes
These are DocumentBuilderFactory attributes not DOM attributes
private Schema
grammar
private boolean
isXIncludeAware
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).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(Constants.FEATURE_SECURE_PROCESSING)){
            Object ob =  attributes.get(Constants.FEATURE_SECURE_PROCESSING);
            if(ob == null) return false;
            return ((Boolean)ob).booleanValue();
        }
        else
            throw new ParserConfigurationException(DOMMessageFormatter.formatMessage(
            DOMMessageFormatter.DOM_DOMAIN,"jaxp_feature_not_supported",
            new Object[] {name}));
    
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 the consistency between the specified schema and
        // the schema property. I thought about putting this into
        // DocumentBuilderImpl, but because of the hack in the getAttribute method,
        // we can't really do that. -KK
        if( attributes!= null &&  attributes.containsKey("http://java.sun.com/xml/jaxp/properties/schemaLanguage") &&  grammar!=null )
            throw new ParserConfigurationException(
            DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN,
            "jaxp-schema-support",null));
        
        
        try {
            return new DocumentBuilderImpl(this, attributes);
        } 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);
        } catch (Exception e) {
            attributes.remove(name);
            throw new IllegalArgumentException(e.getMessage());
        }
    
public voidsetFeature(java.lang.String name, boolean value)

        
        //Revisit::
        //for now use attributes itself. we just support on feature.
        //If we need to use setFeature in full fledge we should
        //document what is supported by setAttribute
        //and what is by setFeature.
        //user should not use setAttribute("xyz",Boolean.TRUE)
        //instead of setFeature("xyz",true);
        if(attributes == null)
            attributes = new Hashtable();
        if(name.equals(Constants.FEATURE_SECURE_PROCESSING)){
            attributes.put(Constants.FEATURE_SECURE_PROCESSING,Boolean.valueOf(value));
        } else throw new ParserConfigurationException(
        DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN,
        "jaxp_feature_not_supported",
        new Object[] {name}));
        
    
public voidsetSchema(javax.xml.validation.Schema grammar)

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

        this.isXIncludeAware = state;