001 package com.khubla.pragmatach.framework.filter; 002 003 import java.io.IOException; 004 005 import javax.servlet.Filter; 006 import javax.servlet.FilterChain; 007 import javax.servlet.FilterConfig; 008 import javax.servlet.ServletException; 009 import javax.servlet.ServletRequest; 010 import javax.servlet.ServletResponse; 011 import javax.servlet.http.HttpServletRequest; 012 import javax.servlet.http.HttpServletResponse; 013 014 import com.khubla.pragmatach.framework.annotation.Route; 015 import com.khubla.pragmatach.framework.api.Request; 016 import com.khubla.pragmatach.framework.controller.PragmatachControllerFactory; 017 import com.khubla.pragmatach.framework.controller.impl.system.HttpErrorController; 018 019 /** 020 * @author tome 021 */ 022 public class ErrorHandlerFilter implements Filter { 023 @Override 024 public void destroy() { 025 } 026 027 @Override 028 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { 029 HttpServletResponse response = (HttpServletResponse) servletResponse; 030 final HttpServletRequest request = (HttpServletRequest) servletRequest; 031 try { 032 if (!(response instanceof ErrorHandlerFilterRequestWrapper)) { 033 response = new ErrorHandlerFilterRequestWrapper(response); 034 } 035 filterChain.doFilter(servletRequest, response); 036 } catch (final Exception e) { 037 final HttpErrorController httpErrorController = PragmatachControllerFactory.getHttpErrorController(new Request(request, response, Route.HttpMethod.get, null), e); 038 try { 039 httpErrorController.render().render(response); 040 } catch (final Exception e2) { 041 throw new ServletException(e2); 042 } 043 } 044 } 045 046 @Override 047 public void init(FilterConfig filterConfig) throws ServletException { 048 } 049 }