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 @@
+
+
+
+
+
+
+
+