Created
November 29, 2014 00:15
-
-
Save wakim/0761868bdba859355e8a to your computer and use it in GitHub Desktop.
CustomHttpServletResponseWrapper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package br.com.wakim.teste_jsf.util; | |
import java.io.IOException; | |
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 javax.servlet.http.HttpServletResponse; | |
@WebFilter(urlPatterns={"*.jsf"}) | |
public class Filter implements javax.servlet.Filter { | |
@Override | |
public void destroy() { | |
} | |
@Override | |
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { | |
CustomHttpServletResponseWrapper wrapper = new CustomHttpServletResponseWrapper((HttpServletResponse) response); | |
chain.doFilter(request, wrapper); | |
} | |
@Override | |
public void init(FilterConfig arg0) throws ServletException { | |
} | |
public static class CustomHttpServletResponseWrapper extends javax.servlet.http.HttpServletResponseWrapper { | |
boolean error = false, | |
redirect = false; | |
public CustomHttpServletResponseWrapper(HttpServletResponse response) { | |
super(response); | |
} | |
@Override | |
public void sendError(int sc) throws IOException { | |
if(! error && ! redirect) { | |
super.sendError(sc); | |
} else { | |
if(error) { | |
System.out.println("sendError(" + sc + ") DUPLICADO"); | |
} | |
if(redirect) { | |
System.out.println("sendRedirect ja foi chamado anteriormente"); | |
} | |
} | |
error = true; | |
} | |
@Override | |
public void sendError(int sc, String msg) throws IOException { | |
if(! error && ! redirect) { | |
super.sendError(sc, msg); | |
} else { | |
if(error) { | |
System.out.println("sendError(" + sc + ", " + msg + ") DUPLICADO"); | |
} | |
if(redirect) { | |
System.out.println("sendRedirect ja foi chamado anteriormente"); | |
} | |
} | |
error = true; | |
} | |
@Override | |
public void sendRedirect(String location) throws IOException { | |
if(! redirect && ! error) { | |
super.sendRedirect(location); | |
} else { | |
if(error) { | |
System.out.println("sendError ja foi chamado anteriormente"); | |
} | |
if(redirect) { | |
System.out.println("sendRedirect(" + location + ") DUPLICADO"); | |
} | |
} | |
redirect = true; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment