/** * */ package com.teefun.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import freemarker.template.TemplateException; /** * Freemarker exception handler. * * @author Rajh * */ @WebFilter(value = "/*", asyncSupported = true) public class FreemarkerErrorHandlerFilter implements Filter { /** * Class logger. */ private static final Logger LOGGER = LoggerFactory.getLogger(FreemarkerErrorHandlerFilter.class); @Override public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain filterChain) throws IOException, ServletException { try { filterChain.doFilter(request, response); } catch (final Exception ex) { if (ex instanceof TemplateException) { LOGGER.error("Error in freemarker.", ex); } else { LOGGER.error("Error while processing request.", ex); } throw ex; } } @Override public void init(final FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { } }