This is an automated email from the ASF dual-hosted git repository. kwin pushed a commit to branch bugfix/SLING-13030-fix-non-opaque-uri-without-path in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-api.git
commit 077842090bcfe1195d026114507b9240d6977daa Author: Konrad Windszus <[email protected]> AuthorDate: Fri Dec 12 11:43:35 2025 +0100 SLING-13030 Fix creation of non-opaque SlingUri's without path --- .../java/org/apache/sling/api/uri/SlingUriBuilder.java | 3 +-- .../java/org/apache/sling/api/uri/SlingUriTest.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/sling/api/uri/SlingUriBuilder.java b/src/main/java/org/apache/sling/api/uri/SlingUriBuilder.java index abea56f..582b925 100644 --- a/src/main/java/org/apache/sling/api/uri/SlingUriBuilder.java +++ b/src/main/java/org/apache/sling/api/uri/SlingUriBuilder.java @@ -227,7 +227,6 @@ public class SlingUriBuilder { String path = uri.getRawPath(); boolean pathExists = isNotBlank(path); String uriQuery = uri.getRawQuery(); - boolean schemeSpecificRelevant = !pathExists && uriQuery == null; String uriHost = uri.getHost(); if (FILE_SCHEME.equals(uri.getScheme()) && uriHost == null) { uriHost = ""; // ensure three slashes in file URIs without host @@ -240,7 +239,7 @@ public class SlingUriBuilder { .setPath(pathExists ? path : null) .setQuery(uriQuery) .setFragment(uri.getRawFragment()) - .setSchemeSpecificPart(schemeSpecificRelevant ? uri.getRawSchemeSpecificPart() : null); + .setSchemeSpecificPart(uri.isOpaque() ? uri.getRawSchemeSpecificPart() : null); } /** diff --git a/src/test/java/org/apache/sling/api/uri/SlingUriTest.java b/src/test/java/org/apache/sling/api/uri/SlingUriTest.java index b9ce724..fdbe0f5 100644 --- a/src/test/java/org/apache/sling/api/uri/SlingUriTest.java +++ b/src/test/java/org/apache/sling/api/uri/SlingUriTest.java @@ -1009,6 +1009,23 @@ public class SlingUriTest { assertNull("Suffix resource is null if suffix is null", slingUriNoSuffix.getSuffixResource()); } + @Test + public void testWithSchemeAndHostWithoutQueryAndPath() { + SlingUri testUri = + SlingUriBuilder.parse("https://sling.apache.org", null).build(); + assertEquals("https://sling.apache.org", testUri.toUri().toASCIIString()); + } + + @Test + public void testHostWithoutSchemeAndQueryAndPath() { + SlingUri testUri = + SlingUriBuilder.parse("sling.apache.org", null).build(); + assertEquals("sling.apache.org", testUri.toUri().toASCIIString()); + testUri = + SlingUriBuilder.parse("//sling.apache.org", null).build(); + assertEquals("//sling.apache.org", testUri.toUri().toASCIIString()); + } + // -- helper methods public static void testUri( String testUri,
