Class ClientStorageService

    • Constructor Detail

      • ClientStorageService

        public ClientStorageService()
        Constructor.
    • Method Detail

      • setCleanupInterval

        public void setCleanupInterval​(@Nullable
                                       Duration interval)
        Sets the time between one cleanup and another. A value of 0 indicates that no cleanup will be performed. This setting cannot be changed after the service has been initialized.
        Overrides:
        setCleanupInterval in class AbstractStorageService
        Parameters:
        interval - time between one cleanup and another
      • isServerSide

        public boolean isServerSide()
        Returns true iff the storage implementation manages data independent of the client.
        Specified by:
        isServerSide in interface StorageCapabilitiesEx
        Returns:
        true iff the storage implementation manages data independent of the client
      • isClustered

        public boolean isClustered()
        Returns true iff the storage implementation manages data independent of a single server node.
        Specified by:
        isClustered in interface StorageCapabilitiesEx
        Returns:
        true iff the storage implementation manages data independent of a single server node
      • setHttpServletRequestSupplier

        public void setHttpServletRequestSupplier​(@Nonnull
                                                  NonnullSupplier<javax.servlet.http.HttpServletRequest> requestSupplier)
        Set the Supplier for the servlet request in which to manage per-request data.
        Parameters:
        requestSupplier - supplier for the servlet request in which to manage data
      • getHttpServletRequest

        @Nonnull
        private javax.servlet.http.HttpServletRequest getHttpServletRequest()
        Get the current HTTP request if available.
        Returns:
        current HTTP request
      • setCookieManager

        public void setCookieManager​(@Nonnull
                                     CookieManager manager)
        Set the CookieManager to use.
        Parameters:
        manager - the CookieManager to use.
      • getStorageName

        @Nonnull
        @NotEmpty
        public String getStorageName()
        Get the label to use for storage tracking.
        Returns:
        label to use
      • setStorageName

        public void setStorageName​(@Nonnull @NotEmpty
                                   String name)
        Set the label to use for storage tracking.
        Parameters:
        name - label to use
      • setDataSealer

        public void setDataSealer​(@Nonnull
                                  DataSealer sealer)
        Set the DataSealer to use for data security.
        Parameters:
        sealer - DataSealer to use for data security
      • init

        public void init​(javax.servlet.FilterConfig filterConfig)
                  throws javax.servlet.ServletException
        Specified by:
        init in interface javax.servlet.Filter
        Throws:
        javax.servlet.ServletException
      • doFilter

        public void doFilter​(javax.servlet.ServletRequest request,
                             javax.servlet.ServletResponse response,
                             javax.servlet.FilterChain chain)
                      throws IOException,
                             javax.servlet.ServletException
        Specified by:
        doFilter in interface javax.servlet.Filter
        Throws:
        IOException
        javax.servlet.ServletException
      • getCleanupTask

        @Nullable
        protected TimerTask getCleanupTask()
        Returns a cleanup task function to schedule for background cleanup.

        The default implementation does not supply one.

        Overrides:
        getCleanupTask in class AbstractStorageService
        Returns:
        a task object, or null
      • isLoaded

        boolean isLoaded()
                  throws IOException
        Check whether data from the client has been loaded into the current session.

        This method should not be called while holding the session lock returned by getLock().

        Returns:
        true iff the HttpSession contains a storage object
        Throws:
        IOException - to signal an error
      • load

        void load​(@Nullable @NotEmpty
                  String raw,
                  @Nonnull
                  ClientStorageService.ClientStorageSource source)
        Reconstitute stored data and inject it into the session.

        This method should not be called while holding the session lock returned by getLock().

        Parameters:
        raw - encrypted data to load as storage contents, or null if none
        source - indicates source of the data for later use
      • save

        @Nullable
        ClientStorageServiceOperation save()
        Serialize the stored data if it's in a "modified/dirty" state.

        This method should not be called while holding the session lock returned by getLock().

        Returns:
        if dirty, the operation to perform, if not dirty, a null value
      • getLogPrefix

        @Nonnull
        @NotEmpty
        String getLogPrefix()
        Get a prefix for log messages.
        Returns:
        logging prefix