< prev index next >
test/javax/xml/jaxp/unittest/catalog/CatalogTest.java
Print this page
*** 24,50 ****
import static jaxp.library.JAXPTestUtilities.clearSystemProperty;
import static jaxp.library.JAXPTestUtilities.getSystemProperty;
import static jaxp.library.JAXPTestUtilities.setSystemProperty;
import java.io.FilePermission;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.PropertyPermission;
!
import javax.xml.catalog.Catalog;
import javax.xml.catalog.CatalogException;
import javax.xml.catalog.CatalogFeatures;
import javax.xml.catalog.CatalogFeatures.Feature;
import javax.xml.catalog.CatalogManager;
import javax.xml.catalog.CatalogResolver;
- import javax.xml.catalog.CatalogUriResolver;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.Source;
!
import jaxp.library.JAXPTestUtilities;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
--- 24,64 ----
import static jaxp.library.JAXPTestUtilities.clearSystemProperty;
import static jaxp.library.JAXPTestUtilities.getSystemProperty;
import static jaxp.library.JAXPTestUtilities.setSystemProperty;
+ import java.io.File;
+ import java.io.FileInputStream;
import java.io.FilePermission;
import java.io.IOException;
+ import java.io.InputStream;
+ import java.io.StringReader;
+ import java.io.StringWriter;
import java.nio.file.Paths;
import java.util.PropertyPermission;
! import javax.xml.XMLConstants;
import javax.xml.catalog.Catalog;
import javax.xml.catalog.CatalogException;
import javax.xml.catalog.CatalogFeatures;
import javax.xml.catalog.CatalogFeatures.Feature;
import javax.xml.catalog.CatalogManager;
import javax.xml.catalog.CatalogResolver;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
+ import javax.xml.stream.XMLInputFactory;
+ import javax.xml.stream.XMLStreamConstants;
+ import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.Source;
! import javax.xml.transform.Transformer;
! import javax.xml.transform.TransformerFactory;
! import javax.xml.transform.sax.SAXSource;
! import javax.xml.transform.stream.StreamResult;
! import javax.xml.transform.stream.StreamSource;
! import javax.xml.validation.Schema;
! import javax.xml.validation.SchemaFactory;
! import javax.xml.validation.Validator;
import jaxp.library.JAXPTestUtilities;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
*** 57,92 ****
import org.xml.sax.XMLReader;
import org.xml.sax.ext.DefaultHandler2;
/*
* @test
! * @bug 8081248 8144966 8146606 8146237 8151154 8150969 8151162 8152527 8154220
* @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest
* @run testng/othervm -DrunSecMngr=true catalog.CatalogTest
* @run testng/othervm catalog.CatalogTest
* @summary Tests basic Catalog functions.
*/
@Listeners({jaxp.library.FilePolicy.class})
! public class CatalogTest {
static final String KEY_FILES = "javax.xml.catalog.files";
- public String filepath;
/*
* Initializing fields
*/
@BeforeClass
public void setUpClass() throws Exception {
! String file1 = getClass().getResource("first_cat.xml").getFile();
! if (getSystemProperty("os.name").contains("Windows")) {
! filepath = file1.substring(1, file1.lastIndexOf("/") + 1);
! } else {
! filepath = file1.substring(0, file1.lastIndexOf("/") + 1);
}
}
/*
* @bug 8150187
* NPE is expected if the systemId is null. The specification for systemId
* is as follows:
* A system identifier is required on all external entities. XML
* requires a system identifier on all external entities, so this value is
--- 71,312 ----
import org.xml.sax.XMLReader;
import org.xml.sax.ext.DefaultHandler2;
/*
* @test
! * @bug 8081248 8144966 8146606 8146237 8151154 8150969 8151162 8152527 8154220 8163232
* @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest
* @run testng/othervm -DrunSecMngr=true catalog.CatalogTest
* @run testng/othervm catalog.CatalogTest
* @summary Tests basic Catalog functions.
*/
@Listeners({jaxp.library.FilePolicy.class})
! public class CatalogTest extends CatalogSupportBase {
static final String KEY_FILES = "javax.xml.catalog.files";
/*
* Initializing fields
*/
@BeforeClass
public void setUpClass() throws Exception {
! super.setUp();
! }
!
!
! /*
! * @bug 8163232
! * Verifies that the CatalogResolver supports the following XML Resolvers:
! javax.xml.stream.XMLResolver
! javax.xml.transform.URIResolver
! org.w3c.dom.ls.LSResourceResolver
! org.xml.sax.EntityResolver
! *
! * Plus, system and uri entries can equally be used.
! */
!
! /*
! * Verifies the support for org.xml.sax.EntityResolver.
! * Expected: the parser returns the expected string.
! */
! @Test(dataProvider = "supportXMLResolver")
! public void supportEntityResolver(String catalogFile, String xml, String expected) throws Exception {
! String xmlSource = getClass().getResource(xml).getFile();
!
! CatalogResolver cr = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalogFile);
! MyCatalogHandler handler = new MyCatalogHandler(cr, elementInSystem);
! SAXParser parser = getSAXParser(false, true, null);
! parser.parse(xmlSource, handler);
!
! Assert.assertEquals(handler.getResult().trim(), expected);
! }
!
! /*
! * Verifies the support for javax.xml.stream.XMLResolver.
! * Expected: the parser returns the expected string.
! */
! @Test(dataProvider = "supportXMLResolver")
! public void supportXMLResolver(String catalogFile, String xml, String expected) throws Exception {
! String xmlSource = getClass().getResource(xml).getFile();
!
! CatalogResolver cr = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalogFile);
!
! XMLInputFactory xifactory = XMLInputFactory.newInstance();
! xifactory.setProperty(XMLInputFactory.IS_COALESCING, true);
! xifactory.setProperty(XMLInputFactory.RESOLVER, cr);
! File file = new File(xmlSource);
! String systemId = file.toURI().toString();
! InputStream entityxml = new FileInputStream(file);
! XMLStreamReader streamReader = xifactory.createXMLStreamReader(systemId, entityxml);
! String result = null;
! while (streamReader.hasNext()) {
! int eventType = streamReader.next();
! if (eventType == XMLStreamConstants.START_ELEMENT) {
! eventType = streamReader.next();
! if (eventType == XMLStreamConstants.CHARACTERS) {
! result = streamReader.getText();
! }
! }
! }
! System.out.println(": expected [" + expected + "] <> actual [" + result.trim() + "]");
!
! Assert.assertEquals(result.trim(), expected);
! }
!
! /*
! * Verifies the support for org.w3c.dom.ls.LSResourceResolver by ShemaFactory.
! * Success: parsing goes through with no error
! * Fail: throws Exception if references are not resolved (by the CatalogResolver)
! */
! @Test(dataProvider = "supportLSResourceResolver")
! public void supportLSResourceResolver(String catalogFile, Source schemaSource) throws SAXException {
!
! CatalogResolver cr = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalogFile);
!
! SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
! factory.setResourceResolver(cr);
! Schema schema = factory.newSchema(schemaSource);
!
! }
!
! /*
! * Verifies the support for org.w3c.dom.ls.LSResourceResolver by Validator.
! * Success: parsing goes through with no error
! * Fail: throws Exception if references are not resolved (by the CatalogResolver)
! */
! @Test(dataProvider = "supportLSResourceResolver1")
! public void supportLSResourceResolver1(String catalogFile, Source source) throws Exception {
!
! CatalogResolver cr = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalogFile);
!
! SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
! Validator validator = factory.newSchema().newValidator();
! validator.setResourceResolver(cr);
! validator.validate(source);
! }
!
! /*
! * Verifies the support for javax.xml.transform.URIResolver.
! * Success: parsing goes through with no error
! * Fail: throws Exception if references are not resolved (by the CatalogResolver)
! */
! @Test(dataProvider = "supportURIResolver")
! public void supportURIResolver(String catalogFile, Source xsl, Source xml, String expected) throws Exception {
!
! CatalogResolver cr = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalogFile);
!
! TransformerFactory factory = TransformerFactory.newInstance();
! factory.setURIResolver(cr);
! Transformer transformer = factory.newTransformer(xsl);
! StringWriter out = new StringWriter();
! transformer.transform(xml, new StreamResult(out));
! if (expected != null) {
! Assert.assertTrue(out.toString().contains(expected), "supportURIResolver");
}
}
/*
+ DataProvider: used to verify the support of XML Resolvers.
+ Data columns:
+ catalog filepath, xml source file, expected result
+ */
+ @DataProvider(name = "supportXMLResolver")
+ public Object[][] supportXMLResolver() {
+ String catalogFile = getClass().getResource("catalog.xml").getFile();
+ String catalogFileUri = getClass().getResource("catalog_uri.xml").getFile();
+
+ return new Object[][]{
+ {catalogFile, "system.xml", "Test system entry"},
+ {catalogFile, "rewritesystem.xml", "Test rewritesystem entry"},
+ {catalogFile, "rewritesystem1.xml", "Test rewritesystem entry"},
+ {catalogFile, "systemsuffix.xml", "Test systemsuffix entry"},
+ {catalogFile, "delegatesystem.xml", "Test delegatesystem entry"},
+ {catalogFile, "public.xml", "Test public entry"},
+ {catalogFile, "delegatepublic.xml", "Test delegatepublic entry"},
+ // using uri entries
+ {catalogFileUri, "system.xml", "Test system entry"},
+ {catalogFileUri, "rewritesystem.xml", "Test rewritesystem entry"},
+ {catalogFileUri, "rewritesystem1.xml", "Test rewritesystem entry"},
+ {catalogFileUri, "systemsuffix.xml", "Test systemsuffix entry"},
+ {catalogFileUri, "delegateuri.xml", "Test delegateuri entry"},
+ {catalogFileUri, "public.xml", "Test public entry"},
+ };
+ }
+
+ /*
+ DataProvider: used to verify the support of LSResourceResolver by SchemaFactory.
+ Data columns:
+ catalog filepath, schema source file
+ */
+ @DataProvider(name = "supportLSResourceResolver")
+ public Object[][] supportLSResourceResolver() {
+ String catalogFile = getClass().getResource("CatalogSupport.xml").getFile();
+ String catalogFileUri = getClass().getResource("CatalogSupport_uri.xml").getFile();
+
+ /*
+ * XMLSchema.xsd has a reference to XMLSchema.dtd which in turn refers to
+ * datatypes.dtd
+ */
+ return new Object[][]{
+ {catalogFile, new StreamSource(new StringReader(xsd_xmlSchema))},
+ {catalogFile, new StreamSource(new StringReader(xsd_xmlSchema_import))},
+ {catalogFile, new StreamSource(new StringReader(xsd_include_company))},
+ {catalogFileUri, new StreamSource(new StringReader(xsd_xmlSchema))},
+ {catalogFileUri, new StreamSource(new StringReader(xsd_xmlSchema_import))},
+ {catalogFileUri, new StreamSource(new StringReader(xsd_include_company))},
+ };
+ }
+
+ /*
+ DataProvider: used to verify the support of LSResourceResolver by Validator.
+ Data columns:
+ catalog filepath, source file
+ */
+ @DataProvider(name = "supportLSResourceResolver1")
+ public Object[][] supportLSResourceResolver1() {
+ String catalogFile = getClass().getResource("CatalogSupport.xml").getFile();
+ String catalogFileUri = getClass().getResource("CatalogSupport_uri.xml").getFile();
+
+ /*
+ * val_test.xml has a reference to system.dtd and val_test.xsd
+ */
+ SAXSource ss = new SAXSource(new InputSource(xml_val_test));
+ ss.setSystemId(xml_val_test_id);
+
+ return new Object[][]{
+ {catalogFile, ss},
+ {catalogFileUri, ss},
+ };
+ }
+
+
+ /*
+ DataProvider: used to verify the support of LSResourceResolver by Validator.
+ Data columns:
+ catalog filepath, xsl source, xml source file
+ */
+ @DataProvider(name = "supportURIResolver")
+ public Object[][] supportURIResolver() {
+ String catalogFile = getClass().getResource("CatalogSupport.xml").getFile();
+ String catalogFileUri = getClass().getResource("CatalogSupport_uri.xml").getFile();
+ SAXSource xslSource = new SAXSource(new InputSource(new File(xsl_doc).toURI().toASCIIString()));
+
+ /*
+ * val_test.xml has a reference to system.dtd and val_test.xsd
+ */
+ SAXSource ss = new SAXSource(new InputSource(xml_val_test));
+ ss.setSystemId(xml_val_test_id);
+
+ return new Object[][]{
+ {catalogFile, new SAXSource(new InputSource(new File(xsl_doc).toURI().toASCIIString())),
+ new StreamSource(new File(xml_doc)), "Resolved by a catalog"},
+ {catalogFileUri, new SAXSource(new InputSource(new StringReader(xsl_include))),
+ new StreamSource(new StringReader(xml_xsl)), null},
+ };
+ }
+
+ /*
* @bug 8150187
* NPE is expected if the systemId is null. The specification for systemId
* is as follows:
* A system identifier is required on all external entities. XML
* requires a system identifier on all external entities, so this value is
*** 108,118 ****
* other cases in that test.
*/
@Test(dataProvider = "resolveUri")
public void testMatch1(String cFile, String href, String expectedFile, String expectedUri, String msg) {
String catalogFile = getClass().getResource(cFile).getFile();
! CatalogUriResolver cur = CatalogManager.catalogUriResolver(CatalogFeatures.defaults(), catalogFile);
Source source = cur.resolve(href, null);
Assert.assertNotNull(source, "Source returned is null");
Assert.assertEquals(expectedUri, source.getSystemId(), msg);
}
--- 328,338 ----
* other cases in that test.
*/
@Test(dataProvider = "resolveUri")
public void testMatch1(String cFile, String href, String expectedFile, String expectedUri, String msg) {
String catalogFile = getClass().getResource(cFile).getFile();
! CatalogResolver cur = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalogFile);
Source source = cur.resolve(href, null);
Assert.assertNotNull(source, "Source returned is null");
Assert.assertEquals(expectedUri, source.getSystemId(), msg);
}
*** 273,283 ****
public void testRewriteUri() {
String catalog = getClass().getResource("rewriteCatalog.xml").getFile();
try {
! CatalogUriResolver resolver = CatalogManager.catalogUriResolver(CatalogFeatures.defaults(), catalog);
String actualSystemId = resolver.resolve("http://remote.com/import/import.xsl", null).getSystemId();
Assert.assertTrue(!actualSystemId.contains("//"), "result contains duplicate slashes");
} catch (Exception e) {
Assert.fail(e.getMessage());
}
--- 493,503 ----
public void testRewriteUri() {
String catalog = getClass().getResource("rewriteCatalog.xml").getFile();
try {
! CatalogResolver resolver = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalog);
String actualSystemId = resolver.resolve("http://remote.com/import/import.xsl", null).getSystemId();
Assert.assertTrue(!actualSystemId.contains("//"), "result contains duplicate slashes");
} catch (Exception e) {
Assert.fail(e.getMessage());
}
*** 381,391 ****
}
}
/*
! DataProvider: used to verify CatalogUriResolver's resolve function.
Data columns:
catalog, uri or publicId, expectedFile, expectedUri, msg
This DataProvider is copied from JCK ResolveTests' dataMatch1
*/
--- 601,611 ----
}
}
/*
! DataProvider: used to verify CatalogResolver's resolve function.
Data columns:
catalog, uri or publicId, expectedFile, expectedUri, msg
This DataProvider is copied from JCK ResolveTests' dataMatch1
*/
*** 569,574 ****
public void characters(char ch[], int start, int length) throws SAXException {
textContent.append(ch, start, length);
}
}
}
-
--- 789,793 ----
< prev index next >