66package io .jooby .internal ;
77
88import io .jooby .Context ;
9+ import io .jooby .Router ;
910import io .jooby .Session ;
1011import io .jooby .SessionToken ;
1112import io .jooby .SessionOptions ;
1213import io .jooby .SessionStore ;
1314
15+ import javax .annotation .Nonnull ;
1416import java .time .Instant ;
1517import java .util .Map ;
1618import java .util .concurrent .ConcurrentHashMap ;
@@ -30,6 +32,16 @@ public SessionData(Instant creationTime, Instant lastAccessedTime, Map hash) {
3032
3133 private ConcurrentHashMap <String , SessionData > sessions = new ConcurrentHashMap <>();
3234
35+ private SessionToken token ;
36+
37+ public MemorySessionStore (SessionToken token ) {
38+ this .token = token ;
39+ }
40+
41+ @ Nonnull @ Override public SessionToken getSessionToken () {
42+ return token ;
43+ }
44+
3345 @ Override public Session newSession (Context ctx ) {
3446 SessionOptions options = sessionOptions (ctx );
3547 String sessionId = options .generateId ();
@@ -38,13 +50,12 @@ public SessionData(Instant creationTime, Instant lastAccessedTime, Map hash) {
3850 .setCreationTime (now )
3951 .setLastAccessedTime (now )
4052 .setNew (true );
41- options . getSessionToken () .saveToken (ctx , sessionId );
53+ token .saveToken (ctx , sessionId );
4254 return session ;
4355 }
4456
4557 @ Override public Session findSession (Context ctx ) {
46- SessionOptions options = sessionOptions (ctx );
47- String sessionId = options .getSessionToken ().findToken (ctx );
58+ String sessionId = token .findToken (ctx );
4859 if (sessionId == null ) {
4960 return null ;
5061 }
@@ -53,7 +64,7 @@ public SessionData(Instant creationTime, Instant lastAccessedTime, Map hash) {
5364 Session session = Session .create (ctx , sessionId , data .hash );
5465 session .setLastAccessedTime (data .lastAccessedTime );
5566 session .setCreationTime (data .creationTime );
56- options . getSessionToken () .saveToken (ctx , sessionId );
67+ token .saveToken (ctx , sessionId );
5768 return session ;
5869 }
5970 return null ;
@@ -62,9 +73,7 @@ public SessionData(Instant creationTime, Instant lastAccessedTime, Map hash) {
6273 @ Override public void deleteSession (Context ctx ) {
6374 String sessionId = ctx .session ().getId ();
6475 sessions .remove (sessionId );
65- SessionOptions options = sessionOptions (ctx );
66- SessionToken store = options .getSessionToken ();
67- store .deleteToken (ctx , sessionId );
76+ token .deleteToken (ctx , sessionId );
6877 }
6978
7079 @ Override public void save (Context ctx ) {
@@ -79,6 +88,7 @@ public SessionData(Instant creationTime, Instant lastAccessedTime, Map hash) {
7988 }
8089
8190 private static SessionOptions sessionOptions (Context ctx ) {
82- return ctx .getRouter ().getSessionOptions ();
91+ Router router = ctx .getRouter ();
92+ return router .getSessionOptions ();
8393 }
8494}
0 commit comments