/* * $Id: LogDiggerWrapperFilter.java 2452 2009-06-25 19:53:48Z pavel $ * * Copyright (c) 2008 AspectWorks, spol. s r.o. */ package com.aspectworks.awf.web; 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; import org.springframework.beans.factory.InitializingBean; import org.springframework.web.context.ServletContextAware; import com.logdigger.connector.servlet.filter.RequestLogCollectorFilter; /** * Wrapper for {@link LogDiggerServletFilter} to enable Spring configuration. * *

It is possible to disable whole LogDigger by setting {@link #setEnabled(boolean)} to false. * This is useful for production deployments. * * @author Pavel Muller * @version $Revision: 2452 $ */ public class LogDiggerWrapperFilter implements Filter, InitializingBean, ServletContextAware { private RequestLogCollectorFilter logDigger = new RequestLogCollectorFilter(); private boolean enabled = true; private ServletContext servletContext; /** * Whether the LogDigger is enabled or not. Default is true. * @param enabled the enabled to set */ public void setEnabled(boolean enabled) { this.enabled = enabled; } /** * @see org.springframework.web.context.ServletContextAware#setServletContext(javax.servlet.ServletContext) */ public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } /** * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet() */ public void afterPropertiesSet() throws Exception { logDigger.init(new LogDiggerFilterConfig()); } /** * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (enabled) { logDigger.doFilter(request, response, chain); } else { chain.doFilter(request, response); } } /** * @see javax.servlet.Filter#destroy() */ public void destroy() { } /** * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ public void init(FilterConfig filterConfig) throws ServletException { } /** * Mock filter config for the LogDigger. * @author Pavel Muller * @version $Revision: 2452 $ */ private final class LogDiggerFilterConfig implements FilterConfig { public String getFilterName() { return "logDiggerFilter"; } public String getInitParameter(String name) { return null; } @SuppressWarnings("unchecked") public Enumeration getInitParameterNames() { return new Enumeration() { public boolean hasMoreElements() { return false; } public Object nextElement() { return null; } }; } public ServletContext getServletContext() { return servletContext; } } }