This is an automated email from the ASF dual-hosted git repository.
coheigea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-xmlschema.git
The following commit(s) were added to refs/heads/master by this push:
new d91d470a Fix test on JDK8 (#186)
d91d470a is described below
commit d91d470a238df33ffdc094da9b7a50d5dfd33518
Author: Colm O hEigeartaigh <[email protected]>
AuthorDate: Fri Sep 25 16:12:16 2026 +0100
Fix test on JDK8 (#186)
---
.../test/java/tests/DefaultURIResolverTest.java | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/xmlschema-core/src/test/java/tests/DefaultURIResolverTest.java
b/xmlschema-core/src/test/java/tests/DefaultURIResolverTest.java
index e3a2cd7b..f1339e3d 100644
--- a/xmlschema-core/src/test/java/tests/DefaultURIResolverTest.java
+++ b/xmlschema-core/src/test/java/tests/DefaultURIResolverTest.java
@@ -144,11 +144,31 @@ public class DefaultURIResolverTest extends Assert {
}
}
+ /**
+ * Refused, without requiring a particular reason. Which layer refuses a
location depends on the
+ * running JDK: composing a base URI with a scheme the JDK has no handler
for fails in
+ * {@link java.net.URL} before this resolver's own checks see it. Both
outcomes are a refusal,
+ * which is what matters here.
+ */
+ private static void assertRefused(String schemaLocation, String baseUri) {
+ DefaultURIResolver resolver = new DefaultURIResolver();
+ try {
+ resolver.resolveEntity("urn:x", schemaLocation, baseUri);
+ fail("The location \"" + schemaLocation + "\" must be refused.");
+ } catch (XmlSchemaException expected) {
+ // expected, whichever layer refused it
+ }
+ }
+
@Test
public void testDisallowedSchemesAreRefusedFromALocalBase() {
assertSchemeRefused("mailto:[email protected]", localBase());
- assertSchemeRefused("jrt:/java.base/java/lang/Object.class",
localBase());
assertSchemeRefused("ftp://attacker.example/x.xsd", localBase());
+ // jrt: has no URL handler before Java 9, where composing it with the
base fails in
+ // java.net.URL rather than reaching the scheme check, so only require
the refusal.
+ assertRefused("jrt:/java.base/java/lang/Object.class", localBase());
+ // A scheme no JDK has a handler for, to cover that path on every JDK.
+ assertRefused("nosuchscheme:/x.xsd", localBase());
}
@Test