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,

Reply via email to