This commit is contained in:
Phillip Webb 2016-05-02 14:44:15 -07:00
parent 322b1b2f65
commit 6466c0afa5
6 changed files with 23 additions and 20 deletions

View File

@ -36,13 +36,14 @@ import org.springframework.session.config.annotation.web.http.EnableSpringHttpSe
class HashMapSessionConfiguration { class HashMapSessionConfiguration {
@Bean @Bean
public SessionRepository<ExpiringSession> sessionRepository(SessionProperties sessionProperties) { public SessionRepository<ExpiringSession> sessionRepository(
MapSessionRepository sessionRepository = new MapSessionRepository(); SessionProperties properties) {
Integer timeout = sessionProperties.getTimeout(); MapSessionRepository repository = new MapSessionRepository();
Integer timeout = properties.getTimeout();
if (timeout != null) { if (timeout != null) {
sessionRepository.setDefaultMaxInactiveInterval(timeout); repository.setDefaultMaxInactiveInterval(timeout);
} }
return sessionRepository; return repository;
} }
} }

View File

@ -30,4 +30,5 @@ import org.springframework.session.SessionRepository;
@ConditionalOnMissingBean(SessionRepository.class) @ConditionalOnMissingBean(SessionRepository.class)
@Conditional(SessionCondition.class) @Conditional(SessionCondition.class)
class NoOpSessionConfiguration { class NoOpSessionConfiguration {
} }

View File

@ -45,8 +45,9 @@ public abstract class AbstractSessionAutoConfigurationTests {
} }
} }
protected <T extends SessionRepository<?>> T validateSessionRepository(Class<T> type) { protected <T extends SessionRepository<?>> T validateSessionRepository(
SessionRepository cacheManager = this.context.getBean(SessionRepository.class); Class<T> type) {
SessionRepository<?> cacheManager = this.context.getBean(SessionRepository.class);
assertThat(cacheManager).as("Wrong session repository type").isInstanceOf(type); assertThat(cacheManager).as("Wrong session repository type").isInstanceOf(type);
return type.cast(cacheManager); return type.cast(cacheManager);
} }

View File

@ -55,8 +55,7 @@ public class SessionAutoConfigurationRedisTests
@Test @Test
public void redisSessionStoreWithCustomizations() { public void redisSessionStoreWithCustomizations() {
load(Collections.<Class<?>>singletonList(RedisAutoConfiguration.class), load(Collections.<Class<?>>singletonList(RedisAutoConfiguration.class),
"spring.session.store-type=redis", "spring.session.store-type=redis", "spring.session.redis.namespace=foo",
"spring.session.redis.namespace=foo",
"spring.session.redis.flush-mode=immediate"); "spring.session.redis.flush-mode=immediate");
RedisOperationsSessionRepository repository = validateSessionRepository( RedisOperationsSessionRepository repository = validateSessionRepository(
RedisOperationsSessionRepository.class); RedisOperationsSessionRepository.class);

View File

@ -72,8 +72,7 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat
@Test @Test
public void hashMapSessionStoreCustomTimeout() { public void hashMapSessionStoreCustomTimeout() {
load("spring.session.store-type=hash-map", load("spring.session.store-type=hash-map", "server.session.timeout=3000");
"server.session.timeout=3000");
MapSessionRepository repository = validateSessionRepository( MapSessionRepository repository = validateSessionRepository(
MapSessionRepository.class); MapSessionRepository.class);
assertThat(getSessionTimeout(repository)).isEqualTo(3000); assertThat(getSessionTimeout(repository)).isEqualTo(3000);
@ -81,8 +80,7 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat
@Test @Test
public void springSessionTimeoutIsNotAValidProperty() { public void springSessionTimeoutIsNotAValidProperty() {
load("spring.session.store-type=hash-map", load("spring.session.store-type=hash-map", "spring.session.timeout=3000");
"spring.session.timeout=3000");
MapSessionRepository repository = validateSessionRepository( MapSessionRepository repository = validateSessionRepository(
MapSessionRepository.class); MapSessionRepository.class);
assertThat(getSessionTimeout(repository)).isNull(); assertThat(getSessionTimeout(repository)).isNull();
@ -130,7 +128,8 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat
"spring.session.store-type=hazelcast", "spring.session.store-type=hazelcast",
"spring.session.hazelcast.map-name=foo:bar:biz"); "spring.session.hazelcast.map-name=foo:bar:biz");
validateSessionRepository(MapSessionRepository.class); validateSessionRepository(MapSessionRepository.class);
HazelcastInstance hazelcastInstance = this.context.getBean(HazelcastInstance.class); HazelcastInstance hazelcastInstance = this.context
.getBean(HazelcastInstance.class);
verify(hazelcastInstance, times(1)).getMap("foo:bar:biz"); verify(hazelcastInstance, times(1)).getMap("foo:bar:biz");
} }
@ -154,13 +153,13 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat
.isEqualTo("foobar"); .isEqualTo("foobar");
} }
@Configuration @Configuration
static class SessionRepositoryConfiguration { static class SessionRepositoryConfiguration {
@Bean @Bean
public SessionRepository<?> mySessionRepository() { public SessionRepository<?> mySessionRepository() {
return new MapSessionRepository(Collections.<String, ExpiringSession>emptyMap()); return new MapSessionRepository(
Collections.<String, ExpiringSession>emptyMap());
} }
} }
@ -179,8 +178,9 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat
static class HazelcastSpecificMap { static class HazelcastSpecificMap {
@Bean @Bean
@SuppressWarnings("unchecked")
public HazelcastInstance hazelcastInstance() { public HazelcastInstance hazelcastInstance() {
IMap map = mock(IMap.class); IMap<Object, Object> map = mock(IMap.class);
HazelcastInstance mock = mock(HazelcastInstance.class); HazelcastInstance mock = mock(HazelcastInstance.class);
given(mock.getMap("foo:bar:biz")).willReturn(map); given(mock.getMap("foo:bar:biz")).willReturn(map);
return mock; return mock;

View File

@ -84,11 +84,12 @@ public class FilterOrderingIntegrationTests {
private void load() { private void load() {
this.context = new AnnotationConfigEmbeddedWebApplicationContext(); this.context = new AnnotationConfigEmbeddedWebApplicationContext();
EnvironmentTestUtils.addEnvironment(this.context, "spring.session.store-type=hash-map"); EnvironmentTestUtils.addEnvironment(this.context,
"spring.session.store-type=hash-map");
this.context.register(MockEmbeddedServletContainerConfiguration.class, this.context.register(MockEmbeddedServletContainerConfiguration.class,
TestRedisConfiguration.class, WebMvcAutoConfiguration.class, TestRedisConfiguration.class, WebMvcAutoConfiguration.class,
ServerPropertiesAutoConfiguration.class, ServerPropertiesAutoConfiguration.class, SecurityAutoConfiguration.class,
SecurityAutoConfiguration.class, SessionAutoConfiguration.class, SessionAutoConfiguration.class,
HttpMessageConvertersAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
PropertyPlaceholderAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class,
HttpEncodingAutoConfiguration.class); HttpEncodingAutoConfiguration.class);