"Henning P. Schmiedehausen" <[EMAIL PROTECTED]> writes:

> Martin Poeschl <[EMAIL PROTECTED]> writes:
> 
> >hmmmm .... so let's look at the sources at sax.sf.net
> 
> >    *public* InputSource resolveEntity (String publicId, String systemId)
> >     *throws* IOException, SAXException
> >    {
> >     *return* *null*;
> >    }
> 
> >the IOException was introduced in sax 2.0 ..
> 
> Martin,
> 
> this is an _IMPLEMENTATION_. An implementation is allowed to leave
> exceptions out which are defined in the method. The only valid thing
> is the INTERFACE, which defined the signature of the method.
> 
> And in my source of the the JDK 1.4.1:
> 
> % less org/xml/sax/EntityResolver.java
> [...]
>     public abstract InputSource resolveEntity (String publicId,
>                                                String systemId)
>         throws SAXException, IOException;
> [...]
> 
> q.e.d.
> 
> 
> >i prefere to keep the change
> 
> I beg to differ. I prefer to remove it, because it simply isn't
> necessary. :-)

I think Martin is talking about differences between the original SAX
and newer SAX2 APIs (though I was a bit thrown off at first by the
references).  The EntityResolver interface has been around since SAX1.
I searched around for a bit, and didn't find any handy JavaDoc for
SAX1.  I did notice that the old org.xml.sax.HandlerBase (deprecated
by SAX2) does not decl IOException in its throws clause (valid for its
implementation, but not in the generic case).  I finally located a RPM
claiming to contain the SAX 1.0.1 release.  Both its JavaDoc and its
bytecodes (shown below) claim that the EntityResolver interface throws
IOException.  I don't think we should worry about maintaining
backwards compat with anything less that SAX 1.0.1.

$ rpm -q sax
sax-1.0-1
$ javap -classpath /usr/share/java/classes/sax.jar org.xml.sax.EntityResolver
Compiled from EntityResolver.java
public interface org.xml.sax.EntityResolver
    /* ACC_SUPER bit NOT set */
{
    public abstract org.xml.sax.InputSource resolveEntity(java.lang.String, 
java.lang.String) throws org.xml.sax.SAXException, java.io.IOException;
}

Since DTDResolver's implementation does actually throw an IOException,
I would prefer that we make this clear in its throws declaration.
-- 

Daniel Rall

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to