private String registerConfigProvider()

in geronimo-jaspi/src/main/java/org/apache/geronimo/components/jaspi/AuthConfigFactoryImpl.java [194:231]


    private String registerConfigProvider(AuthConfigProvider provider, String layer, String appContext, String description, boolean persistent, Map<String, String> constructorParam, String className) {
        String key = ConfigProviderType.getRegistrationKey(layer, appContext);
        // Get or create context
        ConfigProviderInfo info = getRegistrations().get(key);
        List<RegistrationListener> listeners;
        if (info == null) {
            listeners = new ArrayList<RegistrationListener>();
        } else {
            if (persistent != info.isPersistent()) {
                throw new IllegalArgumentException("Cannot change the persistence state");
            }
            listeners = info.getListeners();
        }
        // Create provider
        ConfigProviderType ctx = new ConfigProviderType(layer, appContext, persistent, persistent? null: this);
        ctx.setDescription(description);
        if (persistent) {
            if (provider != null) {
                throw new IllegalStateException("Config provider supplied but should be created");
            }
            ctx.setClassName(className);
            ctx.setProperties(constructorParam);
            provider = ConfigProviderImpl.newConfigProvider(this, ctx);
        } else {
            if (provider == null) {
                throw new IllegalStateException("No config provider to set");
            }
        }
        info = new ConfigProviderInfo(provider, ctx, listeners, persistent);
        getRegistrations().put(key, info);

        // Notify listeners
        for (RegistrationListener listener : listeners) {
            listener.notify(info.getMessageLayer(), info.getAppContext());
        }
        // Return registration Id
        return key;
    }