@@ -0,0 +1,1303 @@
+package org.realityforge.ssf;%0A%0Aimport javax.annotation.Nonnull;%0Aimport javax.annotation.Nullable;%0A%0A/**%0A * A simple interface for managing session data.%0A */%0Apublic interface SessionManager%0A%7B%0A  /**%0A   * Return the key used to access session information.%0A   * Typically this is used as part of the cookie or header name in the dependent system.%0A   *%0A   * @return the key used to access session information.%0A   */%0A  @Nonnull%0A  String getSessionKey();%0A%0A  /**%0A   * Return the session for specified ID.%0A   * Session ID's are effectively opaque.%0A   *%0A   * @param sessionID the session id.%0A   * @return the associated session or null if no such session.%0A   */%0A  @Nullable%0A  SessionInfo getSession( @Nonnull String sessionID );%0A%0A  /**%0A   * Invalidate session with specified session ID.%0A   * Ignore if no session with specified id.%0A   *%0A   * @param sessionID the session id.%0A   * @return true if a session was invalidated, false otherwise.%0A   */%0A  boolean invalidateSession( @Nonnull String sessionID );%0A%0A  /**%0A   * Create session for specified username.%0A   * It is assumed the username has already been authenticated and this is just tracking the session.%0A   *%0A   * @param username the associated username.%0A   * @return the new session.%0A   */%0A  @Nonnull%0A  SessionInfo createSession( @Nonnull String username );%0A%7D%0A

Add a simple SessionManager interface