in src/main/java/org/apache/sling/api/uri/SlingUriBuilder.java [198:217]
public static SlingUriBuilder createFrom(@NotNull URI uri, @Nullable ResourceResolver resourceResolver) {
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
}
return create()
.setResourceResolver(resourceResolver)
.setScheme(uri.getScheme())
.setUserInfo(uri.getRawUserInfo())
.setHost(uriHost)
.setPort(uri.getPort())
.setPath(pathExists ? path : null)
.setQuery(uriQuery)
.setFragment(uri.getRawFragment())
.setSchemeSpecificPart(schemeSpecificRelevant ? uri.getRawSchemeSpecificPart() : null);
}