|  | @@ -0,0 +1,54 @@
 | 
	
		
			
				|  |  | +package org.springframework.security.ui;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import org.springframework.core.Ordered;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import javax.servlet.http.HttpServletRequest;
 | 
	
		
			
				|  |  | +import javax.servlet.http.HttpServletResponse;
 | 
	
		
			
				|  |  | +import javax.servlet.ServletException;
 | 
	
		
			
				|  |  | +import javax.servlet.FilterChain;
 | 
	
		
			
				|  |  | +import javax.servlet.ServletResponse;
 | 
	
		
			
				|  |  | +import javax.servlet.FilterConfig;
 | 
	
		
			
				|  |  | +import javax.servlet.ServletRequest;
 | 
	
		
			
				|  |  | +import javax.servlet.Filter;
 | 
	
		
			
				|  |  | +import java.io.IOException;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * Implements Ordered interface as required by security namespace configuration and implements unused filter
 | 
	
		
			
				|  |  | + * lifecycle methods and performs casting of request and response to http versions in doFilter method.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * @author Luke Taylor
 | 
	
		
			
				|  |  | + * @version $Id$
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +public abstract class SpringSecurityFilter implements Filter, Ordered {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * Does nothing. We use IoC container lifecycle services instead.
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param filterConfig ignored
 | 
	
		
			
				|  |  | +     * @throws ServletException ignored
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public void init(FilterConfig filterConfig) throws ServletException {
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * Does nothing. We use IoC container lifecycle services instead.
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public void destroy() {
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public final void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
 | 
	
		
			
				|  |  | +        // Do we really need the checks on the types in practice ?
 | 
	
		
			
				|  |  | +        if (!(request instanceof HttpServletRequest)) {
 | 
	
		
			
				|  |  | +            throw new ServletException("Can only process HttpServletRequest");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (!(response instanceof HttpServletResponse)) {
 | 
	
		
			
				|  |  | +            throw new ServletException("Can only process HttpServletResponse");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        doFilterHttp((HttpServletRequest)request, (HttpServletResponse)response, chain);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    protected abstract void doFilterHttp(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException;
 | 
	
		
			
				|  |  | +}
 |