org.keycloak.component

## Interface AmphibianProviderFactory<ProviderType extends Provider>

- All Superinterfaces:
    ComponentFactory<ProviderType,ProviderType>, ConfiguredProvider, ProviderFactory<ProviderType>
  All Known Implementing Classes:
    AbstractMapProviderFactory, ConcurrentHashMapStorageProviderFactory, DeclarativeUserProfileProvider, MapAuthorizationStoreFactory, MapClientProviderFactory, MapClientScopeProviderFactory, MapGroupProviderFactory, MapRealmProviderFactory, MapRoleProviderFactory, MapRootAuthenticationSessionProviderFactory, MapUserLoginFailureProviderFactory, MapUserProviderFactory, MapUserSessionProviderFactory

      public interface AmphibianProviderFactory<ProviderType extends Provider>
      extends ProviderFactory<ProviderType>, ComponentFactory<ProviderType,ProviderType>

  Ancestor for a provider factory for both a standalone `ProviderFactory` and a `ComponentFactory`. It behaves as usual for a standalone provider, and for a component creates a factory customized according to configuration of this component. The component creation then behaves in the same way as if it was a standalone component, i.e.:
  - The component-specific factory is initialized via `ProviderFactory.init(org.keycloak.Config.Scope)` method where the configuration is taken from the component configuration, converted into a `Config.Scope`. The component configuration takes precedence over configuration of the provider factory.
  - Creation of the instances is done via standard `create(KeycloakSession)` method even for components, since there is now a specific factory per component.
  - Component-specific factories are cached inside the provider factory similarly to how provider factories are cached in the session factory.
  Author:
    hmlnarik
  See Also:
    `ComponentFactoryProviderFactory`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `default void` | `close()` This is called when the server shuts down.
    `ProviderType` | `create(KeycloakSession session)`
    `default ProviderType` | `create(KeycloakSession session, ComponentModel model)` Deprecated.
    `default List<ProviderConfigProperty>` | `getConfigProperties()`
    `default void` | `onUpdate(KeycloakSession session, RealmModel realm, ComponentModel oldModel, ComponentModel newModel)` Called after the component is updated.
    `default void` | `preRemove(KeycloakSession session, RealmModel realm, ComponentModel model)` Called before the component is removed.

    - ### Methods inherited from interface org.keycloak.component.ComponentFactory

      `getCommonProviderConfigProperties, getTypeMetadata, onCreate, validateConfiguration`

    - ### Methods inherited from interface org.keycloak.provider.ProviderFactory

      `getId, init, order, postInit`

    - ### Methods inherited from interface org.keycloak.provider.ConfiguredProvider

      `getHelpText`

- - ### Method Detail

    - #### create

          ProviderType create(KeycloakSession session)

      Specified by:
        `create` in interface `ComponentFactory<ProviderType extends Provider,ProviderType extends Provider>`
      Specified by:
        `create` in interface `ProviderFactory<ProviderType extends Provider>`

    - #### create

          @Deprecated
          default ProviderType create(KeycloakSession session,
                                                  ComponentModel model)

      Deprecated.
      Specified by:
        `create` in interface `ComponentFactory<ProviderType extends Provider,ProviderType extends Provider>`

    - #### getConfigProperties

          default List<ProviderConfigProperty> getConfigProperties()

      Specified by:
        `getConfigProperties` in interface `ConfiguredProvider`

    - #### onUpdate

          default void onUpdate(KeycloakSession session,
                                RealmModel realm,
                                ComponentModel oldModel,
                                ComponentModel newModel)

      Description copied from interface: `ComponentFactory`
      Called after the component is updated.
      Specified by:
        `onUpdate` in interface `ComponentFactory<ProviderType extends Provider,ProviderType extends Provider>`
        `oldModel` - old saved model
        `newModel` - new configuration

    - #### preRemove

          default void preRemove(KeycloakSession session,
                                 RealmModel realm,
                                 ComponentModel model)

      Description copied from interface: `ComponentFactory`
      Called before the component is removed.
      Specified by:
        `preRemove` in interface `ComponentFactory<ProviderType extends Provider,ProviderType extends Provider>`
        `model` - model of the component, which is going to be removed

    - #### close

          default void close()

      Description copied from interface: `ProviderFactory`
      This is called when the server shuts down.
      Specified by:
        `close` in interface `ProviderFactory<ProviderType extends Provider>`

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