in src/main/java/org/apache/sling/servlets/resolver/internal/defaults/DefaultErrorHandlerServlet.java [66:91]
public void service(ServletRequest req, ServletResponse res)
throws IOException {
// get settings
Integer scObject = (Integer) req.getAttribute(SlingConstants.ERROR_STATUS);
String statusMessage = (String) req.getAttribute(SlingConstants.ERROR_MESSAGE);
String requestUri = (String) req.getAttribute(SlingConstants.ERROR_REQUEST_URI);
String servletName = (String) req.getAttribute(SlingConstants.ERROR_SERVLET_NAME);
// ensure values
int statusCode = (scObject != null)
? scObject.intValue()
: HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
if (statusMessage == null) {
statusMessage = statusToString(statusCode);
}
//properly consider the 'Accept' header conditions to decide whether to send json or html back
if (req instanceof HttpServletRequest &&
JSON_CONTENT_TYPE.equals(new MediaRangeList((HttpServletRequest)req).prefer(HTML_CONTENT_TYPE, JSON_CONTENT_TYPE))) {
renderJson(req, res, statusMessage, requestUri, servletName, statusCode);
} else {
//default to HTML rendering
renderHtml(req, res, statusMessage, requestUri, servletName, statusCode);
}
}