# HG changeset patch # User joehw # Date 1455755571 28800 # Node ID a847c5a7e22db7bcd3d7a68d2fe1befbc1c4a60a # Parent 6c644cca3f3fc2763e2ff7d669849a75d34543ba 8146237: PREFER from Features API taking precedence over catalog file Reviewed-by: lancea diff -r 6c644cca3f3f -r a847c5a7e22d jaxp/src/java.xml/share/classes/javax/xml/catalog/CatalogReader.java --- a/jaxp/src/java.xml/share/classes/javax/xml/catalog/CatalogReader.java Wed Jul 05 21:20:45 2017 +0200 +++ b/jaxp/src/java.xml/share/classes/javax/xml/catalog/CatalogReader.java Wed Feb 17 16:32:51 2016 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -184,11 +184,14 @@ if (resolve == null) { resolve = catalog.getResolve().literal; } + //override property settings with those from the catalog file catalog.setResolve(resolve); + catalog.setPrefer(defer); catalogEntry = new CatalogEntry(base, prefer, defer, resolve); } else { catalogEntry = new CatalogEntry(base, prefer); } + catalog.setPrefer(prefer); return; } else { inGroup = true; diff -r 6c644cca3f3f -r a847c5a7e22d jaxp/test/javax/xml/jaxp/unittest/catalog/CatalogTest.java --- a/jaxp/test/javax/xml/jaxp/unittest/catalog/CatalogTest.java Wed Jul 05 21:20:45 2017 +0200 +++ b/jaxp/test/javax/xml/jaxp/unittest/catalog/CatalogTest.java Wed Feb 17 16:32:51 2016 -0800 @@ -23,6 +23,7 @@ package catalog; import java.io.IOException; +import javax.xml.catalog.Catalog; import javax.xml.catalog.CatalogFeatures; import javax.xml.catalog.CatalogFeatures.Feature; import javax.xml.catalog.CatalogManager; @@ -41,15 +42,36 @@ import org.xml.sax.ext.DefaultHandler2; /* - * @bug 8081248, 8144966, 8146606 + * @bug 8081248, 8144966, 8146606, 8146237 * @summary Tests basic Catalog functions. */ public class CatalogTest { + /** + * @bug 8146237 + * PREFER from Features API taking precedence over catalog file + */ + @Test + public void testJDK8146237() { + String catalogFile = getClass().getResource("JDK8146237_catalog.xml").getFile(); + + try { + CatalogFeatures features = CatalogFeatures.builder().with(CatalogFeatures.Feature.PREFER, "system").build(); + Catalog catalog = CatalogManager.catalog(features, catalogFile); + CatalogResolver catalogResolver = CatalogManager.catalogResolver(catalog); + String actualSystemId = catalogResolver.resolveEntity("-//FOO//DTD XML Dummy V0.0//EN", "http://www.oracle.com/alt1sys.dtd").getSystemId(); + Assert.assertTrue(actualSystemId.contains("dummy.dtd"), "Resulting id should contain dummy.dtd, indicating a match by publicId"); + + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + } + /* @bug 8146606 Verifies that the resulting systemId does not contain duplicate slashes */ + @Test public void testRewriteSystem() { String catalog = getClass().getResource("rewriteCatalog.xml").getFile(); @@ -67,6 +89,7 @@ @bug 8146606 Verifies that the resulting systemId does not contain duplicate slashes */ + @Test public void testRewriteUri() { String catalog = getClass().getResource("rewriteCatalog.xml").getFile(); diff -r 6c644cca3f3f -r a847c5a7e22d jaxp/test/javax/xml/jaxp/unittest/catalog/JDK8146237_catalog.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxp/test/javax/xml/jaxp/unittest/catalog/JDK8146237_catalog.xml Wed Feb 17 16:32:51 2016 -0800 @@ -0,0 +1,7 @@ + + + + + +