| 
					
				 | 
			
			
				@@ -15,23 +15,20 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package org.springframework.security.wrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.security.util.PortResolver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.security.util.PortResolverImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.util.Assert; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.util.ReflectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.lang.reflect.Constructor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-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 javax.servlet.http.HttpServletRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.security.ui.FilterChainOrderUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.security.ui.SpringSecurityFilter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.security.util.PortResolver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.security.util.PortResolverImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.util.Assert; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.util.ReflectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -47,7 +44,7 @@ import javax.servlet.http.HttpServletRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @author Ben Alex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @version $Id$ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class SecurityContextHolderAwareRequestFilter implements Filter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class SecurityContextHolderAwareRequestFilter extends SpringSecurityFilter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //~ Instance fields ================================================================================================ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private Class wrapperClass = SavedRequestAwareWrapper.class; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -57,12 +54,23 @@ public class SecurityContextHolderAwareRequestFilter implements Filter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //~ Methods ======================================================================================================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void destroy() {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void setPortResolver(PortResolver portResolver) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Assert.notNull(portResolver, "PortResolver required"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.portResolver = portResolver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        throws IOException, ServletException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        HttpServletRequest request = (HttpServletRequest) servletRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void setWrapperClass(Class wrapperClass) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Assert.notNull(wrapperClass, "WrapperClass required"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Assert.isTrue(HttpServletRequest.class.isAssignableFrom(wrapperClass), "Wrapper must be a HttpServletRequest"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.wrapperClass = wrapperClass; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void setRolePrefix(String rolePrefix) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Assert.notNull(rolePrefix, "Role prefix must not be null"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.rolePrefix = rolePrefix.trim(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	protected void doFilterHttp(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!wrapperClass.isAssignableFrom(request.getClass())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (constructor == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 try { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -80,24 +88,10 @@ public class SecurityContextHolderAwareRequestFilter implements Filter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        filterChain.doFilter(request, servletResponse); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void init(FilterConfig filterConfig) throws ServletException {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void setPortResolver(PortResolver portResolver) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Assert.notNull(portResolver, "PortResolver required"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.portResolver = portResolver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        chain.doFilter(request, response); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void setWrapperClass(Class wrapperClass) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Assert.notNull(wrapperClass, "WrapperClass required"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Assert.isTrue(HttpServletRequest.class.isAssignableFrom(wrapperClass), "Wrapper must be a HttpServletRequest"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.wrapperClass = wrapperClass; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void setRolePrefix(String rolePrefix) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Assert.notNull(rolePrefix, "Role prefix must not be null"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.rolePrefix = rolePrefix.trim(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public int getOrder() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return FilterChainOrderUtils.SECURITY_CONTEXT_HOLDER_AWARE_FILTER_ORDER; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |