Interface SingleUseObjectProvider

All Superinterfaces:
Provider
All Known Implementing Classes:
InfinispanSingleUseObjectProvider, RemoteInfinispanSingleUseObjectProvider

public interface SingleUseObjectProvider extends Provider
Provides a cache to store data for single-use use case or the details about used action tokens.
Author:
Marek Posolda
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    Suffix to a key to indicate that token is considered revoked.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Checks if there is a record in the store for the given key.
    get(String key)
    Gets data associated with the given key.
    void
    put(String key, long lifespanSeconds, Map<String,String> notes)
    Stores the given data and guarantees that data should be available in the store for at least the time specified by parameter
    boolean
    putIfAbsent(String key, long lifespanInSeconds)
    Will try to put the key into the cache.
    This method returns data just if removal was successful.
    boolean
    replace(String key, Map<String,String> notes)
    Replaces data associated with the given key in the store if the store contains the key.

    Methods inherited from interface org.keycloak.provider.Provider

    close
  • Field Details

  • Method Details

    • put

      void put(String key, long lifespanSeconds, Map<String,String> notes)
      Stores the given data and guarantees that data should be available in the store for at least the time specified by parameter
      Parameters:
      key - String
      lifespanSeconds - Minimum lifespan for which successfully added key will be kept in the cache.
      notes - For revoked tokens, this must be an empty Map.
    • get

      Map<String,String> get(String key)
      Gets data associated with the given key.
      Parameters:
      key - String
      Returns:
      Map<String, String> Data associated with the given key or null if there is no associated data.
    • remove

      Map<String,String> remove(String key)
      This method returns data just if removal was successful. Implementation should guarantee that "remove" is single-use. So if 2 threads (even on different cluster nodes or on different cross-dc nodes) calls "remove(123)" concurrently, then just one of them is allowed to succeed and return data back. It can't happen that both will succeed.
      Parameters:
      key - String
      Returns:
      context data associated to the key. It returns null if there are no context data available.
    • replace

      boolean replace(String key, Map<String,String> notes)
      Replaces data associated with the given key in the store if the store contains the key.
      Parameters:
      key - String
      notes - Map<String, String> New data to be stored
      Returns:
      true if the store contains the key and data was replaced, otherwise false.
    • putIfAbsent

      boolean putIfAbsent(String key, long lifespanInSeconds)
      Will try to put the key into the cache. It will succeed just if key is not already there.
      Parameters:
      key -
      lifespanInSeconds - Minimum lifespan for which successfully added key will be kept in the cache.
      Returns:
      true if the key was successfully put into the cache. This means that same key wasn't in the cache before
    • contains

      boolean contains(String key)
      Checks if there is a record in the store for the given key.
      Parameters:
      key - String
      Returns:
      true if the record is present in the store, false otherwise.