@@ -38,11 +38,13 @@ public MemorySessionStore(SessionToken token) {
3838
3939 @ Override public Session newSession (Context ctx ) {
4040 String sessionId = token .newToken ();
41- Instant now = Instant .now ();
42- Session session = Session .create (ctx , sessionId )
43- .setCreationTime (now )
44- .setLastAccessedTime (now )
45- .setNew (true );
41+ SessionData data = sessions .computeIfAbsent (sessionId , sid -> {
42+ Instant now = Instant .now ();
43+ return new SessionData (now , now , new ConcurrentHashMap ());
44+ });
45+
46+ Session session = restore (ctx , sessionId , data );
47+
4648 token .saveToken (ctx , sessionId );
4749 return session ;
4850 }
@@ -54,9 +56,7 @@ public MemorySessionStore(SessionToken token) {
5456 }
5557 SessionData data = sessions .get (sessionId );
5658 if (data != null ) {
57- Session session = Session .create (ctx , sessionId , data .hash );
58- session .setLastAccessedTime (data .lastAccessedTime );
59- session .setCreationTime (data .creationTime );
59+ Session session = restore (ctx , sessionId , data );
6060 token .saveToken (ctx , sessionId );
6161 return session ;
6262 }
@@ -79,4 +79,10 @@ public MemorySessionStore(SessionToken token) {
7979 new SessionData (session .getCreationTime (), Instant .now (), session .toMap ()));
8080 token .saveToken (ctx , sessionId );
8181 }
82+
83+ private Session restore (Context ctx , String sessionId , SessionData data ) {
84+ return Session .create (ctx , sessionId , data .hash )
85+ .setLastAccessedTime (data .lastAccessedTime )
86+ .setCreationTime (data .creationTime );
87+ }
8288}
0 commit comments