Tangles in RedisOperationsSessionRepository
Issue: gh-900
This commit is contained in:
@@ -334,7 +334,7 @@ public class RedisOperationsSessionRepository implements
|
||||
Assert.notNull(sessionRedisOperations, "sessionRedisOperations cannot be null");
|
||||
this.sessionRedisOperations = sessionRedisOperations;
|
||||
this.expirationPolicy = new RedisSessionExpirationPolicy(sessionRedisOperations,
|
||||
this);
|
||||
this::getExpirationsKey, this::getSessionKey);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Function;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
@@ -51,14 +52,15 @@ final class RedisSessionExpirationPolicy {
|
||||
.getLog(RedisSessionExpirationPolicy.class);
|
||||
|
||||
private final RedisOperations<Object, Object> redis;
|
||||
|
||||
private final RedisOperationsSessionRepository redisSession;
|
||||
private final Function<Long, String> lookupExpirationKey;
|
||||
private final Function<String, String> lookupSessionKey;
|
||||
|
||||
RedisSessionExpirationPolicy(RedisOperations<Object, Object> sessionRedisOperations,
|
||||
RedisOperationsSessionRepository redisSession) {
|
||||
Function<Long, String> lookupExpirationKey, Function<String, String> lookupSessionKey) {
|
||||
super();
|
||||
this.redis = sessionRedisOperations;
|
||||
this.redisSession = redisSession;
|
||||
this.lookupExpirationKey = lookupExpirationKey;
|
||||
this.lookupSessionKey = lookupSessionKey;
|
||||
}
|
||||
|
||||
public void onDelete(Session session) {
|
||||
@@ -111,11 +113,11 @@ final class RedisSessionExpirationPolicy {
|
||||
}
|
||||
|
||||
String getExpirationKey(long expires) {
|
||||
return this.redisSession.getExpirationsKey(expires);
|
||||
return this.lookupExpirationKey.apply(expires);
|
||||
}
|
||||
|
||||
String getSessionKey(String sessionId) {
|
||||
return this.redisSession.getSessionKey(sessionId);
|
||||
return this.lookupSessionKey.apply(sessionId);
|
||||
}
|
||||
|
||||
public void cleanExpiredSessions() {
|
||||
|
||||
@@ -66,7 +66,7 @@ public class RedisSessionExpirationPolicyTests {
|
||||
RedisOperationsSessionRepository repository = new RedisOperationsSessionRepository(
|
||||
this.sessionRedisOperations);
|
||||
this.policy = new RedisSessionExpirationPolicy(this.sessionRedisOperations,
|
||||
repository);
|
||||
repository::getExpirationsKey, repository::getSessionKey);
|
||||
this.session = new MapSession();
|
||||
this.session.setLastAccessedTime(Instant.ofEpochMilli(1429116694675L));
|
||||
this.session.setId("12345");
|
||||
|
||||
Reference in New Issue
Block a user