| package com.robin.erp.fwk.security; | 
| import java.io.IOException; | 
 | 
| import javax.Servlet.Filter; | 
| import javax.servlet.FilterChain; | 
| import javax.servlet.FilterConfig; | 
| import javax.servlet.ServletException; | 
| import javax.servlet.ServletRequest; | 
| import javax.servlet.ServletResponse; | 
 | 
| import org.springframework.security.access.SecurityMetadataSource; | 
| import org.springframework.security.access.intercept.AbstractSecurityInterceptor; | 
| import org.springframework.security.access.intercept.InterceptorStatusToken; | 
| import org.springframework.security.web.FilterInvocation; | 
| import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource; | 
 | 
| public class MyFilterSecurityInterceptor extends AbstractSecurityInterceptor | 
|         implements Filter { | 
 | 
|     private FilterInvocationSecurityMetadataSource securityMetadataSource; | 
 | 
|     // ~ Methods | 
|     // ======================================================================================================== | 
 | 
|     /** *//** | 
|      * Method that is actually called by the filter chain. Simply delegates to | 
|      * the {@link #invoke(FilterInvocation)} method. | 
|      *  | 
|      * @param request | 
|      *            the servlet request | 
|      * @param response | 
|      *            the servlet response | 
|      * @param chain | 
|      *            the filter chain | 
|      *  | 
|      * @throws IOException | 
|      *             if the filter chain fails | 
|      * @throws ServletException | 
|      *             if the filter chain fails | 
|      */ | 
|     public void doFilter(ServletRequest request, ServletResponse response, | 
|             FilterChain chain) throws IOException, ServletException { | 
|         FilterInvocation fi = new FilterInvocation(request, response, chain); | 
|         invoke(fi); | 
|     } | 
 | 
|     public FilterInvocationSecurityMetadataSource getSecurityMetadataSource() { | 
|         return this.securityMetadataSource; | 
|     } | 
 | 
|     public Class<? extends Object> getSecureObjectClass() { | 
|         return FilterInvocation.class; | 
|     } | 
 | 
|     public void invoke(FilterInvocation fi) throws IOException, | 
|             ServletException { | 
|         InterceptorStatusToken token = super.beforeInvocation(fi); | 
|         try { | 
|             fi.getChain().doFilter(fi.getRequest(), fi.getResponse()); | 
|         } finally { | 
|             super.afterInvocation(token, null); | 
|         } | 
|     } | 
 | 
|     public SecurityMetadataSource obtainSecurityMetadataSource() { | 
|         return this.securityMetadataSource; | 
|     } | 
 | 
|     public void setSecurityMetadataSource( | 
|             FilterInvocationSecurityMetadataSource newSource) { | 
|         this.securityMetadataSource = newSource; | 
|     } | 
 | 
|     @Override | 
|     public void destroy() { | 
|     } | 
 | 
|     @Override | 
|     public void init(FilterConfig arg0) throws ServletException { | 
|     } | 
 | 
| } |