Class AbstractSession

  • All Implemented Interfaces:
    Session, io.vertx.ext.web.sstore.impl.SessionInternal

    public abstract class AbstractSession
    extends Object
    implements Session, io.vertx.ext.web.sstore.impl.SessionInternal
    The abstract session class provides a barebones implementation for session storage implementors. This class will contain all the related data required for a session plus a couple of helper methods to verify the integrity and versioning of the data. This checksum is important to reduce the amount of times data is pushed to be stored on a backend. As a Vert.x Web user, you should not have to deal with this class directly but with the public interface that it implements.
    Author:
    Paulo Lopes
    • Constructor Detail

      • AbstractSession

        public AbstractSession()
        This constructor is mandatory (even though not referenced anywhere) is required for serialization purposes. Do not remove. It is required as part of the contract of the ClusterSerializable interface which some implementations might require.
      • AbstractSession

        public AbstractSession​(VertxContextPRNG random,
                               long timeout,
                               int length)
    • Method Detail

      • setId

        protected void setId​(String id)
      • setTimeout

        protected void setTimeout​(long timeout)
      • setData

        protected void setData​(JsonObject data)
      • setLastAccessed

        protected void setLastAccessed​(long lastAccessed)
      • setVersion

        protected void setVersion​(int version)
      • flushed

        public void flushed​(boolean skipCrc)
        Description copied from interface: io.vertx.ext.web.sstore.impl.SessionInternal
        Mark this session as flushed, this gives the object a change to clear any state management flags.
        Specified by:
        flushed in interface io.vertx.ext.web.sstore.impl.SessionInternal
        Parameters:
        skipCrc - if the intention is NOT to keep using the session after this call, a small optimization can be performed (skip updating the internal CRC) which is unnecessary.
      • id

        public String id()
        Specified by:
        id in interface Session
        Returns:
        The unique ID of the session. This is generated using a random secure UUID.
      • regenerateId

        public Session regenerateId()
        Specified by:
        regenerateId in interface Session
        Returns:
        The new unique ID of the session.
      • timeout

        public long timeout()
        Specified by:
        timeout in interface Session
        Returns:
        the amount of time in ms, after which the session will expire, if not accessed.
      • get

        public <T> T get​(String key)
        Description copied from interface: Session
        Get some data from the session
        Specified by:
        get in interface Session
        Parameters:
        key - the key of the data
        Returns:
        the data
      • put

        public Session put​(String key,
                           Object obj)
        Description copied from interface: Session
        Put some data in a session
        Specified by:
        put in interface Session
        Parameters:
        key - the key for the data
        obj - the data
        Returns:
        a reference to this, so the API can be used fluently
      • putIfAbsent

        public Session putIfAbsent​(String key,
                                   Object obj)
        Description copied from interface: Session
        Put some data in a session if absent
        Specified by:
        putIfAbsent in interface Session
        Parameters:
        key - the key for the data
        obj - the data
        Returns:
        a reference to this, so the API can be used fluently
      • computeIfAbsent

        public Session computeIfAbsent​(String key,
                                       java.util.function.Function<String,​Object> mappingFunction)
        Description copied from interface: Session
        Put some data in a session if absent. If the specified key is not already associated with a value (or is mapped to null), attempts to compute its value using the given mapping function and enters it into this map unless null.
        Specified by:
        computeIfAbsent in interface Session
        Parameters:
        key - the key for the data
        mappingFunction - a mapping function
        Returns:
        a reference to this, so the API can be used fluently
      • remove

        public <T> T remove​(String key)
        Description copied from interface: Session
        Remove some data from the session
        Specified by:
        remove in interface Session
        Parameters:
        key - the key of the data
        Returns:
        the data that was there or null if none there
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface Session
        Returns:
        true if the session has data
      • lastAccessed

        public long lastAccessed()
        Specified by:
        lastAccessed in interface Session
        Returns:
        the time the session was last accessed
      • setAccessed

        public void setAccessed()
        Description copied from interface: Session
        Mark the session as being accessed.
        Specified by:
        setAccessed in interface Session
      • destroy

        public void destroy()
        Description copied from interface: Session
        Destroy the session
        Specified by:
        destroy in interface Session
      • isDestroyed

        public boolean isDestroyed()
        Specified by:
        isDestroyed in interface Session
        Returns:
        has the session been destroyed?
      • isRegenerated

        public boolean isRegenerated()
        Specified by:
        isRegenerated in interface Session
        Returns:
        has the session been renewed?
      • oldId

        public String oldId()
        Specified by:
        oldId in interface Session
        Returns:
        old ID if renewed
      • version

        public int version()
      • incrementVersion

        public void incrementVersion()
      • crc

        protected int crc()
      • checksum

        protected int checksum()
      • writeDataToBuffer

        protected void writeDataToBuffer​(Buffer buffer)
      • readDataFromBuffer

        protected int readDataFromBuffer​(int pos,
                                         Buffer buffer)
      • readDataFromBuffer

        protected void readDataFromBuffer​(Buffer buffer)