1 /*
2  * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 
24 package catalog;
25 
26 import static catalog.CatalogTestUtils.catalogResolver;
27 import static catalog.ResolutionChecker.checkNoMatch;
28 import static catalog.ResolutionChecker.checkSysIdResolution;
29 
30 import javax.xml.catalog.CatalogException;
31 import javax.xml.catalog.CatalogResolver;
32 
33 import org.testng.annotations.DataProvider;
34 import org.testng.annotations.Listeners;
35 import org.testng.annotations.Test;
36 
37 /*
38  * @test
39  * @bug 8077931
40  * @library /javax/xml/jaxp/libs
41  * @run testng/othervm -DrunSecMngr=true catalog.SystemFamilyTest
42  * @run testng/othervm catalog.SystemFamilyTest
43  * @summary Get matched URIs from system, rewriteSystem, systemSuffix and
44  *          delegateSystem entries. It tests the resolution priorities among
45  *          the system family entries. The test rule is based on OASIS
46  *          Standard V1.1 section 7.1.2. "Resolution of External Identifiers".
47  */
48 @Listeners({jaxp.library.FilePolicy.class})
49 public class SystemFamilyTest {
50 
51     @Test(dataProvider = "systemId-matchedUri")
testMatch(String systemId, String matchedUri)52     public void testMatch(String systemId, String matchedUri) {
53         checkSysIdResolution(createResolver(), systemId, matchedUri);
54     }
55 
56     @DataProvider(name = "systemId-matchedUri")
dataOnMatch()57     public Object[][] dataOnMatch() {
58         return new Object[][] {
59                 // The matched URI of the specified system id is defined in a
60                 // system entry.
61                 { "http://remote/dtd/alice/docAlice.dtd",
62                         "http://local/base/dtd/docAliceSys.dtd" },
63 
64                 // The matched URI of the specified system id is defined in a
65                 // rewriteSystem entry.
66                 { "http://remote/dtd/bob/docBob.dtd",
67                         "http://local/base/dtd/rs/docBob.dtd" },
68 
69                 // The matched URI of the specified system id is defined in a
70                 // systemSuffix entry.
71                 { "http://remote/dtd/carl/docCarl.dtd",
72                          "http://local/base/dtd/docCarlSS.dtd" } };
73     }
74 
75     /*
76      * If no match is found, a CatalogException should be thrown.
77      */
78     @Test(expectedExceptions = CatalogException.class)
testNoMatch()79     public void testNoMatch() {
80         checkNoMatch(createResolver());
81     }
82 
createResolver()83     private CatalogResolver createResolver() {
84         return catalogResolver("systemFamily.xml");
85     }
86 }
87