|  | @@ -24,6 +24,7 @@ import org.springframework.security.SecurityConfig;
 | 
	
		
			
				|  |  |  import org.springframework.security.concurrent.ConcurrentLoginException;
 | 
	
		
			
				|  |  |  import org.springframework.security.concurrent.ConcurrentSessionControllerImpl;
 | 
	
		
			
				|  |  |  import org.springframework.security.concurrent.ConcurrentSessionFilter;
 | 
	
		
			
				|  |  | +import org.springframework.security.context.HttpSessionSecurityContextRepository;
 | 
	
		
			
				|  |  |  import org.springframework.security.context.SecurityContextPersistenceFilter;
 | 
	
		
			
				|  |  |  import org.springframework.security.intercept.web.FilterInvocation;
 | 
	
		
			
				|  |  |  import org.springframework.security.intercept.web.FilterInvocationDefinitionSource;
 | 
	
	
		
			
				|  | @@ -665,6 +666,37 @@ public class HttpSecurityBeanDefinitionParserTests {
 | 
	
		
			
				|  |  |          assertTrue(attrDef.contains(new SecurityConfig("ROLE_B")));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Test
 | 
	
		
			
				|  |  | +    public void supportsExternallyDefinedSecurityContextRepository() throws Exception {
 | 
	
		
			
				|  |  | +        setContext(
 | 
	
		
			
				|  |  | +                "<b:bean id='repo' class='org.springframework.security.context.HttpSessionSecurityContextRepository'/>" +
 | 
	
		
			
				|  |  | +                "<http create-session='always' security-context-repository-ref='repo'>" +
 | 
	
		
			
				|  |  | +                "    <http-basic />" +
 | 
	
		
			
				|  |  | +                "</http>" + AUTH_PROVIDER_XML);
 | 
	
		
			
				|  |  | +        SecurityContextPersistenceFilter filter = (SecurityContextPersistenceFilter) appContext.getBean(BeanIds.SECURITY_CONTEXT_PERSISTENCE_FILTER);
 | 
	
		
			
				|  |  | +        HttpSessionSecurityContextRepository repo = (HttpSessionSecurityContextRepository) appContext.getBean("repo");
 | 
	
		
			
				|  |  | +        assertSame(repo, FieldUtils.getFieldValue(filter, "repo"));
 | 
	
		
			
				|  |  | +        assertTrue((Boolean)FieldUtils.getFieldValue(filter, "forceEagerSessionCreation"));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Test(expected=BeanDefinitionParsingException.class)
 | 
	
		
			
				|  |  | +    public void cantUseUnsupportedSessionCreationAttributeWithExternallyDefinedSecurityContextRepository() throws Exception {
 | 
	
		
			
				|  |  | +        setContext(
 | 
	
		
			
				|  |  | +                "<b:bean id='repo' class='org.springframework.security.context.HttpSessionSecurityContextRepository'/>" +
 | 
	
		
			
				|  |  | +                "<http create-session='never' security-context-repository-ref='repo'>" +
 | 
	
		
			
				|  |  | +                "    <http-basic />" +
 | 
	
		
			
				|  |  | +                "</http>" + AUTH_PROVIDER_XML);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Test
 | 
	
		
			
				|  |  | +    public void createDefinedSecurityContextRepository() throws Exception {
 | 
	
		
			
				|  |  | +        setContext(
 | 
	
		
			
				|  |  | +                "<b:bean id='repo' class='org.springframework.security.context.HttpSessionSecurityContextRepository'/>" +
 | 
	
		
			
				|  |  | +                "<http security-context-repository-ref='repo'>" +
 | 
	
		
			
				|  |  | +                "    <http-basic />" +
 | 
	
		
			
				|  |  | +                "</http>" + AUTH_PROVIDER_XML);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private void setContext(String context) {
 | 
	
		
			
				|  |  |          appContext = new InMemoryXmlApplicationContext(context);
 | 
	
		
			
				|  |  |      }
 |