package com.fp.frontend.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.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Clase que se encarga de comprimir el contenido * * @author Jorge Vaca * @version 2.1 */ public class GZIPFilter implements Filter { /** * Metodo que sobrescribe el metodo init de la clase Filter Este metodo no debe hacer nada * * @param filterConfig * @throws ServletException */ @Override public void init(FilterConfig filterConfig) throws ServletException { } /** * Metodo que se encarga de filtrar los contenidos * * @param request * @param response * @param chain * @throws IOException * @throws ServletException */ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (request instanceof HttpServletRequest) { HttpServletRequest httpServletRequest = (HttpServletRequest) request; HttpServletResponse httpServletResponse = (HttpServletResponse) response; try { String aceptEncoding = httpServletRequest.getHeader("accept-encoding"); if ((aceptEncoding != null) && (aceptEncoding.indexOf("gzip") != -1)) { GZIPResponseWrapper wrappedResponse = new GZIPResponseWrapper(httpServletResponse); chain.doFilter(request, wrappedResponse); wrappedResponse.finishResponse(); return; } } catch (Exception e) { return; } chain.doFilter(request, response); } } /** * Metodo que sobrescribe el metodo destroy de la clase Filter Este metodo no debe hacer nada */ @Override public void destroy() { } }