if (ResourceUtil.isNonExistingResource(request.getResource())) {
throw new ResourceNotFoundException(
request.getResource().getPath(), "No resource found");
}
Servlet rendererServlet;
String ext = request.getRequestPathInfo().getExtension();
if (ext == null) {
rendererServlet = streamerServlet;
} else {
rendererServlet = rendererMap.get(ext);
}
// fail if we should not just stream or we cannot support the ext.
if (rendererServlet == null) {
request.getRequestProgressTracker().log(
"No renderer for extension " + ext);
// if this is an included request, sendError() would fail
// as the response is already committed, in this case we just
// do nothing (but log an error message)
if (response.isCommitted()
|| request.getAttribute(SlingConstants.ATTR_REQUEST_SERVLET) != null) {
logger.error(
"No renderer for extension {}, cannot render resource {}",
ext, request.getResource());
} else {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
}
return;
}
request.getRequestProgressTracker().log(
"Using " + rendererServlet.getClass().getName()
+ " to render for extension=" + ext);
rendererServlet.service(request, response);
}