From dbf6e0b145236e1125a34c90c227f6a64d99343c Mon Sep 17 00:00:00 2001 From: Rob Oxspring Date: Mon, 20 Jan 2020 00:46:13 +0000 Subject: [PATCH] Allow redirects to schemas with jar:file: URI --- .../fge/jsonschema/core/util/URIUtils.java | 2 +- .../jsonschema/core/util/URIUtilsTest.java | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/github/fge/jsonschema/core/util/URIUtils.java b/src/main/java/com/github/fge/jsonschema/core/util/URIUtils.java index 3bd4db85..97131529 100644 --- a/src/main/java/com/github/fge/jsonschema/core/util/URIUtils.java +++ b/src/main/java/com/github/fge/jsonschema/core/util/URIUtils.java @@ -188,7 +188,7 @@ public void check(final URI argument) final JsonRef ref = JsonRef.fromURI(argument); BUNDLE.checkArgumentPrintf(ref.isAbsolute(), "uriChecks.notAbsoluteRef", argument); - BUNDLE.checkArgumentPrintf(!argument.getPath().endsWith("/"), + BUNDLE.checkArgumentPrintf(argument.getPath() == null || !argument.getPath().endsWith("/"), "uriChecks.endingSlash", argument); } }; diff --git a/src/test/java/com/github/fge/jsonschema/core/util/URIUtilsTest.java b/src/test/java/com/github/fge/jsonschema/core/util/URIUtilsTest.java index a5a23c8c..2d23b93e 100644 --- a/src/test/java/com/github/fge/jsonschema/core/util/URIUtilsTest.java +++ b/src/test/java/com/github/fge/jsonschema/core/util/URIUtilsTest.java @@ -179,6 +179,31 @@ public void invalidPathURIsAreRejected(final String uri, final String key) } } + @DataProvider + public Iterator validSchemaURIs() + { + final List list = Lists.newArrayList(); + + String uri; + + uri = "http://example.com/schema"; + list.add(new Object[] { uri }); + + uri = "file:/path/to/schema.json"; + list.add(new Object[] { uri }); + + uri = "jar:file:/path/to/container.jar!/internal/path/to/schema.json"; + list.add(new Object[] { uri }); + + return list.iterator(); + } + + @Test(dataProvider = "validSchemaURIs") + public void validSchemaURIsAreAccepted(final String uri) + { + URIUtils.checkSchemaURI(URI.create(uri)); + } + @DataProvider public Iterator invalidSchemaURIs() {