/* vim: set ts=2 et sw=2 cindent fo=qroca: */
package com.globant.katari.core.web;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** This filter sets the request encoding to UTF-8.
*
* It is vital that this is always the first filter in the chain to ensure that
* the encoding is set before any <code>request.getParameter()</code> is
* performed. The safest way is to put it as the first filter to execute.
*/
public final class Utf8EncodingFilter implements Filter {
/** The class logger.
*/
private static Logger log = LoggerFactory.getLogger(Utf8EncodingFilter.class);
/** Initializes the filter. It currently does nothing.
*
* @param filterConfig The provided filter configuration.
* @throws ServletException in case of error.
*/
public void init(final FilterConfig filterConfig) throws ServletException {
log.trace("Entering init");
// Do nothing.
log.trace("Leaving init");
}
/** {@inheritDoc}
*/
public void doFilter(final ServletRequest request, final ServletResponse
response, final FilterChain chain) throws IOException,
ServletException {
log.trace("Entering doFilter.");
// TODO This is forcing UTF-8 encoding, we've got to see what happens if
// the browser sends a different encoding.
//if (servletRequest.getCharacterEncoding() == null) {
request.setCharacterEncoding("UTF-8");
//}
chain.doFilter(request, response);
log.trace("Leaving doFilter.");
}
/** Called by the container when the filter is about to be destroyed.
*
* This implementation is empty.
*/
public void destroy() {
log.trace("Entering destroy");
// Do nothing.
log.trace("Leaving destroy");
}
}