diff --git a/org.eclipse.wildwebdeveloper.tests/plugin.xml b/org.eclipse.wildwebdeveloper.tests/plugin.xml index 189b205f55..0c434d53bc 100644 --- a/org.eclipse.wildwebdeveloper.tests/plugin.xml +++ b/org.eclipse.wildwebdeveloper.tests/plugin.xml @@ -5,7 +5,7 @@ point="org.eclipse.wildwebdeveloper.json.schema"> + url="https://www.schemastore.org/dependabot"> DocumentBuilderFactory.newDefaultInstance().newDocumentBuilder().parse(systemCatalog)); // root Node catalogNode = systemCatalogDom.getLastChild(); @@ -276,4 +275,47 @@ public void testXMLCatalog() throws Exception { // Uninstall bundle once again catalogBundle.uninstall(); } + + /** + * Workaround for erratic runtime exceptions because of catalog.dtd temporarily not being available online: + *
{@code
+     *   java.io.FileNotFoundException: http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd
+     *       at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:2010)
+     *       at ...
+     *       at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:206)
+     *       at org.eclipse.wildwebdeveloper.tests.TestXML.testXMLCatalog(TestXML.java:246)
+     *       at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+     *       at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
+     *       at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
+     * }
+ */ + private T runWithLocalCatalogOnlyForTestXMLCatalog(Callable callable) throws Exception { + var origSysProps = new HashMap(); + List.of( // + "javax.xml.useCatalog", // + "javax.xml.catalog.files", // + "javax.xml.catalog.prefer", // + "javax.xml.catalog.resolve" + ).forEach(k -> origSysProps.put(k, System.getProperty(k))); + + var catalogRedirect = Path.of("src/org/eclipse/wildwebdeveloper/tests/catalog/oasis-catalog-redirect.xml"); + assertTrue(Files.exists(catalogRedirect)); + // enforce usage of local catalog.dtd file + System.setProperty("javax.xml.useCatalog", "true"); + System.setProperty("javax.xml.catalog.files", catalogRedirect.toUri().toString()); + System.setProperty("javax.xml.catalog.prefer", "system"); + System.setProperty("javax.xml.catalog.resolve", "strict"); + try { + return callable.call(); + } finally { + // restore previous behaviour + for (var e : origSysProps.entrySet()) { + if (e.getValue() == null) { + System.clearProperty(e.getKey()); + } else { + System.setProperty(e.getKey(), e.getValue()); + } + } + } + } } diff --git a/org.eclipse.wildwebdeveloper.tests/src/org/eclipse/wildwebdeveloper/tests/TestYaml.java b/org.eclipse.wildwebdeveloper.tests/src/org/eclipse/wildwebdeveloper/tests/TestYaml.java index c585534876..287beef03d 100644 --- a/org.eclipse.wildwebdeveloper.tests/src/org/eclipse/wildwebdeveloper/tests/TestYaml.java +++ b/org.eclipse.wildwebdeveloper.tests/src/org/eclipse/wildwebdeveloper/tests/TestYaml.java @@ -84,11 +84,13 @@ private void testErrorFile(String name) throws Exception { @Test public void testSchemaExtensionPoint() throws Exception { + // loads remote file https://www.schemastore.org/dependabot as configured in plugin.xml testErrorFile("dep.yml"); } @Test public void testSchemaExtensionPointUsingPlatformURL() throws Exception { + // loads local file platform:/plugin/org.eclipse.wildwebdeveloper.tests/resources/dependabot.json as configured in plugin.xml testErrorFile("depp.yml"); } } diff --git a/org.eclipse.wildwebdeveloper.tests/src/org/eclipse/wildwebdeveloper/tests/catalog/catalog-1.0.dtd b/org.eclipse.wildwebdeveloper.tests/src/org/eclipse/wildwebdeveloper/tests/catalog/catalog-1.0.dtd new file mode 100644 index 0000000000..dbe4b27b38 --- /dev/null +++ b/org.eclipse.wildwebdeveloper.tests/src/org/eclipse/wildwebdeveloper/tests/catalog/catalog-1.0.dtd @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/org.eclipse.wildwebdeveloper.tests/src/org/eclipse/wildwebdeveloper/tests/catalog/oasis-catalog-redirect.xml b/org.eclipse.wildwebdeveloper.tests/src/org/eclipse/wildwebdeveloper/tests/catalog/oasis-catalog-redirect.xml new file mode 100644 index 0000000000..849dc82f36 --- /dev/null +++ b/org.eclipse.wildwebdeveloper.tests/src/org/eclipse/wildwebdeveloper/tests/catalog/oasis-catalog-redirect.xml @@ -0,0 +1,8 @@ + + + + + + + +