private void renderDirectory()

in src/main/java/org/apache/sling/servlets/get/impl/helpers/StreamRenderer.java [280:339]


    private void renderDirectory(
            final SlingJakartaHttpServletRequest request,
            final SlingJakartaHttpServletResponse response,
            final boolean included)
            throws IOException {

        // request is included or committed, not rendering index
        if (included || response.isCommitted()) {
            request.getRequestProgressTracker()
                    .log("StreamRendererServlet: Not rendering index, response is committed or request included");
            log.warn("StreamRendererServlet: Not rendering index, response is committed or request included");
            return;
        }

        Resource resource = request.getResource();
        ResourceResolver resolver = request.getResourceResolver();

        // check for an index file
        for (String index : indexFiles) {
            Resource fileRes = resolver.getResource(resource, index);
            if (fileRes != null && !ResourceUtil.isSyntheticResource(fileRes)) {

                setHeaders(fileRes, response);

                if (isHeadRequest(request)) {
                    return;
                }

                // include the index resource with no suffix and selectors !
                RequestDispatcherOptions rdo = new RequestDispatcherOptions();
                rdo.setReplaceSuffix("");
                rdo.setReplaceSelectors("");

                RequestDispatcher dispatcher;
                if (index.indexOf('.') < 0) {
                    String filePath = fileRes.getPath() + ".html";
                    dispatcher = request.getRequestDispatcher(filePath, rdo);
                } else {
                    dispatcher = request.getRequestDispatcher(fileRes, rdo);
                }

                try {
                    dispatcher.include(request, response);
                } catch (ServletException e) {
                    throw new IOException(e);
                }
                return;
            }
        }

        if (index) {
            if (isHeadRequest(request)) {
                setHeaders(resource, response);
                return;
            }
            renderIndex(resource, response);
        } else {
            response.sendError(HttpServletResponse.SC_FORBIDDEN);
        }
    }