/**
* Copyright (C) 2008-2010, Squale Project - http://www.squale.org
*
* This file is part of Squale.
*
* Squale is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or any later version.
*
* Squale is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Squale. If not, see <http://www.gnu.org/licenses/>.
*/
package org.squale.welcom.struts.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;
/**
* @author M327837 Pour changer le mod�le de ce commentaire de type g�n�r�, allez � :
* Fen�tre>Pr�f�rences>Java>G�n�ration de code>Code et commentaires
*/
public class WGZIPFilter
implements Filter
{
/**
* La config
*/
private FilterConfig config;
/**
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* javax.servlet.FilterChain)
*/
public void doFilter( final ServletRequest req, final ServletResponse res, final FilterChain chain )
throws IOException, ServletException
{
if ( req instanceof HttpServletRequest )
{
final HttpServletRequest request = (HttpServletRequest) req;
final HttpServletResponse response = (HttpServletResponse) res;
// si le navigateur accepte la compression, on zip le flux
final String ae = request.getHeader( "accept-encoding" );
if ( ( ae != null ) && ( ae.indexOf( "gzip" ) != -1 ) )
{
final GZIPResponseWrapper wrappedResponse = new GZIPResponseWrapper( response );
chain.doFilter( req, wrappedResponse );
wrappedResponse.finishResponse();
return;
}
chain.doFilter( req, res );
}
}
/**
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init( final FilterConfig filterConfig )
{
config = filterConfig;
}
/**
* @see javax.servlet.Filter#destroy()
*/
public void destroy()
{
config = null;
}
}