httpResponse = cache.createCacheableResponse(httpRequest, httpResponse);
}
// Wrap request and response
WebloungeRequestImpl request = new WebloungeRequestImpl(httpRequest, siteServlet, environment);
WebloungeResponseImpl response = new WebloungeResponseImpl(httpResponse);
// Configure request and response objects
request.init(site);
response.setRequest(request);
response.setResponseCache(cache);
response.setCharacterEncoding(DEFAULT_RESPONSE_ENCODING);
response.setHeader("X-Powered-By", POWERED_BY);
response.setDateHeader("Date", Calendar.getInstance().getTimeInMillis());
// Notify listeners about starting request
fireRequestStarted(request, response, site);
boolean requestServed = false;
// Ask the registered request handler if they are willing to handle
// the request.
try {
securityService.setSite(site);
request.setUser(securityService.getUser());
for (RequestHandler handler : requestHandler) {
try {
logger.trace("Asking {} to serve {}", handler, request);
if (handler.service(request, response)) {
requestServed = true;
logger.debug("{} served request {}", handler, request);
if (response.hasError()) {
logger.debug("Request processing failed on {}", request);
fireRequestFailed(request, response, site);
} else {
fireRequestDelivered(request, response, site);
}
return;
}
} catch (Throwable t) {
response.invalidate();
String params = RequestUtils.dumpParameters(request);
if (t.getCause() != null) {
t = t.getCause();
}
logger.error("Request handler '{}' failed to handle {} {}", new Object[] {
handler,
request,
params });
logger.error(t.getMessage(), t);
DispatchUtils.sendInternalError(t.getMessage(), request, response);
break;
}
}
} finally {
securityService.setSite(null);
if (requestServed) {
response.endResponse();
response.flushBuffer();
logger.debug("Finished processing of {}", httpRequest.getRequestURI());
} else {
logger.debug("No handler found for {}", request);
DispatchUtils.sendNotFound(request, response);
if (cache != null)