private static SlingUriBuilder parseBestEffort()

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);
        }
    }