org.keycloak.storage

## Class AbstractStorageManager<ProviderType extends Provider,StorageProviderModelType extends CacheableStorageProviderModel>

- java.lang.Object
- - org.keycloak.storage.AbstractStorageManager<ProviderType,StorageProviderModelType>

- Type Parameters:
    `ProviderType` - This type will be used for looking for factories that produce instances of desired providers
    `StorageProviderModelType` - Type of model used for creating provider, it needs to extend CacheableStorageProviderModel as it has `isEnabled()` method and also extend PrioritizedComponentModel which is required for sorting providers based on its priorities
  Direct Known Subclasses:
    GroupStorageManager, UserCredentialStoreManager, UserStorageManager

      public abstract class AbstractStorageManager<ProviderType extends Provider,StorageProviderModelType extends CacheableStorageProviderModel>
      extends Object

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected KeycloakSession` | `session`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractStorageManager(KeycloakSession session, Class<? extends ProviderFactory> factoryTypeClass, Class<ProviderType> providerTypeClass, Function<ComponentModel,StorageProviderModelType> toStorageProviderModelTypeFunction, String configScope)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected <T> void` | `consumeEnabledStorageProvidersWithTimeout(RealmModel realm, Class<T> capabilityInterface, Consumer<T> consumer)` Gets all enabled StorageProviders that implements the capabilityInterface and call applyFunction on each !! Each StorageProvider has a limited time for consuming !!
    `protected <R,T> Stream<R>` | `flatMapEnabledStorageProvidersWithTimeout(RealmModel realm, Class<T> capabilityInterface, Function<T,? extends Stream<R>> applyFunction)` Gets all enabled StorageProviders that implements the capabilityInterface, applies applyFunction on each of them and then join the results together.
    `protected <T> Stream<T>` | `getEnabledStorageProviders(RealmModel realm, Class<T> capabilityInterface)` Returns stream of all storageProviders within the realm that implements the capabilityInterface.
    `protected <T extends ProviderType> ComponentFactory<T,ProviderType>` | `getStorageProviderFactory(String providerId)` Returns a factory with the providerId, which produce instances of type CreatedProviderType
    `protected <T> T` | `getStorageProviderInstance(RealmModel realm, String providerId, Class<T> capabilityInterface)`
    `protected <T> T` | `getStorageProviderInstance(RealmModel realm, String providerId, Class<T> capabilityInterface, boolean includeDisabled)` Returns an instance of provider with the providerId within the realm or null if storage provider with providerId doesn't implement capabilityInterface.
    `protected <T> T` | `getStorageProviderInstance(StorageProviderModelType model, Class<T> capabilityInterface)` Returns an instance of provider for the model or null if storage provider based on the model doesn't implement capabilityInterface.
    `protected <T> T` | `getStorageProviderInstance(StorageProviderModelType model, Class<T> capabilityInterface, boolean includeDisabled)` Returns an instance of provider for the model or null if storage provider based on the model doesn't implement capabilityInterface.
    `protected StorageProviderModelType` | `getStorageProviderModel(RealmModel realm, String providerId)` Returns an instance of StorageProvider model corresponding realm and providerId
    `static Stream<ComponentModel>` | `getStorageProviderModels(RealmModel realm, Class<? extends Provider> storageType)` Stream of ComponentModels of storageType.
    `protected Long` | `getStorageProviderTimeout()`
    `protected <R,T> Stream<R>` | `mapEnabledStorageProvidersWithTimeout(RealmModel realm, Class<T> capabilityInterface, Function<T,R> applyFunction)` Gets all enabled StorageProviders that implements the capabilityInterface, applies applyFunction on each of them and returns the stream.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### session

          protected final KeycloakSession session

  - ### Constructor Detail

    - #### AbstractStorageManager

          public AbstractStorageManager(KeycloakSession session,
                                        Class<? extends ProviderFactory> factoryTypeClass,
                                        Class<ProviderType> providerTypeClass,
                                        Function<ComponentModel,StorageProviderModelType> toStorageProviderModelTypeFunction,
                                        String configScope)

  - ### Method Detail

    - #### getStorageProviderTimeout

          protected Long getStorageProviderTimeout()

    - #### getStorageProviderFactory

          protected <T extends ProviderType> ComponentFactory<T,ProviderType> getStorageProviderFactory(String providerId)

      Returns a factory with the providerId, which produce instances of type CreatedProviderType
      Parameters:
        `providerId` - id of factory that produce desired instances
      Returns:
        A factory that implements `ComponentFactory<CreatedProviderType, ProviderType>`

    - #### getEnabledStorageProviders

          protected <T> Stream<T> getEnabledStorageProviders(RealmModel realm,
                                                             Class<T> capabilityInterface)

      Returns stream of all storageProviders within the realm that implements the capabilityInterface.
      Parameters:
        `realm` - realm
        `capabilityInterface` - class of desired capabilityInterface. For example, `GroupLookupProvider` or `UserQueryProvider`
      Returns:
        enabled storage providers for realm and @{code getProviderTypeClass()}

    - #### flatMapEnabledStorageProvidersWithTimeout

          protected <R,T> Stream<R> flatMapEnabledStorageProvidersWithTimeout(RealmModel realm,
                                                                              Class<T> capabilityInterface,
                                                                              Function<T,? extends Stream<R>> applyFunction)

      Gets all enabled StorageProviders that implements the capabilityInterface, applies applyFunction on each of them and then join the results together. !! Each StorageProvider has a limited time to respond, if it fails to do it, empty stream is returned !!
      Type Parameters:
        `R` - result of applyFunction
      Parameters:
        `realm` - realm
        `capabilityInterface` - class of desired capabilityInterface. For example, `GroupLookupProvider` or `UserQueryProvider`
        `applyFunction` - function that is applied on StorageProviders
      Returns:
        a stream with all results from all StorageProviders

    - #### mapEnabledStorageProvidersWithTimeout

          protected <R,T> Stream<R> mapEnabledStorageProvidersWithTimeout(RealmModel realm,
                                                                          Class<T> capabilityInterface,
                                                                          Function<T,R> applyFunction)

      Gets all enabled StorageProviders that implements the capabilityInterface, applies applyFunction on each of them and returns the stream. !! Each StorageProvider has a limited time to respond, if it fails to do it, null is returned !!
      Type Parameters:
        `R` - Result of applyFunction
      Parameters:
        `realm` - realm
        `capabilityInterface` - class of desired capabilityInterface. For example, `GroupLookupProvider` or `UserQueryProvider`
        `applyFunction` - function that is applied on StorageProviders
      Returns:
        First result from StorageProviders

    - #### consumeEnabledStorageProvidersWithTimeout

          protected <T> void consumeEnabledStorageProvidersWithTimeout(RealmModel realm,
                                                                       Class<T> capabilityInterface,
                                                                       Consumer<T> consumer)

      Gets all enabled StorageProviders that implements the capabilityInterface and call applyFunction on each !! Each StorageProvider has a limited time for consuming !!
      Parameters:
        `realm` - realm
        `capabilityInterface` - class of desired capabilityInterface. For example, `GroupLookupProvider` or `UserQueryProvider`
        `consumer` - function that is applied on StorageProviders

    - #### getStorageProviderInstance

          protected <T> T getStorageProviderInstance(RealmModel realm,
                                                     String providerId,
                                                     Class<T> capabilityInterface)

    - #### getStorageProviderInstance

          protected <T> T getStorageProviderInstance(RealmModel realm,
                                                     String providerId,
                                                     Class<T> capabilityInterface,
                                                     boolean includeDisabled)

      Returns an instance of provider with the providerId within the realm or null if storage provider with providerId doesn't implement capabilityInterface.
      Parameters:
        `realm` - realm
        `providerId` - id of ComponentModel within database/storage
        `capabilityInterface` - class of desired capabilityInterface. For example, `GroupLookupProvider` or `UserQueryProvider`
      Returns:
        an instance of type CreatedProviderType or null if storage provider with providerId doesn't implement capabilityInterface

    - #### getStorageProviderModel

          protected StorageProviderModelType getStorageProviderModel(RealmModel realm,
                                                                     String providerId)

      Returns an instance of StorageProvider model corresponding realm and providerId
      Parameters:
        `realm` - Realm.
        `providerId` - Id of desired provider.
      Returns:
        An instance of type StorageProviderModelType

    - #### getStorageProviderInstance

          protected <T> T getStorageProviderInstance(StorageProviderModelType model,
                                                     Class<T> capabilityInterface)

      Returns an instance of provider for the model or null if storage provider based on the model doesn't implement capabilityInterface.
      Type Parameters:
        `T` - Required capability interface type
      Parameters:
        `model` - StorageProviderModel obtained from database/storage
        `capabilityInterface` - class of desired capabilityInterface. For example, `GroupLookupProvider` or `UserQueryProvider`
      Returns:
        an instance of type T or null if storage provider based on the model doesn't exist or doesn't implement the capabilityInterface.

    - #### getStorageProviderInstance

          protected <T> T getStorageProviderInstance(StorageProviderModelType model,
                                                     Class<T> capabilityInterface,
                                                     boolean includeDisabled)

      Returns an instance of provider for the model or null if storage provider based on the model doesn't implement capabilityInterface.
      Parameters:
        `model` - StorageProviderModel obtained from database/storage
        `capabilityInterface` - class of desired capabilityInterface. For example, `GroupLookupProvider` or `UserQueryProvider`
        `includeDisabled` - If set to true, the method will return also disabled providers.
      Returns:
        an instance of type T or null if storage provider based on the model doesn't exist or doesn't implement the capabilityInterface.

    - #### getStorageProviderModels

          public static Stream<ComponentModel> getStorageProviderModels(RealmModel realm,
                                                                        Class<? extends Provider> storageType)

      Stream of ComponentModels of storageType.
      Parameters:
        `realm` - Realm.
        `storageType` - Type.
      Returns:
        Stream of ComponentModels

Copyright © 2020 JBoss by Red Hat. All rights reserved.