diff options
Diffstat (limited to 'src/share/classes/com/sun/org/apache/xerces/internal/impl/dv/DTDDVFactory.java')
-rw-r--r-- | src/share/classes/com/sun/org/apache/xerces/internal/impl/dv/DTDDVFactory.java | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/share/classes/com/sun/org/apache/xerces/internal/impl/dv/DTDDVFactory.java b/src/share/classes/com/sun/org/apache/xerces/internal/impl/dv/DTDDVFactory.java new file mode 100644 index 0000000..5e13994 --- /dev/null +++ b/src/share/classes/com/sun/org/apache/xerces/internal/impl/dv/DTDDVFactory.java @@ -0,0 +1,87 @@ +/* + * reserved comment block + * DO NOT REMOVE OR ALTER! + */ +/* + * Copyright 2001, 2002,2004 The Apache Software Foundation. + * + * Licensed 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.impl.dv; + +import java.util.Hashtable; + +/** + * The factory to create and return DTD types. The implementation should + * store the created datatypes in static data, so that they can be shared by + * multiple parser instance, and multiple threads. + * + * @xerces.internal + * + * @author Sandy Gao, IBM + * + */ +public abstract class DTDDVFactory { + + private static final String DEFAULT_FACTORY_CLASS = "com.sun.org.apache.xerces.internal.impl.dv.dtd.DTDDVFactoryImpl"; + + /** + * Get an instance of the default DTDDVFactory implementation. + * + * @return an instance of DTDDVFactory implementation + * @exception DVFactoryException cannot create an instance of the specified + * class name or the default class name + */ + public static synchronized final DTDDVFactory getInstance() throws DVFactoryException { + return getInstance(DEFAULT_FACTORY_CLASS); + } + + /** + * Get an instance of DTDDVFactory implementation. + * + * @param factoryClass name of the implementation to load. + * @return an instance of DTDDVFactory implementation + * @exception DVFactoryException cannot create an instance of the specified + * class name or the default class name + */ + public static synchronized final DTDDVFactory getInstance(String factoryClass) throws DVFactoryException { + + try { + // if the class name is not specified, use the default one + return (DTDDVFactory) + (ObjectFactory.newInstance(factoryClass, ObjectFactory.findClassLoader(), true)); + } catch (ClassCastException e) { + throw new DVFactoryException("DTD factory class " + factoryClass + " does not extend from DTDDVFactory."); + } + } + + // can't create a new object of this class + protected DTDDVFactory(){} + + /** + * return a dtd type of the given name + * + * @param name the name of the datatype + * @return the datatype validator of the given name + */ + public abstract DatatypeValidator getBuiltInDV(String name); + + /** + * get all built-in DVs, which are stored in a hashtable keyed by the name + * + * @return a hashtable which contains all datatypes + */ + public abstract Hashtable getBuiltInTypes(); + +} |