mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Nicolas Capponi
07.10.2014 78b4564207562bc0f2ee5ad7dc3fef2174c8e568
opendj3-server-dev/src/server/org/opends/server/core/AccessControlConfigManager.java
@@ -65,7 +65,6 @@
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // Fully qualified class name.
  private static final String CLASS_NAME =
    "org.opends.server.core.AccessControlConfigManager";
@@ -78,7 +77,7 @@
  // The current configuration.
  private AccessControlHandlerCfg currentConfiguration;
  private ServerContext serverContext;
  /**
   * Creates a new instance of this access control configuration
@@ -140,22 +139,23 @@
  /**
   * Initializes the access control sub-system. This should only be
   * called at Directory Server startup. If an error occurs then an
   * exception will be thrown and the Directory Server will fail to
   * start (this prevents accidental exposure of user data due to
   * misconfiguration).
   * Initializes the access control sub-system. This should only be called at
   * Directory Server startup. If an error occurs then an exception will be
   * thrown and the Directory Server will fail to start (this prevents
   * accidental exposure of user data due to misconfiguration).
   *
   * @param serverContext
   *          The server context.
   * @throws ConfigException
   *           If an access control configuration error is detected.
   * @throws InitializationException
   *           If a problem occurs while initializing the access control
   *           handler that is not related to the Directory Server
   *           configuration.
   *           If a problem occurs while initializing the access control handler
   *           that is not related to the Directory Server configuration.
   */
  public void initializeAccessControl()
  public void initializeAccessControl(ServerContext serverContext)
         throws ConfigException, InitializationException
  {
    this.serverContext = serverContext;
    // Get the root configuration object.
    ServerManagementContext managementContext =
         ServerManagementContext.getInstance();
opendj3-server-dev/src/server/org/opends/server/core/AccountStatusNotificationHandlerConfigManager.java
@@ -64,20 +64,24 @@
          ConfigurationDeleteListener <AccountStatusNotificationHandlerCfg>
{
  // A mapping between the DNs of the config entries and the associated
  // notification handlers.
  private ConcurrentHashMap<DN,AccountStatusNotificationHandler>
          notificationHandlers;
  /**
   * A mapping between the DNs of the config entries and the associated
   * notification handlers.
   */
  private final ConcurrentHashMap<DN,AccountStatusNotificationHandler> notificationHandlers;
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this account status notification handler config
   * manager.
   * @param serverContext
   *            The server context.
   */
  public AccountStatusNotificationHandlerConfigManager()
  public AccountStatusNotificationHandlerConfigManager(ServerContext serverContext)
  {
    notificationHandlers =
         new ConcurrentHashMap<DN,AccountStatusNotificationHandler>();
    this.serverContext = serverContext;
    notificationHandlers = new ConcurrentHashMap<DN,AccountStatusNotificationHandler>();
  }
opendj3-server-dev/src/server/org/opends/server/core/BackendConfigManager.java
@@ -29,6 +29,8 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashSet;
@@ -42,13 +44,13 @@
import org.opends.server.config.ConfigException;
import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigConstants;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import static org.opends.messages.ConfigMessages.*;
import static org.opends.messages.ConfigMessages.*;
import static org.opends.server.util.StaticUtils.*;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.server.ConfigurationAddListener;
import org.opends.server.admin.server.ConfigurationDeleteListener;
@@ -73,41 +75,40 @@
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  /**
   * The mapping between configuration entry DNs and their corresponding backend
   * implementations.
   */
  private final ConcurrentHashMap<DN,Backend> registeredBackends;
  // The mapping between configuration entry DNs and their corresponding
  // backend implementations.
  private ConcurrentHashMap<DN,Backend> registeredBackends;
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this backend config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public BackendConfigManager()
  public BackendConfigManager(ServerContext serverContext)
  {
    // No implementation is required.
    this.serverContext = serverContext;
    registeredBackends = new ConcurrentHashMap<DN,Backend>();
  }
  /**
   * Initializes the configuration associated with the Directory Server
   * backends.  This should only be called at Directory Server startup.
   * backends. This should only be called at Directory Server startup.
   *
   * @throws  ConfigException  If a critical configuration problem prevents the
   *                           backend initialization from succeeding.
   *
   * @throws  InitializationException  If a problem occurs while initializing
   *                                   the backends that is not related to the
   *                                   server configuration.
   * @throws ConfigException
   *           If a critical configuration problem prevents the backend
   *           initialization from succeeding.
   * @throws InitializationException
   *           If a problem occurs while initializing the backends that is not
   *           related to the server configuration.
   */
  public void initializeBackendConfig()
         throws ConfigException, InitializationException
  {
    registeredBackends = new ConcurrentHashMap<DN,Backend>();
    // Create an internal server management context and retrieve
    // the root configuration.
    ServerManagementContext context = ServerManagementContext.getInstance();
opendj3-server-dev/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java
@@ -69,22 +69,25 @@
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // The mapping between configuration entry DNs and their
  // corresponding connection handler implementations.
  private final Map<DN, ConnectionHandler<?>> connectionHandlers =
        new ConcurrentHashMap<DN, ConnectionHandler<?>>();
  /**
   * The mapping between configuration entry DNs and their corresponding
   * connection handler implementations.
   */
  private final Map<DN, ConnectionHandler<?>> connectionHandlers;
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this connection handler config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public ConnectionHandlerConfigManager() {
    // No implementation is required.
  public ConnectionHandlerConfigManager(ServerContext serverContext) {
    this.serverContext = serverContext;
    connectionHandlers = new ConcurrentHashMap<DN, ConnectionHandler<?>>();
  }
  /**
   * {@inheritDoc}
   */
opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
@@ -1520,14 +1520,11 @@
      // Determine whether or not we should start the connection handlers.
      boolean startConnectionHandlers = !environmentConfig.disableConnectionHandlers();
      // Initialize all the schema elements.
      initializeSchema();
      // Initialize the plugin manager so that internal plugins can be
      // registered.
      // Allow internal plugins to be registered.
      pluginConfigManager.initializePluginConfigManager();
      // Virtual attribute handlers.
      virtualAttributeConfigManager.initializeVirtualAttributes();
      // The core Directory Server configuration.
@@ -1542,7 +1539,6 @@
      retentionPolicyConfigManager = new LogRetentionPolicyConfigManager(serverContext);
      retentionPolicyConfigManager.initializeLogRetentionPolicyConfig();
      // The server loggers.
      loggerConfigManager = new LoggerConfigManager(serverContext);
      loggerConfigManager.initializeLoggerConfig();
@@ -1581,13 +1577,13 @@
      initializeGroupManager();
      // Now we can initialize both subentry manager and group manager
      // for this backend.
      // Initialize both subentry manager and group manager
      // for the configuration backend.
      // TODO : why do we initialize these now ? Can't we do them after backend initialization ?
      subentryManager.performBackendInitializationProcessing(configHandler);
      groupManager.performBackendInitializationProcessing(configHandler);
      // Initialize the access control handler.
      AccessControlConfigManager.getInstance().initializeAccessControl();
      AccessControlConfigManager.getInstance().initializeAccessControl(serverContext);
      // Initialize all the backends and their associated suffixes
      // and initialize the workflows when workflow configuration mode is auto.
@@ -1605,65 +1601,44 @@
        configureWorkflowsManual();
      }
      // Check for and initialize user configured entry cache if any,
      // if not stick with default entry cache initialized earlier.
      // Check for and initialize user configured entry cache if any.
      // If not then stick with default entry cache initialized earlier.
      entryCacheConfigManager.initializeEntryCache();
      // Reset the map as we can no longer guarantee offline state.
      directoryServer.offlineBackendsStateIDs.clear();
      // Register the supported controls and supported features.
      initializeSupportedControls();
      initializeSupportedFeatures();
      // Initialize all the extended operation handlers.
      initializeExtendedOperations();
      // Initialize all the SASL mechanism handlers.
      initializeSASLMechanisms();
      // Initialize all the connection handlers
      // (including the administration connector).
      if (startConnectionHandlers)
      {
        // Includes the administration connector.
        initializeConnectionHandlers();
      }
      // Initialize all the monitor providers.
      monitorConfigManager = new MonitorConfigManager();
      monitorConfigManager = new MonitorConfigManager(serverContext);
      monitorConfigManager.initializeMonitorProviders();
      // Initialize all the authentication policy components.
      initializeAuthenticationPolicyComponents();
      // Load and initialize the user plugins.
      pluginConfigManager.initializeUserPlugins(null);
      // Initialize the extensions.
      extensionConfigManager = new ExtensionConfigManager();
      extensionConfigManager = new ExtensionConfigManager(serverContext);
      extensionConfigManager.initializeExtensions();
      // Initialize any synchronization providers that may be defined.
      if (!environmentConfig.disableSynchronization())
      {
        synchronizationProviderConfigManager =
          new SynchronizationProviderConfigManager();
        synchronizationProviderConfigManager
            .initializeSynchronizationProviders();
        synchronizationProviderConfigManager = new SynchronizationProviderConfigManager(serverContext);
        synchronizationProviderConfigManager.initializeSynchronizationProviders();
      }
      // Create and initialize the work queue.
      workQueue = new WorkQueueConfigManager().initializeWorkQueue();
      // Invoke the startup plugins.
      PluginResult.Startup startupPluginResult =
           pluginConfigManager.invokeStartupPlugins();
@@ -2178,10 +2153,9 @@
   *                                   the backends that is not related to the
   *                                   server configuration.
   */
  public void initializeBackends()
          throws ConfigException, InitializationException
  public void initializeBackends() throws ConfigException, InitializationException
  {
    backendConfigManager = new BackendConfigManager();
    backendConfigManager = new BackendConfigManager(serverContext);
    backendConfigManager.initializeBackendConfig();
@@ -2190,17 +2164,14 @@
    RootDSEBackendCfg rootDSECfg;
    try
    {
      RootCfg root =
           ServerManagementContext.getInstance().getRootConfiguration();
      RootCfg root = ServerManagementContext.getInstance().getRootConfiguration();
      rootDSECfg = root.getRootDSEBackend();
    }
    catch (Exception e)
    {
      logger.traceException(e);
      LocalizableMessage message = ERR_CANNOT_GET_ROOT_DSE_CONFIG_ENTRY.get(
          stackTraceToSingleLineString(e));
      throw new InitializationException(message, e);
      throw new InitializationException(ERR_CANNOT_GET_ROOT_DSE_CONFIG_ENTRY.get(
          stackTraceToSingleLineString(e)), e);
    }
    rootDSEBackend = new RootDSEBackend();
@@ -2417,8 +2388,8 @@
  {
    try
    {
      createAndRegisterWorkflowsWithDefaultNetworkGroup (configHandler);
      createAndRegisterWorkflowsWithDefaultNetworkGroup (rootDSEBackend);
      createAndRegisterWorkflowsWithDefaultNetworkGroup(configHandler);
      createAndRegisterWorkflowsWithDefaultNetworkGroup(rootDSEBackend);
    }
    catch (DirectoryException de)
    {
@@ -2519,15 +2490,15 @@
    createAndRegisterRemainingWorkflows();
    // Then configure the workflows
    workflowElementConfigManager = new WorkflowElementConfigManager();
    workflowElementConfigManager = new WorkflowElementConfigManager(serverContext);
    workflowElementConfigManager.initializeWorkflowElements();
    workflowConfigManager = new WorkflowConfigManager();
    workflowConfigManager = new WorkflowConfigManager(serverContext);
    workflowConfigManager.initializeWorkflows();
    if (networkGroupConfigManager == null)
    {
      networkGroupConfigManager = new NetworkGroupConfigManager();
      networkGroupConfigManager = new NetworkGroupConfigManager(serverContext);
      networkGroupConfigManager.initializeNetworkGroups();
    }
  }
@@ -2599,7 +2570,7 @@
  {
    try
    {
      groupManager = new GroupManager();
      groupManager = new GroupManager(serverContext);
    }
    catch (DirectoryException de)
    {
@@ -2646,15 +2617,14 @@
  /**
   * Initializes the set of supported controls for the Directory Server.
   *
   * @throws  ConfigException  If there is a configuration problem with the
   *                           list of supported controls.
   *
   * @throws  InitializationException  If a problem occurs while initializing
   *                                   the set of supported controls that is not
   *                                   related to the server configuration.
   * @throws ConfigException
   *           If there is a configuration problem with the list of supported
   *           controls.
   * @throws InitializationException
   *           If a problem occurs while initializing the set of supported
   *           controls that is not related to the server configuration.
   */
  private void initializeSupportedControls()
          throws ConfigException, InitializationException
  private void initializeSupportedControls() throws ConfigException, InitializationException
  {
    supportedControls.add(OID_LDAP_ASSERTION);
    supportedControls.add(OID_LDAP_READENTRY_PREREAD);
@@ -2676,28 +2646,23 @@
    supportedControls.add(OID_NS_PASSWORD_EXPIRING);
  }
  /**
   * Initializes the set of supported features for the Directory Server.
   *
   * @throws  ConfigException  If there is a configuration problem with the
   *                           list of supported features.
   *
   * @throws  InitializationException  If a problem occurs while initializing
   *                                   the set of supported features that is not
   *                                   related to the server configuration.
   * @throws ConfigException
   *           If there is a configuration problem with the list of supported
   *           features.
   * @throws InitializationException
   *           If a problem occurs while initializing the set of supported
   *           features that is not related to the server configuration.
   */
  private void initializeSupportedFeatures()
          throws ConfigException, InitializationException
  private void initializeSupportedFeatures() throws ConfigException, InitializationException
  {
    supportedFeatures.add(OID_ALL_OPERATIONAL_ATTRS_FEATURE);
    supportedFeatures.add(OID_MODIFY_INCREMENT_FEATURE);
    supportedFeatures.add(OID_TRUE_FALSE_FILTERS_FEATURE);
  }
  /**
   * Initializes the set of extended operation handlers for the Directory
   * Server.
@@ -2712,7 +2677,7 @@
  private void initializeExtendedOperations()
          throws ConfigException, InitializationException
  {
    extendedOperationConfigManager = new ExtendedOperationConfigManager();
    extendedOperationConfigManager = new ExtendedOperationConfigManager(serverContext);
    extendedOperationConfigManager.initializeExtendedOperationHandlers();
  }
@@ -2731,7 +2696,7 @@
  private void initializeSASLMechanisms()
          throws ConfigException, InitializationException
  {
    saslConfigManager = new SASLConfigManager();
    saslConfigManager = new SASLConfigManager(serverContext);
    saslConfigManager.initializeSASLMechanismHandlers();
  }
@@ -2752,7 +2717,7 @@
          throws ConfigException, InitializationException
  {
    if (connectionHandlerConfigManager == null) {
      connectionHandlerConfigManager = new ConnectionHandlerConfigManager();
      connectionHandlerConfigManager = new ConnectionHandlerConfigManager(serverContext);
    }
    connectionHandlerConfigManager.initializeConnectionHandlerConfig();
  }
@@ -2790,8 +2755,6 @@
    }
  }
  /**
   * Initializes the set of authentication policy components for use by the
   * Directory Server.
@@ -2803,32 +2766,20 @@
   *           If a problem occurs while initializing the authentication policy
   *           components that is not related to the server configuration.
   */
  public void initializeAuthenticationPolicyComponents()
         throws ConfigException, InitializationException
  public void initializeAuthenticationPolicyComponents() throws ConfigException, InitializationException
  {
    // Initialize all the password storage schemes.
    storageSchemeConfigManager = new PasswordStorageSchemeConfigManager();
    storageSchemeConfigManager = new PasswordStorageSchemeConfigManager(serverContext);
    storageSchemeConfigManager.initializePasswordStorageSchemes();
    // Initialize all the password validators.
    passwordValidatorConfigManager = new PasswordValidatorConfigManager();
    passwordValidatorConfigManager = new PasswordValidatorConfigManager(serverContext);
    passwordValidatorConfigManager.initializePasswordValidators();
    // Initialize all the password generators.
    passwordGeneratorConfigManager = new PasswordGeneratorConfigManager();
    passwordGeneratorConfigManager = new PasswordGeneratorConfigManager(serverContext);
    passwordGeneratorConfigManager.initializePasswordGenerators();
    accountStatusNotificationHandlerConfigManager = new AccountStatusNotificationHandlerConfigManager(serverContext);
    accountStatusNotificationHandlerConfigManager.initializeNotificationHandlers();
    // Initialize the account status notification handlers.
    accountStatusNotificationHandlerConfigManager =
         new AccountStatusNotificationHandlerConfigManager();
    accountStatusNotificationHandlerConfigManager.
         initializeNotificationHandlers();
    // Initialize all the authentication policies.
    authenticationPolicyConfigManager = new PasswordPolicyConfigManager(serverContext);
    authenticationPolicyConfigManager.initializeAuthenticationPolicies();
  }
opendj3-server-dev/src/server/org/opends/server/core/ExtendedOperationConfigManager.java
@@ -64,24 +64,26 @@
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  /**
   * A mapping between the DNs of the config entries and the associated extended
   * operation handlers.
   */
  private final ConcurrentHashMap<DN,ExtendedOperationHandler> handlers;
  // A mapping between the DNs of the config entries and the associated extended
  // operation handlers.
  private ConcurrentHashMap<DN,ExtendedOperationHandler> handlers;
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this extended operation config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public ExtendedOperationConfigManager()
  public ExtendedOperationConfigManager(ServerContext serverContext)
  {
    this.serverContext = serverContext;
    handlers = new ConcurrentHashMap<DN,ExtendedOperationHandler>();
  }
  /**
   * Initializes all extended operation handlers currently defined in the
   * Directory Server configuration.  This should only be called at Directory
opendj3-server-dev/src/server/org/opends/server/core/ExtensionConfigManager.java
@@ -63,27 +63,30 @@
       implements ConfigurationChangeListener<ExtensionCfg>,
                  ConfigurationAddListener<ExtensionCfg>,
                  ConfigurationDeleteListener<ExtensionCfg>
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // A mapping between the DNs of the config entries and the associated
  // extensions.
  private ConcurrentHashMap<DN,Extension> extensions;
  /**
   * A mapping between the DNs of the config entries and the associated
   * extensions.
   */
  private final ConcurrentHashMap<DN,Extension> extensions;
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this extension config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public ExtensionConfigManager()
  public ExtensionConfigManager(ServerContext serverContext)
  {
    this.serverContext = serverContext;
    extensions = new ConcurrentHashMap<DN,Extension>();
  }
  /**
   * Initializes all extensions currently defined in the Directory
   * Server configuration.  This should only be called at Directory Server
opendj3-server-dev/src/server/org/opends/server/core/GroupManager.java
@@ -110,30 +110,30 @@
  /** Dummy configuration DN for Group Manager. */
  private static final String CONFIG_DN = "cn=Group Manager,cn=config";
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this group manager.
   *
   * @throws DirectoryException If a problem occurs while
   *                            creating an instance of
   *                            the group manager.
   * @param serverContext
   *          The server context.
   * @throws DirectoryException
   *           If a problem occurs while creating an instance of the group
   *           manager.
   */
  public GroupManager() throws DirectoryException
  public GroupManager(ServerContext serverContext) throws DirectoryException
  {
    super(DN.valueOf(CONFIG_DN), EnumSet.of(
          PluginType.POST_OPERATION_ADD,
          PluginType.POST_OPERATION_DELETE,
          PluginType.POST_OPERATION_MODIFY,
          PluginType.POST_OPERATION_MODIFY_DN,
          PluginType.POST_SYNCHRONIZATION_ADD,
          PluginType.POST_SYNCHRONIZATION_DELETE,
          PluginType.POST_SYNCHRONIZATION_MODIFY,
          PluginType.POST_SYNCHRONIZATION_MODIFY_DN),
          true);
    super(DN.valueOf(CONFIG_DN), EnumSet.of(PluginType.POST_OPERATION_ADD,
        PluginType.POST_OPERATION_DELETE, PluginType.POST_OPERATION_MODIFY,
        PluginType.POST_OPERATION_MODIFY_DN,
        PluginType.POST_SYNCHRONIZATION_ADD,
        PluginType.POST_SYNCHRONIZATION_DELETE,
        PluginType.POST_SYNCHRONIZATION_MODIFY,
        PluginType.POST_SYNCHRONIZATION_MODIFY_DN), true);
    this.serverContext = serverContext;
    groupImplementations = new ConcurrentHashMap<DN,Group>();
    groupInstances       = new DITCacheMap<Group>();
    groupImplementations = new ConcurrentHashMap<DN, Group>();
    groupInstances = new DITCacheMap<Group>();
    lock = new ReentrantReadWriteLock();
opendj3-server-dev/src/server/org/opends/server/core/MonitorConfigManager.java
@@ -68,22 +68,26 @@
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // A mapping between the DNs of the config entries and the associated monitor
  // providers.
  private ConcurrentHashMap<DN,MonitorProvider<?>> monitors;
  /**
   * A mapping between the DNs of the config entries and the associated monitor
   * providers.
   */
  private final ConcurrentHashMap<DN,MonitorProvider<?>> monitors;
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this monitor provider config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public MonitorConfigManager()
  public MonitorConfigManager(ServerContext serverContext)
  {
    this.serverContext = serverContext;
    monitors = new ConcurrentHashMap<DN,MonitorProvider<?>>();
  }
  /**
   * Initializes all monitor providers currently defined in the Directory Server
   * configuration.  This should only be called at Directory Server startup.
opendj3-server-dev/src/server/org/opends/server/core/PasswordGeneratorConfigManager.java
@@ -67,22 +67,26 @@
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  /**
   * A mapping between the DNs of the config entries and the associated password
   * generators.
   */
  private final ConcurrentHashMap<DN,PasswordGenerator> passwordGenerators;
  // A mapping between the DNs of the config entries and the associated password
  // generators.
  private ConcurrentHashMap<DN,PasswordGenerator> passwordGenerators;
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this password generator config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public PasswordGeneratorConfigManager()
  public PasswordGeneratorConfigManager(ServerContext serverContext)
  {
    this.serverContext = serverContext;
    passwordGenerators = new ConcurrentHashMap<DN,PasswordGenerator>();
  }
  /**
   * Initializes all password generators currently defined in the Directory
   * Server configuration.  This should only be called at Directory Server
opendj3-server-dev/src/server/org/opends/server/core/PasswordStorageSchemeConfigManager.java
@@ -63,16 +63,23 @@
          ConfigurationAddListener    <PasswordStorageSchemeCfg>,
          ConfigurationDeleteListener <PasswordStorageSchemeCfg>
{
  // A mapping between the DNs of the config entries and the associated password
  // storage schemes.
  private ConcurrentHashMap<DN,PasswordStorageScheme> storageSchemes;
  /**
   * A mapping between the DNs of the config entries and the associated password
   * storage schemes.
   */
  private final ConcurrentHashMap<DN,PasswordStorageScheme> storageSchemes;
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this password storage scheme config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public PasswordStorageSchemeConfigManager()
  public PasswordStorageSchemeConfigManager(ServerContext serverContext)
  {
    this.serverContext = serverContext;
    storageSchemes = new ConcurrentHashMap<DN,PasswordStorageScheme>();
  }
opendj3-server-dev/src/server/org/opends/server/core/PasswordValidatorConfigManager.java
@@ -68,22 +68,26 @@
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // A mapping between the DNs of the config entries and the associated
  // password validators.
  private ConcurrentHashMap<DN,PasswordValidator> passwordValidators;
  /**
   * A mapping between the DNs of the config entries and the associated password
   * validators.
   */
  private final ConcurrentHashMap<DN,PasswordValidator> passwordValidators;
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this password validator config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public PasswordValidatorConfigManager()
  public PasswordValidatorConfigManager(ServerContext serverContext)
  {
    this.serverContext = serverContext;
    passwordValidators = new ConcurrentHashMap<DN,PasswordValidator>();
  }
  /**
   * Initializes all password validators currently defined in the Directory
   * Server configuration.  This should only be called at Directory Server
opendj3-server-dev/src/server/org/opends/server/core/SASLConfigManager.java
@@ -63,23 +63,27 @@
    ConfigurationChangeListener<SASLMechanismHandlerCfg>,
    ConfigurationAddListener<SASLMechanismHandlerCfg>,
    ConfigurationDeleteListener<SASLMechanismHandlerCfg>
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // A mapping between the DNs of the config entries and the
  // associated SASL
  // mechanism handlers.
  private ConcurrentHashMap<DN,SASLMechanismHandler> handlers;
  /**
   * A mapping between the DNs of the config entries and the associated SASL
   * mechanism handlers.
   */
  private final ConcurrentHashMap<DN, SASLMechanismHandler> handlers;
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this SASL mechanism handler config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public SASLConfigManager()
  public SASLConfigManager(ServerContext serverContext)
  {
    this.serverContext = serverContext;
    handlers = new ConcurrentHashMap<DN,SASLMechanismHandler>();
  }
opendj3-server-dev/src/server/org/opends/server/core/SubentryManager.java
@@ -304,8 +304,7 @@
  @Override
  public void performBackendInitializationProcessing(Backend backend)
  {
    InternalClientConnection conn =
         InternalClientConnection.getRootConnection();
    InternalClientConnection conn = InternalClientConnection.getRootConnection();
    LinkedList<Control> requestControls = new LinkedList<Control>();
    requestControls.add(new SubentriesControl(true, true));
opendj3-server-dev/src/server/org/opends/server/core/SynchronizationProviderConfigManager.java
@@ -64,29 +64,26 @@
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  /**
   * The mapping between configuration entry DNs and their corresponding
   * synchronization provider implementations.
   */
  private final ConcurrentHashMap<DN,SynchronizationProvider<SynchronizationProviderCfg>> registeredProviders;
  // The mapping between configuration entry DNs and their corresponding
  // synchronization provider implementations.
  private ConcurrentHashMap<DN,
    SynchronizationProvider<SynchronizationProviderCfg>> registeredProviders =
      new ConcurrentHashMap<DN,
        SynchronizationProvider<SynchronizationProviderCfg>>();
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this synchronization provider config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public SynchronizationProviderConfigManager()
  public SynchronizationProviderConfigManager(ServerContext serverContext)
  {
    // No implementation is required.
    this.serverContext = serverContext;
    registeredProviders = new ConcurrentHashMap<DN,SynchronizationProvider<SynchronizationProviderCfg>>();
  }
  /**
   * Initializes the configuration associated with the Directory Server
   * synchronization providers.  This should only be called at Directory Server
opendj3-server-dev/src/server/org/opends/server/core/WorkflowConfigManager.java
@@ -63,22 +63,26 @@
                  ConfigurationDeleteListener<WorkflowCfg>
{
  // A mapping between the DNs of the config entries and the associated
  // workflows.
  private ConcurrentHashMap<DN, WorkflowImpl> workflows;
  /**
   * A mapping between the DNs of the config entries and the associated
   * workflows.
   */
  private final ConcurrentHashMap<DN, WorkflowImpl> workflows;
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this workflow config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public WorkflowConfigManager()
  public WorkflowConfigManager(ServerContext serverContext)
  {
    this.serverContext = serverContext;
    workflows = new ConcurrentHashMap<DN, WorkflowImpl>();
  }
  /**
   * Initializes all workflows currently defined in the Directory
   * Server configuration.  This should only be called at Directory Server
opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroupConfigManager.java
@@ -27,6 +27,7 @@
package org.opends.server.core.networkgroups;
import static org.opends.messages.ConfigMessages.*;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@@ -40,6 +41,7 @@
import org.opends.server.admin.std.server.RootCfg;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ServerContext;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.util.Utils;
import org.opends.server.types.ConfigChangeResult;
@@ -62,22 +64,26 @@
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // A mapping between the DNs of the config entries and the associated
  // network groups.
  /**
   * A mapping between the DNs of the config entries and the associated
   * network groups.
   */
  private final ConcurrentHashMap<DN, NetworkGroup> networkGroups;
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this network group config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public NetworkGroupConfigManager()
  public NetworkGroupConfigManager(ServerContext serverContext)
  {
    this.serverContext = serverContext;
    networkGroups = new ConcurrentHashMap<DN, NetworkGroup>();
  }
  /**
   * {@inheritDoc}
   */
opendj3-server-dev/src/server/org/opends/server/tools/EncodePassword.java
@@ -467,7 +467,7 @@
      try
      {
        PasswordStorageSchemeConfigManager storageSchemeConfigManager =
             new PasswordStorageSchemeConfigManager();
             new PasswordStorageSchemeConfigManager(directoryServer.getServerContext());
        storageSchemeConfigManager.initializePasswordStorageSchemes();
      }
      catch (ConfigException ce)
opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElementConfigManager.java
@@ -43,6 +43,7 @@
import org.opends.server.admin.std.server.WorkflowElementCfg;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ServerContext;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
@@ -64,15 +65,19 @@
{
  private final ServerContext serverContext;
  /**
   * Creates a new instance of this workflow config manager.
   *
   * @param serverContext
   *            The server context.
   */
  public WorkflowElementConfigManager()
  public WorkflowElementConfigManager(ServerContext serverContext)
  {
    this.serverContext = serverContext;
  }
  /**
   * Initializes all workflow elements currently defined in the Directory
   * Server configuration.  This should only be called at Directory Server