/*
* Copyright 2003-2006 Rick Knowles <winstone-devel at lists sourceforge net>
* Distributed under the terms of either:
* - the common development and distribution license (CDDL), v1.0; or
* - the GNU Lesser General Public License, v2.1 or later
*/
package winstone.testApplication.filters;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* Simple timing and request dumping test filter
*
* @author <a href="mailto:rick_knowles@hotmail.com">Rick Knowles</a>
* @version $Id: TimingFilter.java,v 1.2 2006/02/28 07:32:50 rickknowles Exp $
*/
public class TimingFilter implements Filter {
private boolean dumpRequestParams;
private ServletContext context;
public void init(FilterConfig config) {
String dumpRequestParams = config
.getInitParameter("dumpRequestParameters");
this.dumpRequestParams = ((dumpRequestParams != null) && dumpRequestParams
.equalsIgnoreCase("true"));
this.context = config.getServletContext();
}
public void destroy() {
this.context = null;
}
/**
* Times the execution of the rest of the filter chain, optionally dumping
* the request parameters to the servlet context log
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (this.dumpRequestParams)
for (Enumeration paramNames = request.getParameterNames(); paramNames
.hasMoreElements();) {
String name = (String) paramNames.nextElement();
this.context.log("Request parameter: " + name + "="
+ request.getParameter(name));
}
long startTime = System.currentTimeMillis();
chain.doFilter(request, response);
this.context.log("Filter chain executed in "
+ (System.currentTimeMillis() - startTime) + "ms");
}
}