Skip to content

Commit bb66286

Browse files
committed
Session: make sure MemorySessionStore save the sid when asking for newSession
1 parent 09865df commit bb66286

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

jooby/src/main/java/io/jooby/internal/MemorySessionStore.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

tests/src/test/java/io/jooby/SessionTest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package io.jooby;
22

3-
import io.jooby.jetty.Jetty;
43
import io.jooby.jwt.JwtSessionStore;
5-
import io.jooby.netty.Netty;
6-
import io.jooby.utow.Utow;
74
import okhttp3.Response;
85
import org.junit.jupiter.api.RepeatedTest;
96
import org.junit.jupiter.api.Test;

0 commit comments

Comments
 (0)