Class InMemoryBasicSessionStore<A>

java.lang.Object
io.inverno.mod.session.AbstractSessionStore<A,Session<A>>
io.inverno.mod.session.InMemoryBasicSessionStore<A>
Type Parameters:
A - the session data type
All Implemented Interfaces:
BasicSessionStore<A>, SessionStore<A,Session<A>>

public class InMemoryBasicSessionStore<A> extends AbstractSessionStore<A,Session<A>> implements BasicSessionStore<A>

A basic session store implementation that stores sessions and their data in-memory in a concurrent map.

Since:
1.13
Author:
Jeremy Kuhn
  • Field Details

    • DEFAULT_CLEAN_PERIOD

      public static final long DEFAULT_CLEAN_PERIOD
      The default session cleaning period in milliseconds: 300000 (i.e. 5 minutes).
      See Also:
  • Method Details

    • builder

      public static <A> InMemoryBasicSessionStore.Builder<A> builder(Reactor reactor)

      Creates an in-memory basic session store builder using SessionIdGenerator.uuid() session id generator.

      Type Parameters:
      A - the session data type
      Parameters:
      reactor - the reactor
      Returns:
      an in-memory basic session store builder
    • builder

      public static <A> InMemoryBasicSessionStore.Builder<A> builder(Reactor reactor, SessionIdGenerator<A,Session<A>> sessionIdGenerator)

      Creates an in-memory basic session store builder.

      Type Parameters:
      A - the session data type
      Parameters:
      reactor - the reactor
      sessionIdGenerator - a session id generator
      Returns:
      an in-memory basic session store builder
    • getSessionIdGenerator

      public SessionIdGenerator<A,Session<A>> getSessionIdGenerator()
      Description copied from class: AbstractSessionStore

      Returns the session id generator.

      Overrides:
      getSessionIdGenerator in class AbstractSessionStore<A,Session<A>>
      Returns:
      the session id generator
    • create

      public Mono<Session<A>> create()
      Description copied from interface: SessionStore

      Creates a new session in the session store.

      This shall physically create a new session in the data store.

      Specified by:
      create in interface SessionStore<A,Session<A>>
      Returns:
      a mono for creating a session
    • get

      public Mono<Session<A>> get(String sessionId)
      Description copied from interface: SessionStore

      Returns the session identified by the specified session id.

      Specified by:
      get in interface SessionStore<A,Session<A>>
      Parameters:
      sessionId - a session id
      Returns:
      a mono emitting the session or an empty mono if no session exists with the specified identifier
    • getData

      public Mono<A> getData(String sessionId)
      Description copied from interface: SessionStore

      Returns the data of the session identified by the specified session id.

      Specified by:
      getData in interface SessionStore<A,Session<A>>
      Parameters:
      sessionId - a session id
      Returns:
      a mono emitting the session data or an empty mono if no session exists with specified identifier or if a session exists which does not define any data
    • move

      public Mono<Void> move(String sessionId, String newSessionId) throws IllegalStateException
      Description copied from interface: SessionStore

      Moves the session identified by the specified identifier to a new identifier.

      Specified by:
      move in interface SessionStore<A,Session<A>>
      Parameters:
      sessionId - a session id
      newSessionId - a new session id
      Returns:
      a mono for moving a session
      Throws:
      IllegalStateException - if there is no session with the specified identifier or if a session already exists at the specified new identifier
    • remove

      public Mono<Void> remove(String sessionId)
      Description copied from interface: SessionStore

      Removes the session identified by the specified identifier.

      Specified by:
      remove in interface SessionStore<A,Session<A>>
      Parameters:
      sessionId - a session id
      Returns:
      a mono for removing a session
    • save

      Description copied from interface: SessionStore

      Saves the specified session.

      Whether resolved session data are saved along with the session is implementation specific. Implementors must however at least guarantee that data that is explicitly set on a session using Session.setData(Object) are saved.

      Specified by:
      save in interface SessionStore<A,Session<A>>
      Parameters:
      session - a session
      Returns:
      a mono for saving a session
      Throws:
      IllegalArgumentException - if the specified session does not originate from this session store
      IllegalStateException - if the specified session does not exist in the store or if it was invalidated