RedisOperationsSessionRepository doesn't expose ExpirationRedisOperations

Fixes gh-91
This commit is contained in:
Rob Winch
2015-01-05 14:50:05 -06:00
parent d2639570bb
commit 1e56874338
4 changed files with 18 additions and 32 deletions

View File

@@ -155,20 +155,18 @@ public class RedisOperationsSessionRepository implements SessionRepository<Redis
*/
@SuppressWarnings("unchecked")
public RedisOperationsSessionRepository(RedisConnectionFactory redisConnectionFactory) {
this(createDefaultTemplate(redisConnectionFactory), createDefaultTemplate(redisConnectionFactory));
this(createDefaultTemplate(redisConnectionFactory));
}
/**
* Creates a new instance. For an example, refer to the class level javadoc.
*
* @param sessionRedisOperations The {@link RedisOperations} to use for managing the sessions. Cannot be null.
* @param expirationRedisOperations The {@link RedisOperations} to use for managing expiration mappings. Cannot be null.
*/
public RedisOperationsSessionRepository(RedisOperations<String, ExpiringSession> sessionRedisOperations, RedisOperations<String,String> expirationRedisOperations) {
public RedisOperationsSessionRepository(RedisOperations<String, ExpiringSession> sessionRedisOperations) {
Assert.notNull(sessionRedisOperations, "sessionRedisOperations cannot be null");
Assert.notNull(expirationRedisOperations, "expirationRedisOperations cannot be null");
this.sessionRedisOperations = sessionRedisOperations;
this.expirationPolicy = new RedisSessionExpirationPolicy(sessionRedisOperations, expirationRedisOperations);
this.expirationPolicy = new RedisSessionExpirationPolicy(sessionRedisOperations);
}
/**

View File

@@ -58,11 +58,10 @@ final class RedisSessionExpirationPolicy {
private final RedisOperations<String,String> expirationRedisOperations;
public RedisSessionExpirationPolicy(
RedisOperations<String, ExpiringSession> sessionRedisOperations,
RedisOperations<String, String> expirationRedisOperations) {
RedisOperations sessionRedisOperations) {
super();
this.sessionRedisOperations = sessionRedisOperations;
this.expirationRedisOperations = expirationRedisOperations;
this.expirationRedisOperations = sessionRedisOperations;
}
public void onDelete(ExpiringSession session) {

View File

@@ -93,17 +93,8 @@ public class RedisHttpSessionConfiguration implements ImportAware, BeanClassLoad
}
@Bean
public RedisTemplate<String,String> expirationRedisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, String> template = new RedisTemplate<String, String>();
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setConnectionFactory(connectionFactory);
return template;
}
@Bean
public RedisOperationsSessionRepository sessionRepository(RedisTemplate<String, ExpiringSession> sessionRedisTemplate, @Qualifier("expirationRedisTemplate") RedisTemplate<String,String> expirationRedisTemplate) {
RedisOperationsSessionRepository sessionRepository = new RedisOperationsSessionRepository(sessionRedisTemplate,expirationRedisTemplate);
public RedisOperationsSessionRepository sessionRepository(RedisTemplate<String, ExpiringSession> sessionRedisTemplate) {
RedisOperationsSessionRepository sessionRepository = new RedisOperationsSessionRepository(sessionRedisTemplate);
sessionRepository.setDefaultMaxInactiveInterval(maxInactiveIntervalInSeconds);
return sessionRepository;
}

View File

@@ -40,9 +40,7 @@ public class RedisOperationsSessionRepositoryTests {
@Mock
RedisConnection connection;
@Mock
RedisOperations<String,ExpiringSession> redisOperations;
@Mock
RedisOperations<String,String> expirationRedisOperations;
RedisOperations redisOperations;
@Mock
BoundHashOperations<String, Object, Object> boundHashOperations;
@Mock
@@ -56,12 +54,12 @@ public class RedisOperationsSessionRepositoryTests {
@Before
public void setup() {
this.redisRepository = new RedisOperationsSessionRepository(redisOperations,expirationRedisOperations);
this.redisRepository = new RedisOperationsSessionRepository(redisOperations);
}
@Test(expected=IllegalArgumentException.class)
public void constructorNullConnectionFactory() {
new RedisOperationsSessionRepository(null);
new RedisOperationsSessionRepository((RedisConnectionFactory)null);
}
// gh-61
@@ -93,7 +91,7 @@ public class RedisOperationsSessionRepositoryTests {
public void saveNewSession() {
RedisSession session = redisRepository.createSession();
when(redisOperations.boundHashOps(getKey(session.getId()))).thenReturn(boundHashOperations);
when(expirationRedisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
when(redisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
redisRepository.save(session);
@@ -110,7 +108,7 @@ public class RedisOperationsSessionRepositoryTests {
RedisSession session = redisRepository.new RedisSession(new MapSession());
session.setLastAccessedTime(12345678L);
when(redisOperations.boundHashOps(getKey(session.getId()))).thenReturn(boundHashOperations);
when(expirationRedisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
when(redisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
redisRepository.save(session);
@@ -123,7 +121,7 @@ public class RedisOperationsSessionRepositoryTests {
RedisSession session = redisRepository.new RedisSession(new MapSession());
session.setAttribute(attrName, "attrValue");
when(redisOperations.boundHashOps(getKey(session.getId()))).thenReturn(boundHashOperations);
when(expirationRedisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
when(redisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
redisRepository.save(session);
@@ -136,7 +134,7 @@ public class RedisOperationsSessionRepositoryTests {
RedisSession session = redisRepository.new RedisSession(new MapSession());
session.removeAttribute(attrName);
when(redisOperations.boundHashOps(getKey(session.getId()))).thenReturn(boundHashOperations);
when(expirationRedisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
when(redisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
redisRepository.save(session);
@@ -167,7 +165,7 @@ public class RedisOperationsSessionRepositoryTests {
MAX_INACTIVE_ATTR, expected.getMaxInactiveIntervalInSeconds(),
LAST_ACCESSED_ATTR, expected.getLastAccessedTime());
when(boundHashOperations.entries()).thenReturn(map);
when(expirationRedisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
when(redisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
String id = expected.getId();
redisRepository.delete(id);
@@ -176,13 +174,13 @@ public class RedisOperationsSessionRepositoryTests {
@Test
public void deleteNullSession() {
when(expirationRedisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
when(redisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
when(redisOperations.boundHashOps(anyString())).thenReturn(boundHashOperations);
String id = "abc";
redisRepository.delete(id);
verify(redisOperations,times(0)).delete(anyString());
verify(expirationRedisOperations,times(0)).delete(anyString());
verify(redisOperations,times(0)).delete(anyString());
}
@Test
@@ -238,7 +236,7 @@ public class RedisOperationsSessionRepositoryTests {
public void cleanupExpiredSessions() {
String expiredId = "expired-id";
when(redisOperations.boundHashOps(getKey(expiredId))).thenReturn(boundHashOperations);
when(expirationRedisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
when(redisOperations.boundSetOps(anyString())).thenReturn(boundSetOperations);
Set<String> expiredIds = new HashSet<String>(Arrays.asList("expired-key1","expired-key2"));
when(boundSetOperations.members()).thenReturn(expiredIds);