package io.dropwizard.views;

import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;

import org.apache.commons.lang3.exception.ExceptionUtils;
import org.glassfish.jersey.spi.ExtendedExceptionMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

An ExtendedExceptionMapper that returns a 500 error response with a generic HTML error page when a ViewRenderException is the cause.
Since:1.1.0
/** * An {@link ExtendedExceptionMapper} that returns a 500 error response with a generic * HTML error page when a {@link ViewRenderException} is the cause. * * @since 1.1.0 */
@Provider public class ViewRenderExceptionMapper implements ExtendedExceptionMapper<WebApplicationException> { private static final Logger LOGGER = LoggerFactory.getLogger(ViewRenderExceptionMapper.class);
The generic HTML error page template.
/** * The generic HTML error page template. */
public static final String TEMPLATE_ERROR_MSG = "<html>" + "<head><title>Template Error</title></head>" + "<body><h1>Template Error</h1><p>Something went wrong rendering the page</p></body>" + "</html>"; @Override public Response toResponse(WebApplicationException exception) { LOGGER.error("Template Error", exception); return Response.serverError() .type(MediaType.TEXT_HTML_TYPE) .entity(TEMPLATE_ERROR_MSG) .build(); } @Override public boolean isMappable(WebApplicationException e) { return ExceptionUtils.indexOfThrowable(e, ViewRenderException.class) != -1; } }