From 602aba4a13a10f4758f0b411ba157234bf08a93f Mon Sep 17 00:00:00 2001
From: mmarie <mmarie@localhost>
Date: Thu, 18 Dec 2008 09:15:31 +0000
Subject: [PATCH] Issue 3671 : [RFE] add a config completed listener

---
 opends/src/server/org/opends/server/core/DirectoryServer.java |   50 +++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 47 insertions(+), 3 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/DirectoryServer.java b/opends/src/server/org/opends/server/core/DirectoryServer.java
index 4a6e736..65ef2f4 100644
--- a/opends/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -55,6 +55,7 @@
 import org.opends.server.api.ExtendedOperationHandler;
 import org.opends.server.api.IdentityMapper;
 import org.opends.server.api.ImportTaskListener;
+import org.opends.server.api.InitializationCompletedListener;
 import org.opends.server.api.InvokableComponent;
 import org.opends.server.api.KeyManagerProvider;
 import org.opends.server.api.Extension;
@@ -500,6 +501,11 @@
   // The set of restore task listeners registered with the Directory Server.
   private CopyOnWriteArrayList<RestoreTaskListener> restoreTaskListeners;
 
+  // The set of initialization completed listeners that have been registered
+  // with the Directory Server.
+  private CopyOnWriteArrayList<InitializationCompletedListener>
+          initializationCompletedListeners;
+
   // The set of shutdown listeners that have been registered with the Directory
   // Server.
   private CopyOnWriteArrayList<ServerShutdownListener> shutdownListeners;
@@ -934,6 +940,8 @@
       directoryServer.baseDnRegistry = new BaseDnRegistry();
       directoryServer.changeNotificationListeners =
            new CopyOnWriteArrayList<ChangeNotificationListener>();
+      directoryServer.initializationCompletedListeners =
+           new CopyOnWriteArrayList<InitializationCompletedListener>();
       directoryServer.shutdownListeners =
            new CopyOnWriteArrayList<ServerShutdownListener>();
       directoryServer.synchronizationProviders =
@@ -1442,7 +1450,6 @@
       // startup plugins.
       initializePlugins();
 
-
       // Initialize any synchronization providers that may be defined.
       if (!environmentConfig.disableSynchronization())
       {
@@ -1452,8 +1459,6 @@
             .initializeSynchronizationProviders();
       }
 
-
-
       // Create and initialize the work queue.
       workQueue = new WorkQueueConfigManager().initializeWorkQueue();
 
@@ -1468,6 +1473,22 @@
         throw new InitializationException(message);
       }
 
+     // Notify all the initialization completed listeners.
+      for (InitializationCompletedListener initializationCompletedListener :
+        directoryServer.initializationCompletedListeners)
+        {
+        try
+        {
+          initializationCompletedListener.initializationCompleted();
+        }
+        catch (Exception e)
+        {
+          if (debugEnabled())
+          {
+            TRACER.debugCaught(DebugLogLevel.ERROR, e);
+          }
+        }
+      }
 
       // Start administration connector and connection handlers
       if (startConnectionHandlers)
@@ -7894,7 +7915,30 @@
     }
   }
 
+  /**
+   * Registers the provided initialization completed listener with the
+   * Directory Server so that it will be notified when the server
+   * initialization completes.
+   *
+   * @param  listener  The initialization competed listener to register with
+   *                   the Directory Server.
+   */
+  public static void registerInitializationCompletedListener(
+          InitializationCompletedListener listener) {
+    directoryServer.initializationCompletedListeners.add(listener);
+  }
 
+  /**
+   * Deregisters the provided nitialization completed listener with the
+   * Directory Server.
+   *
+   * @param  listener  The nitialization completed listener to deregister with
+   *                   the Directory Server.
+   */
+  public static void deregisterInitializationCompletedListener(
+          InitializationCompletedListener listener) {
+    directoryServer.initializationCompletedListeners.remove(listener);
+  }
 
   /**
    * Registers the provided shutdown listener with the Directory Server so that

--
Gitblit v1.10.0