Community
Participate
Working Groups
Help uses org.apache.xerces packages instead of APIs (javax.xml.parsers packages).
The eclipse runtime also uses org.apache.xerces.parsers.* classes. It would be worth investigating the move to the javax.xml.parsers.* classes, as it could solve some of the infoset problems caused by different jdk/xml versions.
Targeted for 2.1.
At the moment, the switch to use APIs is breaking. When changing help code to use SAXParserFactory factory=SAXParserFactory.newInstance(); factory.setFeature("http://apache.org/xml/features/nonvalidating/load- external-dtd", false); parser.parse(inputSource,this); help will not work using jdk >= 1.4. The reason is that Xerces parcer is no longer used when using jdk1.4. The JAXP provided by jdk will load Crimson implementation by default. I think, Eclipse platform set a property to be available to VM, to cause parser implementation provided by Eclipse to be used.
The new requirement is to not only stop calling Xerces implementation, but also not call Xerces APIs directly as Xerces is tried to be removed from Eclipse. Instead plug-ins should use JAXP APIs in Java 1.4, and the actual prarser may vary depending on the configuration. See bug 37696. The issue of preventing the parser from loading external DTD can be solved by providing Handler with overridden EntityResolver.resolveEntity method that will return not null InputSource without consulting any external URL.
Removed dependencies on Xerces from org.eclipse.help, org.eclipse.help.webapp, org.eclipse.tomcat.