RedisOperationsSessionRepository doesn't expose ExpirationRedisOperations
Fixes gh-91
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user