OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help



   Re: ANN: SAX 2.0 extension proposals.

[ 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:

  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?)",
	  } catch (ClassCastException e4) {
	      throw new SAXException("SAX2 driver class " + className +
				     " does not implement XMLReader", e4);



All the best,


David Megginson                 david@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


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS