private static Resource recursiveResolution()

in src/main/java/org/apache/sling/scripting/sightly/engine/ResourceResolution.java [121:144]


    private static Resource recursiveResolution(Resource base, String path) {
        ResourceResolver resolver = base.getResourceResolver();
        for (int iteration = 0; iteration < RECURSION_LIMIT; iteration++) {
            Resource resource = null;
            if (path.startsWith("/")) {
                resource = getScriptResource(resolver, path);
            } else {
                String normalizedPath = ResourceUtil.normalize(base.getPath() + "/" + path);
                if (normalizedPath != null) {
                    resource = getScriptResource(resolver, normalizedPath);
                }
            }
            if (resource != null) {
                return resource;
            }
            base = findSuperComponent(base);
            if (base == null) {
                return null;
            }
        }
        // at this point we have reached recursion limit
        throw new IllegalStateException(
                "Searching for resource in component chain took more than " + RECURSION_LIMIT + " steps");
    }