8014500: bootcycle-images fails after upgrade to JAXP 1.5 (original) (raw)
Lance Andersen - Oracle Lance.Andersen at oracle.com
Tue May 14 12:27:05 UTC 2013
- Previous message: 8014500: bootcycle-images fails after upgrade to JAXP 1.5
- Next message: 8014500: bootcycle-images fails after upgrade to JAXP 1.5
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
+1 On May 14, 2013, at 8:16 AM, Alan Bateman wrote:
The bootcycle-images target is currently broken in jdk8/tl. Jon has taken 8014461 to fix genstubs but once you get past that then the CLDRConverter fails parsing LDML due to DTD references that aren't allowed by the default policy in jdk8 (since the update to JAXP 1.5). This policy is due to be re-visited later in jdk8 and I expect it will need to allow at least access to the DTDs on the file system. For now, and to get the boot cycle builds going again, I propose to update the CLDRConverter to set the accessExternalDTD property. Attached is the proposed patch. It uses a hard-coded string rather than XMLConstants.ACCESSEXTERNALDTD because the boot JDK will likely have an older version of JAXP where this constant isn't defined. Thanks, Alan.
diff --git a/make/tools/src/build/tools/cldrconverter/CLDRConverter.java b/make/tools/src/build/tools/cldrconverter/CLDRConverter.java --- a/make/tools/src/build/tools/cldrconverter/CLDRConverter.java +++ b/make/tools/src/build/tools/cldrconverter/CLDRConverter.java @@ -34,6 +34,8 @@ import java.util.*; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; +import org.xml.sax.SAXNotRecognizedException; +import org.xml.sax.SAXNotSupportedException; /** @@ -234,6 +236,17 @@ } } + /** + * Configure the parser to allow access to DTDs on the file system. + */ + private static void enableFileAccess(SAXParser parser) throws SAXNotSupportedException { + try { + parser.setProperty("http://javax.xml.XMLConstants/property/accessExternalDTD", "file"); + } catch (SAXNotRecognizedException ignore) { + // property requires >= JAXP 1.5 + } + } + private static List readBundleList() throws Exception { ResourceBundle.Control defCon = ResourceBundle.Control.getControl(ResourceBundle.Control.FORMATDEFAULT); List retList = new ArrayList<>(); @@ -279,6 +292,7 @@ SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(true); SAXParser parser = factory.newSAXParser(); + enableFileAccess(parser); LDMLParseHandler handler = new LDMLParseHandler(id); File file = new File(SOURCEFILEDIR + File.separator + id + ".xml"); if (!file.exists()) { @@ -314,6 +328,7 @@ SAXParserFactory factorySuppl = SAXParserFactory.newInstance(); factorySuppl.setValidating(true); SAXParser parserSuppl = factorySuppl.newSAXParser(); + enableFileAccess(parserSuppl); handlerSuppl = new SupplementDataParseHandler(); File fileSupply = new File(SPPLSOURCEFILE); parserSuppl.parse(fileSupply, handlerSuppl); @@ -322,6 +337,7 @@ SAXParserFactory numberingParser = SAXParserFactory.newInstance(); numberingParser.setValidating(true); SAXParser parserNumbering = numberingParser.newSAXParser(); + enableFileAccess(parserNumbering); handlerNumbering = new NumberingSystemsParseHandler(); File fileNumbering = new File(NUMBERINGSOURCEFILE); parserNumbering.parse(fileNumbering, handlerNumbering); @@ -330,6 +346,7 @@ SAXParserFactory metazonesParser = SAXParserFactory.newInstance(); metazonesParser.setValidating(true); SAXParser parserMetaZones = metazonesParser.newSAXParser(); + enableFileAccess(parserMetaZones); handlerMetaZones = new MetaZonesParseHandler(); File fileMetaZones = new File(METAZONESSOURCEFILE); parserNumbering.parse(fileMetaZones, handlerMetaZones);
-------------- next part --------------
Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 Lance.Andersen at oracle.com
- Previous message: 8014500: bootcycle-images fails after upgrade to JAXP 1.5
- Next message: 8014500: bootcycle-images fails after upgrade to JAXP 1.5
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]