com.elasticpath.sfweb.filters
Class EpFilterToBeanProxy

java.lang.Object
  extended by com.elasticpath.sfweb.filters.EpFilterToBeanProxy
All Implemented Interfaces:
javax.servlet.Filter

public class EpFilterToBeanProxy
extends java.lang.Object
implements javax.servlet.Filter

Delegates Filter requests to a Spring-managed bean.

This class acts as a proxy on behalf of a target Filter that is defined in the Spring bean context. It is necessary to specify which target Filter should be proxied as a filter initialization parameter.

On filter initialisation, the class will use Spring's WebApplicationContextUtils.getWebApplicationContext(ServletContext sc) method to obtain an ApplicationContext instance. It will expect to find the target Filter in this ApplicationContext.

To use this filter, it is necessary to specify one of the following filter initialization parameters:

If both initialization parameters are specified, targetBean takes priority.

An additional initialization parameter, init, is also supported. If set to "lazy" the initialization will take place on the first HTTP request, rather than at filter creation time. This makes it possible to use FilterToBeanProxy with the Spring ContextLoaderServlet. Where possible you should not use this initialization parameter, instead using ContextLoaderListener.

A final optional initialization parameter, lifecycle, determines whether the servlet container or the IoC container manages the lifecycle of the proxied filter. When possible you should write your filters to be managed via the IoC container interfaces such as InitializingBean and DisposableBean. If you cannot control the filters you wish to proxy (eg you do not have their source code) you might need to allow the servlet container to manage lifecycle via the Filter.init(javax.servlet.FilterConfig) and Filter.destroy() methods. If this case, set the lifecycle initialization parameter to servlet-container-managed. If the parameter is any other value, servlet container lifecycle methods will not be delegated through to the proxy.


Constructor Summary
EpFilterToBeanProxy()
           
 
Method Summary
 void destroy()
          Called by the web container to indicate to a filter that it is being taken out of service.
 void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain)
          Filter the request.
 void init(javax.servlet.FilterConfig filterConfig)
          Initialize the filter.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EpFilterToBeanProxy

public EpFilterToBeanProxy()
Method Detail

destroy

public void destroy()
Called by the web container to indicate to a filter that it is being taken out of service.

Specified by:
destroy in interface javax.servlet.Filter

doFilter

public void doFilter(javax.servlet.ServletRequest request,
                     javax.servlet.ServletResponse response,
                     javax.servlet.FilterChain chain)
              throws java.io.IOException,
                     javax.servlet.ServletException
Filter the request.

Specified by:
doFilter in interface javax.servlet.Filter
Parameters:
request - the request
response - the response
chain - the filter chain
Throws:
java.io.IOException - in case of error
javax.servlet.ServletException - in case of error

init

public void init(javax.servlet.FilterConfig filterConfig)
          throws javax.servlet.ServletException
Initialize the filter.

Specified by:
init in interface javax.servlet.Filter
Parameters:
filterConfig - a filter configuration object
Throws:
javax.servlet.ServletException - in case of error