From 6a370b1ef81da01dc9099ec14acb9f50f381e402 Mon Sep 17 00:00:00 2001 From: Vedran Pavic Date: Mon, 27 Nov 2017 20:28:41 +0100 Subject: [PATCH] Refactor Redis configuration Closes gh-941 --- docs/src/test/java/docs/IndexDocTests.java | 11 ++++--- .../RedisOperationsSessionRepository.java | 32 +++---------------- ...RedisOperationsSessionRepositoryTests.java | 16 ---------- 3 files changed, 12 insertions(+), 47 deletions(-) diff --git a/docs/src/test/java/docs/IndexDocTests.java b/docs/src/test/java/docs/IndexDocTests.java index c4326600..51d9fed4 100644 --- a/docs/src/test/java/docs/IndexDocTests.java +++ b/docs/src/test/java/docs/IndexDocTests.java @@ -24,7 +24,7 @@ import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; import org.junit.Test; -import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.mock.web.MockServletContext; @@ -111,9 +111,12 @@ public class IndexDocTests { @SuppressWarnings("unused") public void newRedisOperationsSessionRepository() { // tag::new-redisoperationssessionrepository[] - LettuceConnectionFactory factory = new LettuceConnectionFactory(); - SessionRepository repository = new RedisOperationsSessionRepository( - factory); + RedisTemplate redisTemplate = new RedisTemplate<>(); + + // ... configure redisTemplate ... + + SessionRepository repository = + new RedisOperationsSessionRepository(redisTemplate); // end::new-redisoperationssessionrepository[] } diff --git a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java index 30c45195..654afcdd 100644 --- a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java +++ b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java @@ -30,13 +30,10 @@ import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; -import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.BoundHashOperations; import org.springframework.data.redis.core.RedisOperations; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializer; -import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.expression.Expression; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.session.FindByIndexNameSessionRepository; @@ -63,9 +60,12 @@ import org.springframework.util.Assert; * A typical example of how to create a new instance can be seen below: * *
- * LettuceConnectionFactory factory = new LettuceConnectionFactory();
+ * RedisTemplate<Object, Object> redisTemplate = new RedisTemplate();
  *
- * RedisOperationsSessionRepository redisSessionRepository = new RedisOperationsSessionRepository(factory);
+ * // ... configure redisTemplate ...
+ *
+ * RedisOperationsSessionRepository redisSessionRepository =
+ *         new RedisOperationsSessionRepository(redisTemplate);
  * 
* *

@@ -313,17 +313,6 @@ public class RedisOperationsSessionRepository implements private RedisFlushMode redisFlushMode = RedisFlushMode.ON_SAVE; - /** - * Allows creating an instance and uses a default {@link RedisOperations} for both - * managing the session and the expirations. - * - * @param redisConnectionFactory the {@link RedisConnectionFactory} to use. - */ - public RedisOperationsSessionRepository( - RedisConnectionFactory redisConnectionFactory) { - this(createDefaultTemplate(redisConnectionFactory)); - } - /** * Creates a new instance. For an example, refer to the class level javadoc. * @@ -648,17 +637,6 @@ public class RedisOperationsSessionRepository implements return SESSION_ATTR_PREFIX + attributeName; } - private static RedisTemplate createDefaultTemplate( - RedisConnectionFactory connectionFactory) { - Assert.notNull(connectionFactory, "connectionFactory cannot be null"); - RedisTemplate template = new RedisTemplate<>(); - template.setKeySerializer(new StringRedisSerializer()); - template.setHashKeySerializer(new StringRedisSerializer()); - template.setConnectionFactory(connectionFactory); - template.afterPropertiesSet(); - return template; - } - /** * A custom implementation of {@link Session} that uses a {@link MapSession} as the * basis for its mapping. It keeps track of any attributes that have changed. When diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java index 9cf5a4a0..6d0d52b1 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java @@ -110,27 +110,11 @@ public class RedisOperationsSessionRepositoryTests { this.cached.setLastAccessedTime(Instant.ofEpochMilli(1404360000000L)); } - @Test(expected = IllegalArgumentException.class) - public void constructorNullConnectionFactory() { - new RedisOperationsSessionRepository((RedisConnectionFactory) null); - } - @Test(expected = IllegalArgumentException.class) public void setApplicationEventPublisherNull() { this.redisRepository.setApplicationEventPublisher(null); } - // gh-61 - @Test - public void constructorConnectionFactory() { - this.redisRepository = new RedisOperationsSessionRepository(this.factory); - RedisSession session = this.redisRepository.createSession(); - - given(this.factory.getConnection()).willReturn(this.connection); - - this.redisRepository.save(session); - } - @Test public void changeSessionId() { RedisSession createSession = this.redisRepository.createSession();