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

    • Method Detail

      • getStorageProviderTimeout

        protected Long getStorageProviderTimeout()
      • getStorageProviderFactory

        protected <T extends ProviderTypeComponentFactory<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