This is an automated email from the ASF dual-hosted git repository.
ghenzler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-api.git
The following commit(s) were added to refs/heads/master by this push:
new 8e6f6c3 SLING-9745 Handle absolute URIs without scheme correctly
8e6f6c3 is described below
commit 8e6f6c3e19b86d9cf0b0647a9ab8af1c0f094bb0
Author: georg.henzler <[email protected]>
AuthorDate: Wed Sep 23 20:39:56 2020 +0200
SLING-9745 Handle absolute URIs without scheme correctly
---
.../org/apache/sling/api/uri/SlingUriBuilder.java | 30 ++++++++--------
.../org/apache/sling/api/uri/SlingUriTest.java | 40 ++++++++++++++++++++++
2 files changed, 54 insertions(+), 16 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 29ef397..7088672 100644
--- a/src/main/java/org/apache/sling/api/uri/SlingUriBuilder.java
+++ b/src/main/java/org/apache/sling/api/uri/SlingUriBuilder.java
@@ -657,23 +657,21 @@ public class SlingUriBuilder {
private String toStringInternal(boolean includeScheme, boolean
includeFragment) {
StringBuilder requestUri = new StringBuilder();
-
- if (isAbsolute()) {
- if (includeScheme) {
- requestUri.append(scheme + CHAR_COLON);
+
+ if (includeScheme && isAbsolute()) {
+ requestUri.append(scheme + CHAR_COLON);
+ }
+ if (isNotBlank(host)) {
+ requestUri.append(CHAR_SLASH + CHAR_SLASH);
+ if (isNotBlank(userInfo)) {
+ requestUri.append(userInfo + CHAR_AT);
}
- if (schemeSpecificPart == null) {
- requestUri.append(CHAR_SLASH + CHAR_SLASH);
- if (isNotBlank(userInfo)) {
- requestUri.append(userInfo + CHAR_AT);
- }
- requestUri.append(host);
- if (port > 0
- && !(scheme.equals(HTTP_SCHEME) && port ==
HTTP_DEFAULT_PORT)
- && !(scheme.equals(HTTPS_SCHEME) && port ==
HTTPS_DEFAULT_PORT)) {
- requestUri.append(CHAR_COLON);
- requestUri.append(port);
- }
+ requestUri.append(host);
+ if (port > 0
+ && !(HTTP_SCHEME.equals(scheme) && port ==
HTTP_DEFAULT_PORT)
+ && !(HTTPS_SCHEME.equals(scheme) && port ==
HTTPS_DEFAULT_PORT)) {
+ requestUri.append(CHAR_COLON);
+ requestUri.append(port);
}
}
if (schemeSpecificPart != 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 8faaa71..3e11d9a 100644
--- a/src/test/java/org/apache/sling/api/uri/SlingUriTest.java
+++ b/src/test/java/org/apache/sling/api/uri/SlingUriTest.java
@@ -81,6 +81,46 @@ public class SlingUriTest {
}
@Test
+ public void testFullUriWithoutSchemeSimple() {
+
+ String testUriStr = "//cdn.example.com/test/js_file.js";
+
+ testUri(testUriStr, false, false, false, false, false, slingUri -> {
+ assertEquals(null, slingUri.getScheme());
+ assertEquals("//cdn.example.com/test/js_file.js",
slingUri.getSchemeSpecificPart());
+ assertEquals(null, slingUri.getUserInfo());
+ assertEquals("cdn.example.com", slingUri.getHost());
+ assertEquals(-1, slingUri.getPort());
+ assertEquals("/test/js_file", slingUri.getResourcePath());
+ assertEquals(null, slingUri.getSelectorString());
+ assertEquals("js", slingUri.getExtension());
+ assertEquals(null, slingUri.getSuffix());
+ assertEquals(null, slingUri.getQuery());
+ }, asList(resolver, null));
+
+ }
+
+ @Test
+ public void testFullUriWithoutSchemeComplex() {
+
+ String testUriStr =
"//user:[email protected]:3000/test/js_file.txt.js?par1=val1&par2=val2";
+
+ testUri(testUriStr, false, false, false, false, false, slingUri -> {
+ assertEquals(null, slingUri.getScheme());
+
assertEquals("//user:[email protected]:3000/test/js_file.txt.js?par1=val1&par2=val2",
slingUri.getSchemeSpecificPart());
+ assertEquals("user:pw", slingUri.getUserInfo());
+ assertEquals("cdn.example.com", slingUri.getHost());
+ assertEquals(3000, slingUri.getPort());
+ assertEquals("/test/js_file", slingUri.getResourcePath());
+ assertEquals("txt", slingUri.getSelectorString());
+ assertEquals("js", slingUri.getExtension());
+ assertEquals(null, slingUri.getSuffix());
+ assertEquals("par1=val1&par2=val2", slingUri.getQuery());
+ }, asList(resolver, null));
+
+ }
+
+ @Test
public void testAbsolutePathSlingUri() {
String testUriStr =
"/test/to/path.sel1.json/suffix/path?p1=2&p2=3#frag3939";