Class BackendConfigManager

    • Constructor Detail

      • BackendConfigManager

        public BackendConfigManager​(ServerContext serverContext)
        Creates a new instance of this backend config manager.
        Parameters:
        serverContext - The server context.
    • Method Detail

      • initializeBackendConfig

        public void initializeBackendConfig​(Collection<String> backendIDsToStart)
                                     throws ConfigException,
                                            InitializationException
        Initializes the configuration associated with the Directory Server backends. This should only be called at Directory Server startup.
        Parameters:
        backendIDsToStart - The list of backendID to start. Everything will be started if empty.
        Throws:
        ConfigException - If a critical configuration problem prevents the backend initialization from succeeding.
        InitializationException - If a problem occurs while initializing the backends that is not related to the server configuration.
      • initializeBackends

        public void initializeBackends​(Collection<String> backendIDsToStart,
                                       RootCfg root)
                                throws ConfigException
        Initializes specified backends. If a backend has been already initialized, do nothing. This should only be called at Directory Server startup, after #initializeBackendConfig()
        Parameters:
        backendIDsToStart - The list of backendID to start. Everything will be started if empty.
        root - The configuration of the server's Root backend
        Throws:
        ConfigException - If a critical configuration problem prevents the backend initialization from succeeding.
      • getAllBackends

        public Set<Backend<?>> getAllBackends()
        Returns the set of all backends.
        Returns:
        all backends
      • getLocalBackends

        public Set<LocalBackend<?>> getLocalBackends()
        Returns the set of local backends.
        Returns:
        the local backends
      • getLocalBackendWithBaseDN

        public LocalBackend<?> getLocalBackendWithBaseDN​(DN baseDN)
        Retrieves the local backend with the specified base DN.
        Parameters:
        baseDN - The DN that is registered as one of the base DNs for the backend to retrieve.
        Returns:
        The local backend with the specified base DN, or null if there is no local backend registered with the specified base DN.
      • getRootDSEBackend

        public RootDSEBackend getRootDSEBackend()
        Retrieves the Root DSE backend.
        Returns:
        the Root DSE backend.
      • getParentDNInSuffix

        public DN getParentDNInSuffix​(DN dn)
        Retrieves the DN that is the immediate parent for this DN. This method does take the server's naming context configuration into account, so if the current DN is a naming context for the server, then it will not be considered to have a parent.
        Parameters:
        dn - the
        Returns:
        The DN that is the immediate parent for this DN, or null if this DN does not have a parent (either because there is only a single RDN component or because this DN is a suffix defined in the server).
      • findBackendForEntry

        public Backend<?> findBackendForEntry​(DN entryDN)
        Retrieves the backend that should be used to handle operations on the specified entry.
        Parameters:
        entryDN - The DN of the entry for which to retrieve the corresponding backend.
        Returns:
        The backend or null if no appropriate backend is registered with the server.
      • findNamingContextForEntry

        public DN findNamingContextForEntry​(DN entryDN)
        Retrieves the naming context that should be used to handle operations on the specified entry.
        Parameters:
        entryDN - The DN of the entry for which to retrieve the corresponding naming context.
        Returns:
        The naming context or null if no appropriate naming context is registered with the server.
      • findLocalBackendForEntry

        public LocalBackend<?> findLocalBackendForEntry​(DN entryDN)
        Retrieves the local backend and the corresponding baseDN that should be used to handle operations on the specified entry.
        Parameters:
        entryDN - The DN of the entry for which to retrieve the corresponding backend.
        Returns:
        The local backend with its matching base DN or null if no appropriate local backend is registered with the server.
      • getLocalBackendById

        public LocalBackend<?> getLocalBackendById​(String backendId)
        Retrieves a local backend provided its identifier.
        Parameters:
        backendId - Identifier of the backend
        Returns:
        the local backend, or null if there is no local backend registered with the specified id.
      • hasLocalBackend

        public boolean hasLocalBackend​(String backendID)
        Indicates whether the local backend with the provided id exists.
        Parameters:
        backendID - The backend ID for which to make the determination.
        Returns:
        true if a backend with the specified backend ID exists, false otherwise
      • getSubordinateBackends

        public Set<Backend<?>> getSubordinateBackends​(Backend<?> backend)
        Retrieves the set of subordinate backends of the provided backend.
        Parameters:
        backend - The backend for which to retrieve the subordinates backends.
        Returns:
        The set of subordinates backends, which is never null
      • findSubordinateLocalNamingContextsForEntry

        public Set<DN> findSubordinateLocalNamingContextsForEntry​(DN entryDN)
        Retrieves the set of local naming contexts that are subordinates of the naming context that should be used to handle operations on the specified entry.
        Parameters:
        entryDN - The DN of the entry for which to retrieve the corresponding naming context.
        Returns:
        The naming context or null if no appropriate naming context is registered with the server.
      • findSubordinateLocalNamingContextsToSearchForEntry

        public Set<DN> findSubordinateLocalNamingContextsToSearchForEntry​(DN entryDN)
        Retrieves the set of local naming contexts that are subordinates of the naming context that should be used to handle search operation on the specified entry.

        The global option that restricts the subordinate DNs to search (when searching "") may apply if the provided set is not empty.

        Parameters:
        entryDN - The DN of the entry for which to retrieve the corresponding naming context.
        Returns:
        The naming context or null if no appropriate naming context is registered with the server.
      • containsLocalNamingContext

        public boolean containsLocalNamingContext​(DN dn)
        Indicates whether the specified DN is contained in the local backends as a naming context.
        Parameters:
        dn - The DN for which to make the determination.
        Returns:
        true if the specified DN is a naming context in one backend, or false if it is not.
      • registerBaseDN

        public void registerBaseDN​(DN baseDN,
                                   Backend<? extends BackendCfg> backend,
                                   boolean isPrivate)
                            throws DirectoryException
        Registers the provided base DN.
        Parameters:
        baseDN - The base DN to register. It must not be null.
        backend - The backend responsible for the provided base DN. It must not be null.
        isPrivate - Indicates whether the base DN should be considered a private base DN. If the provided base DN is a naming context, then this controls whether it is public or private.
        Throws:
        DirectoryException - If a problem occurs while attempting to register the provided base DN.
      • registerLocalBackend

        public void registerLocalBackend​(LocalBackend<?> backend)
                                  throws DirectoryException
        Registers a local backend.
        Parameters:
        backend - The backend to register with the server. Neither the backend nor its backend ID may be null.
        Throws:
        DirectoryException - If the backend ID for the provided backend conflicts with the backend ID of an existing backend.
      • registerLocalBackendInitializationListener

        public void registerLocalBackendInitializationListener​(LocalBackendInitializationListener listener)
        Registers a local backend initialization listener.
        Parameters:
        listener - The listener to register.
      • deregisterBaseDN

        public void deregisterBaseDN​(DN baseDN)
                              throws DirectoryException
        Deregisters the provided base DN.
        Parameters:
        baseDN - The base DN to deregister. It must not be null.
        Throws:
        DirectoryException - If a problem occurs while attempting to deregister the provided base DN.
      • deregisterLocalBackendInitializationListener

        public void deregisterLocalBackendInitializationListener​(LocalBackendInitializationListener listener)
        Deregisters a local backend initialization listener.
        Parameters:
        listener - The listener to deregister.
      • deregisterLocalBackend

        public void deregisterLocalBackend​(LocalBackend<?> backend)
        Deregisters a local backend.
        Parameters:
        backend - The backend to deregister with the server. It must not be null.
      • isConfigurationChangeAcceptable

        public boolean isConfigurationChangeAcceptable​(BackendCfg configEntry,
                                                       List<org.forgerock.i18n.LocalizableMessage> unacceptableReason)
        Description copied from interface: ConfigurationChangeListener
        Indicates whether the proposed change to the configuration is acceptable to this change listener.
        Specified by:
        isConfigurationChangeAcceptable in interface ConfigurationChangeListener<BackendCfg>
        Parameters:
        configEntry - The new configuration containing the changes.
        unacceptableReason - A list that can be used to hold messages about why the provided configuration is not acceptable.
        Returns:
        Returns true if the proposed change is acceptable, or false if it is not.
      • isConfigurationAddAcceptable

        public boolean isConfigurationAddAcceptable​(BackendCfg configEntry,
                                                    List<org.forgerock.i18n.LocalizableMessage> unacceptableReason)
        Description copied from interface: ConfigurationAddListener
        Indicates whether the proposed addition of a new configuration is acceptable to this add listener.
        Specified by:
        isConfigurationAddAcceptable in interface ConfigurationAddListener<BackendCfg>
        Parameters:
        configEntry - The configuration that will be added.
        unacceptableReason - A list that can be used to hold messages about why the provided configuration is not acceptable.
        Returns:
        Returns true if the proposed addition is acceptable, or false if it is not.
      • isConfigurationDeleteAcceptable

        public boolean isConfigurationDeleteAcceptable​(BackendCfg configEntry,
                                                       List<org.forgerock.i18n.LocalizableMessage> unacceptableReason)
        Description copied from interface: ConfigurationDeleteListener
        Indicates whether the proposed deletion of an existing configuration is acceptable to this delete listener.
        Specified by:
        isConfigurationDeleteAcceptable in interface ConfigurationDeleteListener<BackendCfg>
        Parameters:
        configEntry - The configuration that will be deleted.
        unacceptableReason - A list that can be used to hold messages about why the provided configuration is not acceptable.
        Returns:
        Returns true if the proposed deletion is acceptable, or false if it is not.
      • shutdownLocalBackends

        public void shutdownLocalBackends()
        Shutdown all local backends.