From 699bdf94a03cacb266be57931d89ecd36f6c36ff Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Wed, 30 Jul 2014 11:13:27 -0500 Subject: [PATCH] Remove Sesion.setLastAccessedTime Fixes #16 --- .../java/org/springframework/session/MapSession.java | 1 - .../springframework/session/MapSessionRepository.java | 9 +++++++-- .../main/java/org/springframework/session/Session.java | 6 ------ .../data/redis/RedisOperationsSessionRepository.java | 5 +++-- .../session/web/SessionRepositoryFilter.java | 6 ------ .../org/springframework/session/MapSessionTests.java | 5 ----- .../redis/RedisOperationsSessionRepositoryTests.java | 4 +++- 7 files changed, 13 insertions(+), 23 deletions(-) diff --git a/spring-session/src/main/java/org/springframework/session/MapSession.java b/spring-session/src/main/java/org/springframework/session/MapSession.java index 2688a90f..ab95cc38 100644 --- a/spring-session/src/main/java/org/springframework/session/MapSession.java +++ b/spring-session/src/main/java/org/springframework/session/MapSession.java @@ -80,7 +80,6 @@ public final class MapSession implements Session { this.maxInactiveInterval = session.getMaxInactiveInterval(); } - @Override public void setLastAccessedTime(long lastAccessedTime) { this.lastAccessedTime = lastAccessedTime; } diff --git a/spring-session/src/main/java/org/springframework/session/MapSessionRepository.java b/spring-session/src/main/java/org/springframework/session/MapSessionRepository.java index 67872afa..280d39bc 100644 --- a/spring-session/src/main/java/org/springframework/session/MapSessionRepository.java +++ b/spring-session/src/main/java/org/springframework/session/MapSessionRepository.java @@ -53,8 +53,13 @@ public class MapSessionRepository implements SessionRepository { } public Session getSession(String id) { - Session result = sessions.get(id); - return result == null ? null : new MapSession(result); + Session saved = sessions.get(id); + if(saved == null) { + return null; + } + MapSession result = new MapSession(saved); + result.setLastAccessedTime(System.currentTimeMillis()); + return result; } public void delete(String id) { diff --git a/spring-session/src/main/java/org/springframework/session/Session.java b/spring-session/src/main/java/org/springframework/session/Session.java index d1372cac..7feaa89f 100644 --- a/spring-session/src/main/java/org/springframework/session/Session.java +++ b/spring-session/src/main/java/org/springframework/session/Session.java @@ -26,12 +26,6 @@ import java.util.Set; * @since 1.0 */ public interface Session { - /** - * Allows setting the last time this {@link Session} was accessed. - * - * @param lastAccessedTime the last time the client sent a request associated with the session expressed in milliseconds since midnight of 1/1/1970 GMT - */ - void setLastAccessedTime(long lastAccessedTime); /** * Gets the time when this session was created in milliseconds since midnight of 1/1/1970 GMT. diff --git a/spring-session/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java b/spring-session/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java index ff80ba98..f72207e5 100644 --- a/spring-session/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java +++ b/spring-session/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java @@ -172,7 +172,9 @@ public class RedisOperationsSessionRepository implements SessionRepository extends OncePerRequestFi S session = sessionRepository.getSession(requestedSessionId); if(session != null) { this.requestedValidSession = true; - session.setLastAccessedTime(System.currentTimeMillis()); currentSession = new HttpSessionWrapper(session, getServletContext()); currentSession.setNew(false); return currentSession; @@ -199,11 +198,6 @@ public class SessionRepositoryFilter extends OncePerRequestFi this.servletContext = servletContext; } - void updateLastAccessedTime() { - checkState(); - session.setLastAccessedTime(System.currentTimeMillis()); - } - @Override public long getCreationTime() { checkState(); diff --git a/spring-session/src/test/java/org/springframework/session/MapSessionTests.java b/spring-session/src/test/java/org/springframework/session/MapSessionTests.java index c24c5a54..d614a4ba 100644 --- a/spring-session/src/test/java/org/springframework/session/MapSessionTests.java +++ b/spring-session/src/test/java/org/springframework/session/MapSessionTests.java @@ -52,11 +52,6 @@ public class MapSessionTests { static class CustomSession implements Session { - @Override - public void setLastAccessedTime(long lastAccessedTime) { - - } - @Override public long getCreationTime() { return 0; diff --git a/spring-session/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java b/spring-session/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java index 4f82f9c5..0ef1342f 100644 --- a/spring-session/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java +++ b/spring-session/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java @@ -133,6 +133,7 @@ public class RedisOperationsSessionRepositoryTests { public void getSessionFound() { String attrName = "attrName"; MapSession expected = new MapSession(); + expected.setLastAccessedTime(System.currentTimeMillis() - 60000); expected.setAttribute(attrName, "attrValue"); when(redisOperations.boundHashOps(getKey(expected.getId()))).thenReturn(boundHashOperations); Map map = map( @@ -142,13 +143,14 @@ public class RedisOperationsSessionRepositoryTests { LAST_ACCESSED_ATTR, expected.getLastAccessedTime()); when(boundHashOperations.entries()).thenReturn(map); + long now = System.currentTimeMillis(); RedisSession session = redisRepository.getSession(expected.getId()); assertThat(session.getId()).isEqualTo(expected.getId()); assertThat(session.getAttributeNames()).isEqualTo(expected.getAttributeNames()); assertThat(session.getAttribute(attrName)).isEqualTo(expected.getAttribute(attrName)); assertThat(session.getCreationTime()).isEqualTo(expected.getCreationTime()); assertThat(session.getMaxInactiveInterval()).isEqualTo(expected.getMaxInactiveInterval()); - assertThat(session.getLastAccessedTime()).isEqualTo(expected.getLastAccessedTime()); + assertThat(session.getLastAccessedTime()).isGreaterThanOrEqualTo(now); }