package org.basex.modules; import org.basex.http.*; import org.basex.query.*; import org.basex.query.value.*; import org.basex.query.value.item.*; /** * This module contains functions for processing server-side session data. * * @author BaseX Team 2005-17, BSD License * @author Christian Gruen */ public final class Session extends QueryModule { /** * Returns the session ID. * @return session id * @throws QueryException query exception */ @Requires(Permission.NONE) public Str id() throws QueryException { return session().id(); } /** * Returns the creation time of the session. * @return creation time * @throws QueryException query exception */ @Requires(Permission.NONE) public Dtm created() throws QueryException { return session().created(); } /** * Returns the last access time of the session. * @return creation time * @throws QueryException query exception */ @Requires(Permission.NONE) public Dtm accessed() throws QueryException { return session().accessed(); } /** * Returns all session attributes. * @return session attributes * @throws QueryException query exception */ @Requires(Permission.NONE) public Value names() throws QueryException { return session().names(); } /** * Returns a session attribute. * @param key key to be requested * @return session attribute * @throws QueryException query exception */ @Requires(Permission.NONE) public Value get(final Str key) throws QueryException { return session().get(key); } /** * Returns a session attribute. * @param key key to be requested * @param def default value * @return session attribute * @throws QueryException query exception */ @Requires(Permission.NONE) public Value get(final Str key, final Value def) throws QueryException { return session().get(key, def); } /** * Updates a session attribute. * @param key key of the attribute * @param value value to be stored * @throws QueryException query exception */ @Requires(Permission.NONE) public void set(final Str key, final Value value) throws QueryException { session().set(key, value); } /** * Removes a session attribute. * @param key key of the attribute * @throws QueryException query exception */ @Requires(Permission.NONE) public void delete(final Str key) throws QueryException { session().delete(key); } /** * Closes a session. * @throws QueryException query exception */ @Requires(Permission.NONE) public void close() throws QueryException { session().close(); } /** * Returns a session instance. * @return request * @throws QueryException query exception */ private ASession session() throws QueryException { if(queryContext.http == null) throw SessionErrors.noContext(); return new ASession(((HTTPConnection) queryContext.http).req.getSession(), queryContext); } }