/* * $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;
}
}
}