Hi,

On Fri, 2006-03-03 at 11:29 +0100, Mark Wielaard wrote:
> I haven't figured out since when this stopped working, but it clearly is
> a regression. If you installed the feature with a working version of
> classpath (0.20) and then try to use it with a CVS version you will get
> messages like:
> !ENTRY org.eclipse.update.configurator 2006-03-03 11:19:10.787
> !MESSAGE Unable to parse file
> "/tmp/eclipse/plugins/org.eclipse.cdt.core_3.0.2/plugin.xml".
> 
> So I guess it is something going wrong with the parsing of xml files.
> But I haven't found the point yet where eclipse does this, or what the
> actual error is that occurs.

Christian and I debugged this some more and finally found out that the
following patch introduced the regression: "SAX micropatch"
http://lists.gnu.org/archive/html/classpath-patches/2006-01/msg00277.html

The patch seems completely reasonable. If we get any Exception so we
fall out of the parse loop then we report a fatal error, cleanup and
reset. Seems obvious since we will indeed not be able to continue with
regular processing of the file. But we didn't count on Eclipse...

Strangely enough the eclipse PluginParser is a DefaultHandler, that
doesn't override fatalError(), and if it has enough data it will throw a
subclass of SAXException from its own startElement() handler called
ParseCompleteException. It tries to catch this exception from
SAXParser.parse() and then continue happily.  You can find that code at:
http://dev.eclipse.org/viewcvs/index.cgi/*checkout*/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PluginParser.java?rev=HEAD&content-type=text/plain

But of course since it threw this exception we, imho correctly, generate
a SAXParseException and call fatalError() on the handler which will then
throw this since the PluginParser didn't override it.

I cannot really see a good way to make eclipse happy. It clearly expects
that if it throws this SAXException from startElement() that it will get
this exception back as if nothing happened. But since it has just
destroyed our parser so we should indeed report a SAXParserException to
it (through the errorHandler).

Does anyone have a clever idea how to solve this?

Cheers,

Mark

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to