Search in sources :

Example 11 with Spi

use of org.keycloak.provider.Spi in project keycloak by keycloak.

the class DefaultKeycloakSessionFactory method init.

public void init() {
    serverStartupTimestamp = System.currentTimeMillis();
    ProviderManager pm = new ProviderManager(KeycloakDeploymentInfo.create().services(), getClass().getClassLoader(), Config.scope().getArray("providers"));
    for (Spi spi : pm.loadSpis()) {
        if (spi.isEnabled()) {
            spis.add(spi);
        }
    }
    factoriesMap = loadFactories(pm);
    synchronized (ProviderManagerRegistry.SINGLETON) {
        for (ProviderManager manager : ProviderManagerRegistry.SINGLETON.getPreBoot()) {
            Map<Class<? extends Provider>, Map<String, ProviderFactory>> factoryMap = loadFactories(manager);
            for (Map.Entry<Class<? extends Provider>, Map<String, ProviderFactory>> entry : factoryMap.entrySet()) {
                Map<String, ProviderFactory> factories = factoriesMap.get(entry.getKey());
                if (factories == null) {
                    factoriesMap.put(entry.getKey(), entry.getValue());
                } else {
                    factories.putAll(entry.getValue());
                }
            }
        }
        checkProvider();
        // Component factory must be initialized first, so that postInit in other factories can use component factories
        updateComponentFactoryProviderFactory();
        if (componentFactoryPF != null) {
            componentFactoryPF.postInit(this);
        }
        for (Map<String, ProviderFactory> factories : factoriesMap.values()) {
            for (ProviderFactory factory : factories.values()) {
                if (factory != componentFactoryPF) {
                    factory.postInit(this);
                }
            }
        }
        // make the session factory ready for hot deployment
        ProviderManagerRegistry.SINGLETON.setDeployer(this);
    }
    AdminPermissions.registerListener(this);
}
Also used : ProviderManager(org.keycloak.provider.ProviderManager) EnvironmentDependentProviderFactory(org.keycloak.provider.EnvironmentDependentProviderFactory) ComponentFactoryProviderFactory(org.keycloak.component.ComponentFactoryProviderFactory) ProviderFactory(org.keycloak.provider.ProviderFactory) Spi(org.keycloak.provider.Spi) HashMap(java.util.HashMap) Map(java.util.Map) MultivaluedHashMap(org.keycloak.common.util.MultivaluedHashMap) ComponentFactoryProvider(org.keycloak.component.ComponentFactoryProvider) Provider(org.keycloak.provider.Provider)

Aggregations

Spi (org.keycloak.provider.Spi)11 ProviderFactory (org.keycloak.provider.ProviderFactory)10 EnvironmentDependentProviderFactory (org.keycloak.provider.EnvironmentDependentProviderFactory)9 HashMap (java.util.HashMap)7 Map (java.util.Map)6 KeycloakDeploymentInfo (org.keycloak.provider.KeycloakDeploymentInfo)6 ProviderManager (org.keycloak.provider.ProviderManager)6 Provider (org.keycloak.provider.Provider)5 Config (org.keycloak.Config)3 JdbcDataSourceBuildItem (io.quarkus.agroal.spi.JdbcDataSourceBuildItem)2 DevServicesDatasourceResultBuildItem (io.quarkus.datasource.deployment.spi.DevServicesDatasourceResultBuildItem)2 IsDevelopment (io.quarkus.deployment.IsDevelopment)2 BuildProducer (io.quarkus.deployment.annotations.BuildProducer)2 BuildStep (io.quarkus.deployment.annotations.BuildStep)2 Consume (io.quarkus.deployment.annotations.Consume)2 ExecutionTime (io.quarkus.deployment.annotations.ExecutionTime)2 Record (io.quarkus.deployment.annotations.Record)2 CombinedIndexBuildItem (io.quarkus.deployment.builditem.CombinedIndexBuildItem)2 FeatureBuildItem (io.quarkus.deployment.builditem.FeatureBuildItem)2 GeneratedResourceBuildItem (io.quarkus.deployment.builditem.GeneratedResourceBuildItem)2