| 
														
															@@ -1,4 +1,4 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-/* Copyright 2004, 2005 Acegi Technology Pty Limited 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+/* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * 
														 | 
														
														 | 
														
															  * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * Licensed under the Apache License, Version 2.0 (the "License"); 
														 | 
														
														 | 
														
															  * Licensed under the Apache License, Version 2.0 (the "License"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * you may not use this file except in compliance with the License. 
														 | 
														
														 | 
														
															  * you may not use this file except in compliance with the License. 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -13,7 +13,14 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * limitations under the License. 
														 | 
														
														 | 
														
															  * limitations under the License. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  */ 
														 | 
														
														 | 
														
															  */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-package org.acegisecurity.intercept.web; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+package org.acegisecurity.ui; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import java.io.IOException; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import javax.servlet.FilterChain; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import javax.servlet.ServletException; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import javax.servlet.ServletRequest; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import javax.servlet.ServletResponse; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import junit.framework.TestCase; 
														 | 
														
														 | 
														
															 import junit.framework.TestCase; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -27,43 +34,40 @@ import org.acegisecurity.context.SecurityContextHolder; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.acegisecurity.context.SecurityContextImpl; 
														 | 
														
														 | 
														
															 import org.acegisecurity.context.SecurityContextImpl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.acegisecurity.providers.anonymous.AnonymousAuthenticationToken; 
														 | 
														
														 | 
														
															 import org.acegisecurity.providers.anonymous.AnonymousAuthenticationToken; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.acegisecurity.ui.webapp.AuthenticationProcessingFilter; 
														 | 
														
														 | 
														
															 import org.acegisecurity.ui.webapp.AuthenticationProcessingFilter; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.springframework.mock.web.MockHttpServletRequest; 
														 | 
														
														 | 
														
															 import org.springframework.mock.web.MockHttpServletRequest; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.springframework.mock.web.MockHttpServletResponse; 
														 | 
														
														 | 
														
															 import org.springframework.mock.web.MockHttpServletResponse; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import java.io.IOException; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import javax.servlet.FilterChain; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import javax.servlet.ServletException; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import javax.servlet.ServletRequest; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import javax.servlet.ServletResponse; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 /** 
														 | 
														
														 | 
														
															 /** 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- * Tests {@link SecurityEnforcementFilter}. 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * Tests {@link ExceptionTranslationFilter}. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * 
														 | 
														
														 | 
														
															  * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * @author Ben Alex 
														 | 
														
														 | 
														
															  * @author Ben Alex 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * @version $Id$ 
														 | 
														
														 | 
														
															  * @version $Id$ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  */ 
														 | 
														
														 | 
														
															  */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+public class ExceptionTranslationFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     //~ Constructors =========================================================== 
														 | 
														
														 | 
														
															     //~ Constructors =========================================================== 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    public SecurityEnforcementFilterTests() { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    public ExceptionTranslationFilterTests() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         super(); 
														 | 
														
														 | 
														
															         super(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    public SecurityEnforcementFilterTests(String arg0) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    public ExceptionTranslationFilterTests(String arg0) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         super(arg0); 
														 | 
														
														 | 
														
															         super(arg0); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     //~ Methods ================================================================ 
														 | 
														
														 | 
														
															     //~ Methods ================================================================ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    public static void main(String[] args) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        junit.textui.TestRunner.run(ExceptionTranslationFilterTests.class); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public final void setUp() throws Exception { 
														 | 
														
														 | 
														
															     public final void setUp() throws Exception { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         super.setUp(); 
														 | 
														
														 | 
														
															         super.setUp(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    public static void main(String[] args) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        junit.textui.TestRunner.run(SecurityEnforcementFilterTests.class); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    protected void tearDown() throws Exception { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        super.tearDown(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        SecurityContextHolder.setContext(new SecurityContextImpl()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void testAccessDeniedWhenAnonymous() throws Exception { 
														 | 
														
														 | 
														
															     public void testAccessDeniedWhenAnonymous() throws Exception { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -76,21 +80,17 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         request.setContextPath("/mycontext"); 
														 | 
														
														 | 
														
															         request.setContextPath("/mycontext"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         request.setRequestURI("/mycontext/secure/page.html"); 
														 | 
														
														 | 
														
															         request.setRequestURI("/mycontext/secure/page.html"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        // Setup our expectation that the filter chain will not be invoked, as access is denied 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        MockFilterChain chain = new MockFilterChain(false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        // Setup the FilterSecurityInterceptor thrown an access denied exception 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        MockFilterSecurityInterceptor interceptor = new MockFilterSecurityInterceptor(true, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                false, false, false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        // Setup the FilterChain to thrown an access denied exception 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        MockFilterChain chain = new MockFilterChain(true, false, false, false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // Setup SecurityContextHolder, as filter needs to check if user is anonymous 
														 | 
														
														 | 
														
															         // Setup SecurityContextHolder, as filter needs to check if user is anonymous 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityContextHolder.getContext().setAuthentication(new AnonymousAuthenticationToken( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        SecurityContextHolder.getContext() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                             .setAuthentication(new AnonymousAuthenticationToken( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 "ignored", "ignored", 
														 | 
														
														 | 
														
															                 "ignored", "ignored", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 new GrantedAuthority[] {new GrantedAuthorityImpl("IGNORED")})); 
														 | 
														
														 | 
														
															                 new GrantedAuthority[] {new GrantedAuthorityImpl("IGNORED")})); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // Test 
														 | 
														
														 | 
														
															         // Test 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        filter.setFilterSecurityInterceptor(interceptor); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
														
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 "/login.jsp")); 
														 | 
														
														 | 
														
															                 "/login.jsp")); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -98,7 +98,8 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.doFilter(request, response, chain); 
														 | 
														
														 | 
														
															         filter.doFilter(request, response, chain); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assertEquals("/mycontext/login.jsp", response.getRedirectedUrl()); 
														 | 
														
														 | 
														
															         assertEquals("/mycontext/login.jsp", response.getRedirectedUrl()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assertEquals("http://www.example.com/mycontext/secure/page.html", 
														 | 
														
														 | 
														
															         assertEquals("http://www.example.com/mycontext/secure/page.html", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            request.getSession().getAttribute(AuthenticationProcessingFilter.ACEGI_SECURITY_TARGET_URL_KEY)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            request.getSession() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                   .getAttribute(AuthenticationProcessingFilter.ACEGI_SECURITY_TARGET_URL_KEY)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void testAccessDeniedWhenNonAnonymous() throws Exception { 
														 | 
														
														 | 
														
															     public void testAccessDeniedWhenNonAnonymous() throws Exception { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -106,19 +107,14 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         MockHttpServletRequest request = new MockHttpServletRequest(); 
														 | 
														
														 | 
														
															         MockHttpServletRequest request = new MockHttpServletRequest(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         request.setServletPath("/secure/page.html"); 
														 | 
														
														 | 
														
															         request.setServletPath("/secure/page.html"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        // Setup our expectation that the filter chain will not be invoked, as access is denied 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        MockFilterChain chain = new MockFilterChain(false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        // Setup the FilterSecurityInterceptor thrown an access denied exception 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        MockFilterSecurityInterceptor interceptor = new MockFilterSecurityInterceptor(true, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                false, false, false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        // Setup the FilterChain to thrown an access denied exception 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        MockFilterChain chain = new MockFilterChain(true, false, false, false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // Setup SecurityContextHolder, as filter needs to check if user is anonymous 
														 | 
														
														 | 
														
															         // Setup SecurityContextHolder, as filter needs to check if user is anonymous 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         SecurityContextHolder.getContext().setAuthentication(null); 
														 | 
														
														 | 
														
															         SecurityContextHolder.getContext().setAuthentication(null); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // Test 
														 | 
														
														 | 
														
															         // Test 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        filter.setFilterSecurityInterceptor(interceptor); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
														
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 "/login.jsp")); 
														 | 
														
														 | 
														
															                 "/login.jsp")); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -127,17 +123,17 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assertEquals(403, response.getStatus()); 
														 | 
														
														 | 
														
															         assertEquals(403, response.getStatus()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assertEquals(AccessDeniedException.class, 
														 | 
														
														 | 
														
															         assertEquals(AccessDeniedException.class, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             request.getSession() 
														 | 
														
														 | 
														
															             request.getSession() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                   .getAttribute(SecurityEnforcementFilter.ACEGI_SECURITY_ACCESS_DENIED_EXCEPTION_KEY) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                   .getAttribute(ExceptionTranslationFilter.ACEGI_SECURITY_ACCESS_DENIED_EXCEPTION_KEY) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                    .getClass()); 
														 | 
														
														 | 
														
															                    .getClass()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void testDoFilterWithNonHttpServletRequestDetected() 
														 | 
														
														 | 
														
															     public void testDoFilterWithNonHttpServletRequestDetected() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         throws Exception { 
														 | 
														
														 | 
														
															         throws Exception { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         try { 
														 | 
														
														 | 
														
															         try { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             filter.doFilter(null, new MockHttpServletResponse(), 
														 | 
														
														 | 
														
															             filter.doFilter(null, new MockHttpServletResponse(), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                new MockFilterChain()); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                new MockFilterChain(false, false, false, false)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             fail("Should have thrown ServletException"); 
														 | 
														
														 | 
														
															             fail("Should have thrown ServletException"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } catch (ServletException expected) { 
														 | 
														
														 | 
														
															         } catch (ServletException expected) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             assertEquals("HttpServletRequest required", expected.getMessage()); 
														 | 
														
														 | 
														
															             assertEquals("HttpServletRequest required", expected.getMessage()); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -146,11 +142,11 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void testDoFilterWithNonHttpServletResponseDetected() 
														 | 
														
														 | 
														
															     public void testDoFilterWithNonHttpServletResponseDetected() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         throws Exception { 
														 | 
														
														 | 
														
															         throws Exception { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         try { 
														 | 
														
														 | 
														
															         try { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             filter.doFilter(new MockHttpServletRequest(null, null), null, 
														 | 
														
														 | 
														
															             filter.doFilter(new MockHttpServletRequest(null, null), null, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                new MockFilterChain()); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                new MockFilterChain(false, false, false, false)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             fail("Should have thrown ServletException"); 
														 | 
														
														 | 
														
															             fail("Should have thrown ServletException"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } catch (ServletException expected) { 
														 | 
														
														 | 
														
															         } catch (ServletException expected) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             assertEquals("HttpServletResponse required", expected.getMessage()); 
														 | 
														
														 | 
														
															             assertEquals("HttpServletResponse required", expected.getMessage()); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -158,10 +154,7 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void testGettersSetters() { 
														 | 
														
														 | 
														
															     public void testGettersSetters() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        filter.setFilterSecurityInterceptor(new MockFilterSecurityInterceptor( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                false, false, false, false)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        assertTrue(filter.getFilterSecurityInterceptor() != null); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
														
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 "/login.jsp")); 
														 | 
														
														 | 
														
															                 "/login.jsp")); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -182,16 +175,11 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         request.setContextPath("/mycontext"); 
														 | 
														
														 | 
														
															         request.setContextPath("/mycontext"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         request.setRequestURI("/mycontext/secure/page.html"); 
														 | 
														
														 | 
														
															         request.setRequestURI("/mycontext/secure/page.html"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        // Setup our expectation that the filter chain will not be invoked, as access is denied 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        MockFilterChain chain = new MockFilterChain(false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        // Setup the FilterSecurityInterceptor thrown an authentication failure exceptions 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        MockFilterSecurityInterceptor interceptor = new MockFilterSecurityInterceptor(false, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                true, false, false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        // Setup the FilterChain to thrown an authentication failure exception 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        MockFilterChain chain = new MockFilterChain(false, true, false, false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // Test 
														 | 
														
														 | 
														
															         // Test 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        filter.setFilterSecurityInterceptor(interceptor); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
														
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 "/login.jsp")); 
														 | 
														
														 | 
														
															                 "/login.jsp")); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.setPortResolver(new MockPortResolver(80, 443)); 
														 | 
														
														 | 
														
															         filter.setPortResolver(new MockPortResolver(80, 443)); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -201,7 +189,8 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.doFilter(request, response, chain); 
														 | 
														
														 | 
														
															         filter.doFilter(request, response, chain); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assertEquals("/mycontext/login.jsp", response.getRedirectedUrl()); 
														 | 
														
														 | 
														
															         assertEquals("/mycontext/login.jsp", response.getRedirectedUrl()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assertEquals("http://www.example.com/mycontext/secure/page.html", 
														 | 
														
														 | 
														
															         assertEquals("http://www.example.com/mycontext/secure/page.html", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            request.getSession().getAttribute(AuthenticationProcessingFilter.ACEGI_SECURITY_TARGET_URL_KEY)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            request.getSession() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                   .getAttribute(AuthenticationProcessingFilter.ACEGI_SECURITY_TARGET_URL_KEY)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void testRedirectedToLoginFormAndSessionShowsOriginalTargetWithExoticPortWhenAuthenticationException() 
														 | 
														
														 | 
														
															     public void testRedirectedToLoginFormAndSessionShowsOriginalTargetWithExoticPortWhenAuthenticationException() 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -215,16 +204,11 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         request.setContextPath("/mycontext"); 
														 | 
														
														 | 
														
															         request.setContextPath("/mycontext"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         request.setRequestURI("/mycontext/secure/page.html"); 
														 | 
														
														 | 
														
															         request.setRequestURI("/mycontext/secure/page.html"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        // Setup our expectation that the filter chain will not be invoked, as access is denied 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        MockFilterChain chain = new MockFilterChain(false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        // Setup the FilterSecurityInterceptor thrown an authentication failure exceptions 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        MockFilterSecurityInterceptor interceptor = new MockFilterSecurityInterceptor(false, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                true, false, false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        // Setup the FilterChain to thrown an authentication failure exception 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        MockFilterChain chain = new MockFilterChain(false, true, false, false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // Test 
														 | 
														
														 | 
														
															         // Test 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        filter.setFilterSecurityInterceptor(interceptor); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
														
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 "/login.jsp")); 
														 | 
														
														 | 
														
															                 "/login.jsp")); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.setPortResolver(new MockPortResolver(8080, 8443)); 
														 | 
														
														 | 
														
															         filter.setPortResolver(new MockPortResolver(8080, 8443)); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -234,14 +218,13 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.doFilter(request, response, chain); 
														 | 
														
														 | 
														
															         filter.doFilter(request, response, chain); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assertEquals("/mycontext/login.jsp", response.getRedirectedUrl()); 
														 | 
														
														 | 
														
															         assertEquals("/mycontext/login.jsp", response.getRedirectedUrl()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assertEquals("http://www.example.com:8080/mycontext/secure/page.html", 
														 | 
														
														 | 
														
															         assertEquals("http://www.example.com:8080/mycontext/secure/page.html", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            request.getSession().getAttribute(AuthenticationProcessingFilter.ACEGI_SECURITY_TARGET_URL_KEY)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            request.getSession() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                   .getAttribute(AuthenticationProcessingFilter.ACEGI_SECURITY_TARGET_URL_KEY)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void testStartupDetectsMissingAuthenticationEntryPoint() 
														 | 
														
														 | 
														
															     public void testStartupDetectsMissingAuthenticationEntryPoint() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         throws Exception { 
														 | 
														
														 | 
														
															         throws Exception { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        filter.setFilterSecurityInterceptor(new MockFilterSecurityInterceptor( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                false, false, false, false)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         try { 
														 | 
														
														 | 
														
															         try { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             filter.afterPropertiesSet(); 
														 | 
														
														 | 
														
															             filter.afterPropertiesSet(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -252,26 +235,9 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    public void testStartupDetectsMissingFilterSecurityInterceptor() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        throws Exception { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                "/login.jsp")); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        try { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            filter.afterPropertiesSet(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            fail("Should have thrown IllegalArgumentException"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        } catch (IllegalArgumentException expected) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            assertEquals("filterSecurityInterceptor must be specified", 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                expected.getMessage()); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void testStartupDetectsMissingPortResolver() 
														 | 
														
														 | 
														
															     public void testStartupDetectsMissingPortResolver() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         throws Exception { 
														 | 
														
														 | 
														
															         throws Exception { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        filter.setFilterSecurityInterceptor(new MockFilterSecurityInterceptor( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                false, false, false, false)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
														
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 "/login.jsp")); 
														 | 
														
														 | 
														
															                 "/login.jsp")); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.setPortResolver(null); 
														 | 
														
														 | 
														
															         filter.setPortResolver(null); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -289,16 +255,11 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         MockHttpServletRequest request = new MockHttpServletRequest(); 
														 | 
														
														 | 
														
															         MockHttpServletRequest request = new MockHttpServletRequest(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         request.setServletPath("/secure/page.html"); 
														 | 
														
														 | 
														
															         request.setServletPath("/secure/page.html"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        // Setup our expectation that the filter chain will be invoked, as access is granted 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        MockFilterChain chain = new MockFilterChain(true); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        // Setup the FilterSecurityInterceptor to not thrown any exceptions 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        MockFilterSecurityInterceptor interceptor = new MockFilterSecurityInterceptor(false, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                false, false, false); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        // Setup the FilterChain to thrown no exceptions 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        MockFilterChain chain = new MockFilterChain(false, false, false, false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // Test 
														 | 
														
														 | 
														
															         // Test 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        filter.setFilterSecurityInterceptor(interceptor); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
														
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 "/login.jsp")); 
														 | 
														
														 | 
														
															                 "/login.jsp")); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -308,7 +269,7 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void testSuccessfulStartupAndShutdownDown() 
														 | 
														
														 | 
														
															     public void testSuccessfulStartupAndShutdownDown() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         throws Exception { 
														 | 
														
														 | 
														
															         throws Exception { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.init(null); 
														 | 
														
														 | 
														
															         filter.init(null); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.destroy(); 
														 | 
														
														 | 
														
															         filter.destroy(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -316,10 +277,7 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void testThrowIOException() throws Exception { 
														 | 
														
														 | 
														
															     public void testThrowIOException() throws Exception { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        filter.setFilterSecurityInterceptor(new MockFilterSecurityInterceptor( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                false, false, false, true)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint("")); 
														 | 
														
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint("")); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -327,7 +285,8 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         try { 
														 | 
														
														 | 
														
															         try { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             filter.doFilter(new MockHttpServletRequest(), 
														 | 
														
														 | 
														
															             filter.doFilter(new MockHttpServletRequest(), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                new MockHttpServletResponse(), new MockFilterChain(false)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                new MockHttpServletResponse(), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                new MockFilterChain(false, false, false, true)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             fail("Should have thrown IOException"); 
														 | 
														
														 | 
														
															             fail("Should have thrown IOException"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } catch (IOException e) { 
														 | 
														
														 | 
														
															         } catch (IOException e) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             assertNull("The IOException thrown should not have been wrapped", 
														 | 
														
														 | 
														
															             assertNull("The IOException thrown should not have been wrapped", 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -336,10 +295,7 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void testThrowServletException() throws Exception { 
														 | 
														
														 | 
														
															     public void testThrowServletException() throws Exception { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityEnforcementFilter filter = new SecurityEnforcementFilter(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        filter.setFilterSecurityInterceptor(new MockFilterSecurityInterceptor( 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                false, false, true, false)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ExceptionTranslationFilter filter = new ExceptionTranslationFilter(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint("")); 
														 | 
														
														 | 
														
															         filter.setAuthenticationEntryPoint(new MockAuthenticationEntryPoint("")); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -347,7 +303,8 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         try { 
														 | 
														
														 | 
														
															         try { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             filter.doFilter(new MockHttpServletRequest(), 
														 | 
														
														 | 
														
															             filter.doFilter(new MockHttpServletRequest(), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                new MockHttpServletResponse(), new MockFilterChain(false)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                new MockHttpServletResponse(), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                new MockFilterChain(false, false, true, false)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             fail("Should have thrown ServletException"); 
														 | 
														
														 | 
														
															             fail("Should have thrown ServletException"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } catch (ServletException e) { 
														 | 
														
														 | 
														
															         } catch (ServletException e) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             assertNull("The ServletException thrown should not have been wrapped", 
														 | 
														
														 | 
														
															             assertNull("The ServletException thrown should not have been wrapped", 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -355,42 +312,15 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    protected void tearDown() throws Exception { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        super.tearDown(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        SecurityContextHolder.setContext(new SecurityContextImpl()); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     //~ Inner Classes ========================================================== 
														 | 
														
														 | 
														
															     //~ Inner Classes ========================================================== 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     private class MockFilterChain implements FilterChain { 
														 | 
														
														 | 
														
															     private class MockFilterChain implements FilterChain { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        private boolean expectToProceed; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        public MockFilterChain(boolean expectToProceed) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            this.expectToProceed = expectToProceed; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        private MockFilterChain() { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            super(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        public void doFilter(ServletRequest request, ServletResponse response) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            throws IOException, ServletException { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            if (expectToProceed) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                assertTrue(true); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            } else { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                fail("Did not expect filter chain to proceed"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    private class MockFilterSecurityInterceptor 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        extends FilterSecurityInterceptor { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private boolean throwAccessDenied; 
														 | 
														
														 | 
														
															         private boolean throwAccessDenied; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private boolean throwAuthenticationFailure; 
														 | 
														
														 | 
														
															         private boolean throwAuthenticationFailure; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private boolean throwIOException; 
														 | 
														
														 | 
														
															         private boolean throwIOException; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private boolean throwServletException; 
														 | 
														
														 | 
														
															         private boolean throwServletException; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        public MockFilterSecurityInterceptor(boolean throwAccessDenied, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        public MockFilterChain(boolean throwAccessDenied, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             boolean throwAuthenticationFailure, boolean throwServletException, 
														 | 
														
														 | 
														
															             boolean throwAuthenticationFailure, boolean throwServletException, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             boolean throwIOException) { 
														 | 
														
														 | 
														
															             boolean throwIOException) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             this.throwAccessDenied = throwAccessDenied; 
														 | 
														
														 | 
														
															             this.throwAccessDenied = throwAccessDenied; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -399,7 +329,8 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             this.throwIOException = throwIOException; 
														 | 
														
														 | 
														
															             this.throwIOException = throwIOException; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        public void invoke(FilterInvocation fi) throws Throwable { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        public void doFilter(ServletRequest request, ServletResponse response) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            throws IOException, ServletException { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (throwAccessDenied) { 
														 | 
														
														 | 
														
															             if (throwAccessDenied) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 throw new AccessDeniedException("As requested"); 
														 | 
														
														 | 
														
															                 throw new AccessDeniedException("As requested"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -415,8 +346,6 @@ public class SecurityEnforcementFilterTests extends TestCase { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (throwIOException) { 
														 | 
														
														 | 
														
															             if (throwIOException) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 throw new IOException("As requested"); 
														 | 
														
														 | 
														
															                 throw new IOException("As requested"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            fi.getChain().doFilter(fi.getRequest(), fi.getResponse()); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 |