From 74b27b64774a3fef2d2bb53bc48a54776cd71bde Mon Sep 17 00:00:00 2001 From: green Date: Wed, 11 Jul 2001 03:59:16 +0000 Subject: Add some org packages. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43922 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/org/xml/sax/helpers/XMLReaderFactory.java | 136 ++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 libjava/org/xml/sax/helpers/XMLReaderFactory.java (limited to 'libjava/org/xml/sax/helpers/XMLReaderFactory.java') diff --git a/libjava/org/xml/sax/helpers/XMLReaderFactory.java b/libjava/org/xml/sax/helpers/XMLReaderFactory.java new file mode 100644 index 00000000000..9443b27dcca --- /dev/null +++ b/libjava/org/xml/sax/helpers/XMLReaderFactory.java @@ -0,0 +1,136 @@ +// XMLReaderFactory.java - factory for creating a new reader. +// Written by David Megginson, sax@megginson.com +// NO WARRANTY! This class is in the Public Domain. + +// $Id: XMLReaderFactory.java,v 1.1 2000/10/02 02:43:20 sboag Exp $ + +package org.xml.sax.helpers; +import org.xml.sax.Parser; +import org.xml.sax.XMLReader; +import org.xml.sax.SAXException; + + +/** + * Factory for creating an XML reader. + * + *
+ * This module, both source code and documentation, is in the + * Public Domain, and comes with NO WARRANTY. + *
+ * + *

This class contains static methods for creating an XML reader + * from an explicit class name, or for creating an XML reader based + * on the value of the org.xml.sax.driver system + * property:

+ * + *
+ * try {
+ *   XMLReader myReader = XMLReaderFactory.createXMLReader();
+ * } catch (SAXException e) {
+ *   System.err.println(e.getMessage());
+ * }
+ * 
+ * + *

Note that these methods will not be usable in environments where + * system properties are not accessible or where the application or + * applet is not permitted to load classes dynamically.

+ * + *

Note to implementors: SAX implementations in specialized + * environments may replace this class with a different one optimized for the + * environment, as long as its method signatures remain the same.

+ * + * @since SAX 2.0 + * @author David Megginson, + * sax@megginson.com + * @version 2.0 + * @see org.xml.sax.XMLReader + */ +final public class XMLReaderFactory +{ + + /** + * Private constructor. + * + *

This constructor prevents the class from being instantiated.

+ */ + private XMLReaderFactory () + { + } + + + /** + * Attempt to create an XML reader from a system property. + * + *

This method uses the value of the system property + * "org.xml.sax.driver" as the full name of a Java class + * and tries to instantiate that class as a SAX2 + * XMLReader.

+ * + *

Note that many Java interpreters allow system properties + * to be specified on the command line.

+ * + * @return A new XMLReader. + * @exception org.xml.sax.SAXException If the value of the + * "org.xml.sax.driver" system property is null, + * or if the class cannot be loaded and instantiated. + * @see #createXMLReader(java.lang.String) + */ + public static XMLReader createXMLReader () + throws SAXException + { + String className = System.getProperty("org.xml.sax.driver"); + if (className == null) { + Parser parser; + try { + parser = ParserFactory.makeParser(); + } catch (Exception e) { + parser = null; + } + if (parser == null) { + throw new + SAXException("System property org.xml.sax.driver not specified"); + } else { + return new ParserAdapter(parser); + } + } else { + return createXMLReader(className); + } + } + + + /** + * Attempt to create an XML reader from a class name. + * + *

Given a class name, this method attempts to load + * and instantiate the class as an XML reader.

+ * + * @return A new XML reader. + * @exception org.xml.sax.SAXException If the class cannot be + * loaded, instantiated, and cast to XMLReader. + * @see #createXMLReader() + */ + public static XMLReader createXMLReader (String className) + throws SAXException + { + try { + return (XMLReader)(Class.forName(className).newInstance()); + } catch (ClassNotFoundException e1) { + throw new SAXException("SAX2 driver class " + className + + " not found", e1); + } catch (IllegalAccessException e2) { + throw new SAXException("SAX2 driver class " + className + + " found but cannot be loaded", e2); + } catch (InstantiationException e3) { + throw new SAXException("SAX2 driver class " + className + + " loaded but cannot be instantiated (no empty public constructor?)", + e3); + } catch (ClassCastException e4) { + throw new SAXException("SAX2 driver class " + className + + " does not implement XMLReader", e4); + } + + } + +} + +// end of XMLReaderFactory.java -- cgit v1.2.3