/* 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.FilterConfig;
import javax.servlet.FilterChain;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** This filter puts in the request various objects useful for an katari
* applicaion, including 'baseweb', 'request' and 'response'.
*
* The 'baseweb' is an url where the web application points to.
*/
public final class RequestVariablesFilter implements Filter {
/** The class logger.
*/
private static Logger log = LoggerFactory.getLogger(
RequestVariablesFilter.class);
/** {@inheritDoc}
*
* This implementation does nothing.
*/
public void init(final FilterConfig filterConfig) throws ServletException {
log.trace("Entering init");
log.trace("Leaving init");
}
/** Filters the request.
*
* Adds the following attributes to the request: baseweb, request and
* response. baseweb is the original context path.
*
* @param request The http/https request to filter. It cannot be null.
*
* @param response The http/https response. It cannot be null.
*
* @param chain The filter chain. It cannot be null.
*
* @throws IOException in case of an io error.
*
* @throws ServletException in case of a generic error.
*/
public void doFilter(final ServletRequest request, final ServletResponse
response, final FilterChain chain) throws IOException, ServletException {
if (request instanceof HttpServletRequest) {
HttpServletRequest servletRequest = (HttpServletRequest) request;
servletRequest.setAttribute("request", request);
servletRequest.setAttribute("response", response);
servletRequest.setAttribute("baseweb", servletRequest.getContextPath());
}
chain.doFilter(request, response);
}
/** {@inheritDoc}
*
* This implementation does nothing.
*/
public void destroy() {
}
}