Class SubentryManager

  • All Implemented Interfaces:
    LocalBackendInitializationListener

    public final class SubentryManager
    extends InternalDirectoryServerPlugin
    implements LocalBackendInitializationListener
    This class provides a mechanism for interacting with subentries defined in the Directory Server. It will handle all necessary processing at server startup to identify and load subentries within the server.

    FIXME: At the present time, it assumes that all of the necessary information about subentries defined in the server can be held in memory. If it is determined that this approach is not workable in all cases, then we will need an alternate strategy.
    • Constructor Detail

      • SubentryManager

        public SubentryManager​(ServerContext serverContext)
        Creates a new instance of this subentry manager.
        Parameters:
        serverContext - the server context
    • Method Detail

      • finalizeSubentryManager

        public void finalizeSubentryManager()
        Performs any required finalization tasks for Subentry Manager. This should only be called at Directory Server shutdown.
      • registerChangeListener

        public void registerChangeListener​(SubentryChangeListener changeListener)
        Registers the provided change notification listener with this manager so that it will be notified of any add, delete, modify, or modify DN operations that are performed.
        Parameters:
        changeListener - The change notification listener to register with this manager.
      • deregisterChangeListener

        public void deregisterChangeListener​(SubentryChangeListener changeListener)
        Deregisters the provided change notification listener with this manager so that it will no longer be notified of any add, delete, modify, or modify DN operations that are performed.
        Parameters:
        changeListener - The change notification listener to deregister with this manager.
      • performBackendPreInitializationProcessing

        public void performBackendPreInitializationProcessing​(LocalBackend<?> backend)
        Performs any processing that may be required whenever a backend is initialized for use in the Directory Server. This method will be invoked after the backend has been initialized but before it has been put into service.

        In this case, the server will search the backend to find all subentries that it may contain and register them with this manager.

        Specified by:
        performBackendPreInitializationProcessing in interface LocalBackendInitializationListener
        Parameters:
        backend - The backend that has been initialized and is about to be put into service.
      • getSubentries

        public List<SubEntry> getSubentries()
        Returns all subentries for this manager. Note that this getter will skip any collective subentries, returning only applicable regular subentries.
        Returns:
        all subentries for this manager.
      • getSubentries

        public List<SubEntry> getSubentries​(Dn dn)
        Returns subentries applicable to specific DN. Note that this getter will skip any collective subentries, returning only applicable regular subentries.
        Parameters:
        dn - for which to retrieve applicable subentries.
        Returns:
        applicable subentries.
      • getCollectiveSubentries

        public List<SubEntry> getCollectiveSubentries​(Dn dn)
        Returns collective subentries applicable to specific DN. Note that this getter will skip any regular subentries, returning only applicable collective subentries.
        Parameters:
        dn - The DN for which to retrieve applicable subentries.
        Returns:
        applicable subentries.
      • getCollectiveSubentries

        public List<SubEntry> getCollectiveSubentries​(Entry entry)
        Returns collective subentries applicable to specific entry. Note that this getter will skip any regular subentries, returning only applicable collective subentries.
        Parameters:
        entry - The entry for which to retrieve applicable subentries.
        Returns:
        The applicable collective subentries.
      • getClosestPwPolicySubentries

        public <T> List<T> getClosestPwPolicySubentries​(Entry entry,
                                                        Function<SubEntry,​T> mappingFunction)
        Returns the closest password policy subentries applicable to provided entry. Once an applicable policy is found, only it and the ones at the same level (i.e. the "closest") are returned.
        Type Parameters:
        T - The type of entry to return.
        Parameters:
        entry - The entry for which to retrieve the closest applicable subentries.
        mappingFunction - The function that maps a subEntry to T.
        Returns:
        The closest applicable password policy subentries, mapped as T.
      • performBackendPostFinalizationProcessing

        public void performBackendPostFinalizationProcessing​(LocalBackend<?> backend)
        Performs any processing that may be required whenever a backend is finalized. This method will be invoked after the backend has been taken out of service but before it has been finalized.

        In this case, the server will de-register all subentries associated with the provided backend.

        Specified by:
        performBackendPostFinalizationProcessing in interface LocalBackendInitializationListener
        Parameters:
        backend - The backend that has been taken out of service and is about to be finalized.
      • doPostOperation

        public PluginResult.PostOperation doPostOperation​(PostOperationAddOperation addOperation)
        Description copied from class: DirectoryServerPlugin
        Performs any necessary processing that should be done after the Directory Server has completed the core processing for an add operation but before the response has been sent to the client.
        Overrides:
        doPostOperation in class DirectoryServerPlugin<PluginCfg>
        Parameters:
        addOperation - The add operation for which processing has completed but no response has yet been sent.
        Returns:
        Information about the result of the plugin processing.
      • doPostOperation

        public PluginResult.PostOperation doPostOperation​(PostOperationDeleteOperation deleteOperation)
        Description copied from class: DirectoryServerPlugin
        Performs any necessary processing that should be done after the Directory Server has completed the core processing for a delete operation but before the response has been sent to the client.
        Overrides:
        doPostOperation in class DirectoryServerPlugin<PluginCfg>
        Parameters:
        deleteOperation - The delete operation for which processing has completed but no response has yet been sent.
        Returns:
        Information about the result of the plugin processing.
      • doPostOperation

        public PluginResult.PostOperation doPostOperation​(PostOperationModifyOperation modifyOperation)
        Description copied from class: DirectoryServerPlugin
        Performs any necessary processing that should be done after the Directory Server has completed the core processing for a modify operation but before the response has been sent to the client.
        Overrides:
        doPostOperation in class DirectoryServerPlugin<PluginCfg>
        Parameters:
        modifyOperation - The modify operation for which processing has completed but no response has yet been sent.
        Returns:
        Information about the result of the plugin processing.
      • doPostOperation

        public PluginResult.PostOperation doPostOperation​(PostOperationModifyDNOperation modifyDNOperation)
        Description copied from class: DirectoryServerPlugin
        Performs any necessary processing that should be done after the Directory Server has completed the core processing for a modify DN operation but before the response has been sent to the client.
        Overrides:
        doPostOperation in class DirectoryServerPlugin<PluginCfg>
        Parameters:
        modifyDNOperation - The modify DN operation for which processing has completed but no response has yet been sent.
        Returns:
        Information about the result of the plugin processing.