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