in src/main/java/org/apache/sling/api/uri/SlingUriBuilder.java [240:273]
private static SlingUriBuilder parseBestEffort(String uriStr, ResourceResolver resourceResolver) {
Matcher matcher = Pattern.compile(BEST_EFFORT_INVALID_URI_MATCHER).matcher(uriStr);
matcher.find();
String scheme = matcher.group(1);
String userInfo = matcher.group(2);
String host = matcher.group(3);
String port = matcher.groupCount() >= 4 ? matcher.group(4) : null;
String path = matcher.groupCount() >= 5 ? matcher.group(5) : null;
String query = matcher.groupCount() >= 6 ? matcher.group(6) : null;
String fragment = matcher.groupCount() >= 7 ? matcher.group(7) : null;
if (!isBlank(scheme) && isBlank(host)) {
// opaque case
return create()
.setResourceResolver(resourceResolver)
.setScheme(scheme)
.setSchemeSpecificPart(path)
.setFragment(fragment);
} else if (!isBlank(host) || !isBlank(path)) {
return create()
.setResourceResolver(resourceResolver)
.setScheme(scheme)
.setUserInfo(userInfo)
.setHost(host)
.setPort(port != null ? Integer.parseInt(port) : -1)
.setPath(path)
.setQuery(query)
.setFragment(fragment);
} else {
return create()
.setResourceResolver(resourceResolver)
.setSchemeSpecificPart(uriStr);
}
}