[
Lists Home |
Date Index |
Thread Index
]
- From: David Megginson <david@megginson.com>
- To: xml-dev@xml.org
- Date: 21 Feb 2000 16:38:05 -0500
Miles Sabin <msabin@cromwellmedia.co.uk> writes:
> Interesting, but, I think, orthogonal to the factory part of
> my proposals. As a means of constucting chains of SAX event
> processors it's quite nice (tho' I have a bit of a horror of
> String based specifications), but it doesn't help to resolve
> the bootstrap issue. At some point or another you'll still have
> to programmatically reference some vendors parser. That means
> either hard-wiring a reference to that parser into mainline
> code, or coming up with an ad hoc factory solution.
Or allowing apps to pull it from the command line or a configuration
file (though it's best still to provide a default).
> Better to put that in the SAX core, I'd say.
For the SAX core, I'm leaning towards a rewrite of the SAX1
ParserFactory into XMLReaderFactory, only with methods that throw
SAXException (as David B. suggested). It will look like this:
====================8<====================8<====================
package org.xml.sax.helpers;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
final public class XMLReaderFactory
{
private XMLReaderFactory ()
{
}
public static XMLReader makeXMLReader ()
throws SAXException
{
String className = System.getProperty("org.xml.sax.driver");
if (className == null) {
throw new
SAXException("System property org.xml.sax.driver not specified");
} else {
return makeXMLReader(className);
}
}
public static XMLReader makeXMLReader (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);
}
}
}
====================8<====================8<====================
All the best,
David
--
David Megginson david@megginson.com
http://www.megginson.com/
***************************************************************************
This is xml-dev, the mailing list for XML developers.
To unsubscribe, mailto:majordomo@xml.org&BODY=unsubscribe%20xml-dev
List archives are available at http://xml.org/archives/xml-dev/threads.html
***************************************************************************
|