SAX2 RFD: Inheritance vs. Modification vs. Amalgamation
Arkin
arkin at trendline.co.il
Wed May 19 17:42:00 BST 1999
Empty adpater class called ParserProp and an extended interface called
ParserEx.
The application will create a ParserProp instance by passing it a
reference to Parser. The application will then try to set a feature or a
property. If Parser implements ParserEx, it would work nicely. If Parser
does not implement ParserEx (an old version), then ParserProp will throw
an exception.
Thus:
ParserProp prop;
prop = new ParserProp( myParser );
try
{
prop.setFeature( "xyz" );
}
catch ( SAXException except )
{
// Do something about it, or do nothing about it.
}
Arkin
David Megginson wrote:
>
> (I'd like to hear from as many people as possible on this issue.)
>
> For SAX2, we need to add at least four methods to the SAX 1.0 Parser
> interface:
>
> public void setFeature (String featureId, boolean state)
> throws SAXException;
>
> public boolean getFeature (String featureId)
> throws SAXException;
>
> public void setProperty (String propertyId, Object value)
> throws SAXException;
>
> public Object getProperty (String propertyId)
> throws SAXException;
>
> There are three ways of doing this:
>
> 1. Create a new interface, org.xml.sax.Parser2, that extends
> org.xml.sax.Parser.
>
> PRO: - provides nice, two-way compatibility
> - easy to write adapters for existing SAX 1.0 drivers.
> CON: - subclassing always leads to crime (see the GOF book for
> copious warnings).
>
> 2. Add the methods to org.xml.sax.Parser, and require applications to
> catch NoSuchMethodException when using the new methods, in case
> they're concerned about what version they're dealing with.
>
> PRO: - doesn't limit options for subclassing in the future
> CON: - very difficult to write adapters for existing SAX 1.0
> drivers (slower acceptance and implementation of SAX2)
> - can cause unexpected behaviour at deployment time, unless
> the application designer knows to catch
> NoSuchMethodException
>
> 3. Create a separate interface org.xml.sax.ParserProps (or something
> like that), and require SAX2 drivers to implement both interfaces.
>
> PRO: - easy to writer adapters for existing SAX 1.0 drivers
> - fewer nasty deployment surprises
> CON: - will require lots of casting
> - conceptually ugly
>
> Please, comment, comment, comment! I'm not smart enough to figure this
> out myself.
>
> All the best,
>
> David
>
> --
> David Megginson david at megginson.com
> http://www.megginson.com/
>
> xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
> Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
> To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
> (un)subscribe xml-dev
> To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
> subscribe xml-dev-digest
> List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev
mailing list