Class InfinispanChangelogBasedTransaction<K,V extends SessionEntity>

java.lang.Object
org.keycloak.models.AbstractKeycloakTransaction
org.keycloak.models.sessions.infinispan.changes.InfinispanChangelogBasedTransaction<K,V>
All Implemented Interfaces:
KeycloakTransaction, SessionsChangelogBasedTransaction<K,V>

public class InfinispanChangelogBasedTransaction<K,V extends SessionEntity> extends AbstractKeycloakTransaction implements SessionsChangelogBasedTransaction<K,V>
Author:
Marek Posolda
  • Field Details

  • Constructor Details

  • Method Details

    • addTask

      public void addTask(K key, SessionUpdateTask<V> task)
      Specified by:
      addTask in interface SessionsChangelogBasedTransaction<K,V extends SessionEntity>
    • addTask

      public void addTask(K key, SessionUpdateTask<V> task, V entity, UserSessionModel.SessionPersistenceState persistenceState)
    • reloadEntityInCurrentTransaction

      public void reloadEntityInCurrentTransaction(RealmModel realm, K key, SessionEntityWrapper<V> entity)
    • get

      public SessionEntityWrapper<V> get(K key)
    • commitImpl

      protected void commitImpl()
      Specified by:
      commitImpl in class AbstractKeycloakTransaction
    • rollbackImpl

      protected void rollbackImpl()
      Specified by:
      rollbackImpl in class AbstractKeycloakTransaction
    • getCache

      public org.infinispan.Cache<K,SessionEntityWrapper<V>> getCache()
      Returns:
      The Cache backing up this transaction.
    • importSession

      public V importSession(RealmModel realmModel, K key, SessionEntityWrapper<V> session, long lifespan, long maxIdle)
      Imports a session from an external source into the Cache.

      If a session already exists in the cache, this method does not insert the session. The invoker should use the session returned by this method invocation. When the session is successfully imported, this method returns null and the session can be used by the transaction.

      This transaction will keep track of further changes in the session.

      Parameters:
      realmModel - The RealmModel where the session belong to.
      key - The cache's key.
      session - The session to import.
      lifespan - How long the session stays cached until it is expired and removed.
      maxIdle - How long the session can be idle (without reading or writing) before being removed.
      Returns:
      The existing cached session. If it returns null, it means the session used in the parameters was cached.
    • importSessionsConcurrently

      public void importSessionsConcurrently(RealmModel realmModel, Map<K,SessionEntityWrapper<V>> sessions, SessionFunction<V> lifespanFunction, SessionFunction<V> maxIdleFunction)
      Imports multiple sessions from an external source into the Cache.

      If the lifespanFunction or maxIdleFunction returns SessionTimeouts.ENTRY_EXPIRED_FLAG, the session is considered expired and not stored in the cache.

      Also, if one or more sessions already exist in the Cache, it will not be imported.

      This transaction will keep track of further changes in the sessions.

      Parameters:
      realmModel - The RealmModel where the sessions belong to.
      sessions - The Map with the cache's key/session mapping to be imported.
      lifespanFunction - The Function to compute the lifespan of the session. It defines how long the session should be stored in the cache until it is removed.
      maxIdleFunction - The Function to compute the max-idle of the session. It defines how long the session will be idle before it is removed.