Skip to content

Instantly share code, notes, and snippets.

@wakim
Created November 29, 2014 00:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wakim/0761868bdba859355e8a to your computer and use it in GitHub Desktop.
Save wakim/0761868bdba859355e8a to your computer and use it in GitHub Desktop.
CustomHttpServletResponseWrapper
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