From 614b8af248d4690345691a26884d9a93a735a518 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Thu, 24 Nov 2016 19:21:59 +0000
Subject: [PATCH] Prep work OPENDJ-3180 Remove DirectoryServer.register/deregisterBackendInitializationListener() methods

---
 opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java                        |   27 -------------
 opendj-server-legacy/src/main/java/org/opends/server/core/SubentryManager.java                        |    6 ++-
 opendj-server-legacy/src/main/java/org/opends/server/core/GroupManager.java                           |    4 +-
 opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java                   |   41 +++++++++++---------
 opendj-server-legacy/src/main/java/org/opends/server/extensions/DefaultEntryCache.java                |    3 +
 opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java    |    6 ++-
 opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciListenerManager.java |    5 +-
 opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerSync.java                    |    3 +
 8 files changed, 40 insertions(+), 55 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciListenerManager.java b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciListenerManager.java
index 25ac9d9..96a2b7a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciListenerManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciListenerManager.java
@@ -316,7 +316,7 @@
     }
 
     DirectoryServer.registerInternalPlugin(plugin);
-    DirectoryServer.registerBackendInitializationListener(this);
+    serverContext.getBackendConfigManager().registerLocalBackendInitializationListener(this);
     DirectoryServer.registerAlertGenerator(this);
   }
 
@@ -327,7 +327,8 @@
   public void finalizeListenerManager()
   {
     DirectoryServer.deregisterInternalPlugin(plugin);
-    DirectoryServer.deregisterBackendInitializationListener(this);
+    DirectoryServer.getInstance().getServerContext().getBackendConfigManager()
+      .deregisterLocalBackendInitializationListener(this);
     DirectoryServer.deregisterAlertGenerator(this);
   }
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java
index 1a0671d..7b1f47a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java
@@ -88,8 +88,8 @@
   /** The mapping between backend configuration names and backend implementations. */
   private final Map<DN, Backend<? extends BackendCfg>> configuredBackends = new ConcurrentHashMap<>();
 
-  /** The set of local backend initialization listeners. */
-  private final Set<LocalBackendInitializationListener> initializationListeners = new CopyOnWriteArraySet<>();
+  /** The set of initialization listeners restricted to local backends. */
+  private final Set<LocalBackendInitializationListener> localInitializationListeners = new CopyOnWriteArraySet<>();
 
   /** Contains all relationships between the base DNs and the backends (at the exclusion of RootDSE backend). */
   private volatile Registry registry = new Registry();
@@ -656,9 +656,9 @@
    *
    * @param  listener  The listener to register.
    */
-  public void registerBackendInitializationListener(LocalBackendInitializationListener listener)
+  public void registerLocalBackendInitializationListener(LocalBackendInitializationListener listener)
   {
-    initializationListeners.add(listener);
+    localInitializationListeners.add(listener);
   }
 
   /**
@@ -689,9 +689,9 @@
    *
    * @param  listener  The listener to deregister.
    */
-  public void deregisterBackendInitializationListener(LocalBackendInitializationListener listener)
+  public void deregisterLocalBackendInitializationListener(LocalBackendInitializationListener listener)
   {
-    initializationListeners.remove(listener);
+    localInitializationListeners.remove(listener);
   }
 
   /**
@@ -906,7 +906,7 @@
     if (backend instanceof LocalBackend<?>)
     {
       LocalBackend<?> localBackend = (LocalBackend<?>) backend;
-      for (LocalBackendInitializationListener listener : initializationListeners)
+      for (LocalBackendInitializationListener listener : localInitializationListeners)
       {
         listener.performBackendPreInitializationProcessing(localBackend);
       }
@@ -928,7 +928,7 @@
         return false;
       }
 
-      for (LocalBackendInitializationListener listener : initializationListeners)
+      for (LocalBackendInitializationListener listener : localInitializationListeners)
       {
         listener.performBackendPostInitializationProcessing(localBackend);
       }
@@ -1150,24 +1150,29 @@
 
   private void deregisterBackend(DN backendDN, Backend<?> backend)
   {
-    if (backend instanceof LocalBackend<?>)
+    boolean isLocalBackend = backend instanceof LocalBackend<?>;
+    LocalBackend<?> localBackend = isLocalBackend ? (LocalBackend<?>) backend : null;
+    if (isLocalBackend)
     {
-      LocalBackend<?> localBackend = (LocalBackend<?>) backend;
-      for (LocalBackendInitializationListener listener : initializationListeners)
+      for (LocalBackendInitializationListener listener : localInitializationListeners)
       {
         listener.performBackendPreFinalizationProcessing(localBackend);
       }
+    }
 
-      configuredBackends.remove(backendDN);
+    configuredBackends.remove(backendDN);
+
+    if (isLocalBackend)
+    {
       deregisterLocalBackend(localBackend);
-
-      for (LocalBackendInitializationListener listener : initializationListeners)
+      for (LocalBackendInitializationListener listener : localInitializationListeners)
       {
         listener.performBackendPostFinalizationProcessing(localBackend);
       }
     }
-    else {
-      throw new RuntimeException("deregisterBackend() is not yet supported for proxy backend.");
+    else
+    {
+      throw new RuntimeException("Proxy backend deregistration not implemented yet");
     }
   }
 
@@ -1181,14 +1186,14 @@
       {
         try
         {
-          for (LocalBackendInitializationListener listener : initializationListeners)
+          for (LocalBackendInitializationListener listener : localInitializationListeners)
           {
             listener.performBackendPreFinalizationProcessing(backend);
           }
 
           backend.finalizeBackend();
 
-          for (LocalBackendInitializationListener listener : initializationListeners)
+          for (LocalBackendInitializationListener listener : localInitializationListeners)
           {
             listener.performBackendPostFinalizationProcessing(backend);
           }
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java b/opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
index db84e6a..22b1e3b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
@@ -82,7 +82,6 @@
 import org.opends.server.api.AuthenticationPolicy;
 import org.opends.server.api.Backend;
 import org.opends.server.api.LocalBackend;
-import org.opends.server.api.LocalBackendInitializationListener;
 import org.opends.server.api.BackupTaskListener;
 import org.opends.server.api.CertificateMapper;
 import org.opends.server.api.ClientConnection;
@@ -1625,32 +1624,6 @@
     return directoryServer.compressedSchema;
   }
 
-  /**
-   * Registers the provided local backend initialization listener with the Directory
-   * Server.
-   *
-   * @param  listener  The local backend initialization listener to register with the
-   *                   Directory Server.
-   */
-  public static void registerBackendInitializationListener(
-                          LocalBackendInitializationListener listener)
-  {
-    directoryServer.backendConfigManager.registerBackendInitializationListener(listener);
-  }
-
-  /**
-   * Deregisters the provided local backend initialization listener with the Directory
-   * Server.
-   *
-   * @param  listener  The backend initialization listener to deregister with
-   *                   the Directory Server.
-   */
-  public static void deregisterBackendInitializationListener(
-                          LocalBackendInitializationListener listener)
-  {
-    directoryServer.backendConfigManager.deregisterBackendInitializationListener(listener);
-  }
-
   private void initializeRootAndAdminDataBackends() throws ConfigException, InitializationException
   {
     backendConfigManager.initializeBackendConfig(Arrays.asList("adminRoot", "ads-truststore"));
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/GroupManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/GroupManager.java
index 35a8240..fc1ca49 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/GroupManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/GroupManager.java
@@ -142,7 +142,7 @@
     lock = new ReentrantReadWriteLock();
 
     DirectoryServer.registerInternalPlugin(this);
-    DirectoryServer.registerBackendInitializationListener(this);
+    serverContext.getBackendConfigManager().registerLocalBackendInitializationListener(this);
   }
 
   /**
@@ -443,7 +443,7 @@
   public void finalizeGroupManager()
   {
     DirectoryServer.deregisterInternalPlugin(this);
-    DirectoryServer.deregisterBackendInitializationListener(this);
+    serverContext.getBackendConfigManager().deregisterLocalBackendInitializationListener(this);
 
     deregisterAllGroups();
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/SubentryManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/SubentryManager.java
index a613ac3..a42fbbf 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/SubentryManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/SubentryManager.java
@@ -131,7 +131,8 @@
           true);
 
     DirectoryServer.registerInternalPlugin(this);
-    DirectoryServer.registerBackendInitializationListener(this);
+    DirectoryServer.getInstance().getServerContext().getBackendConfigManager()
+      .registerLocalBackendInitializationListener(this);
   }
 
   /**
@@ -143,7 +144,8 @@
     // Deregister as internal plugin and
     // backend initialization listener.
     DirectoryServer.deregisterInternalPlugin(this);
-    DirectoryServer.deregisterBackendInitializationListener(this);
+    DirectoryServer.getInstance().getServerContext().getBackendConfigManager()
+      .deregisterLocalBackendInitializationListener(this);
   }
 
   /**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerSync.java b/opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerSync.java
index e200fe2..c51402f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerSync.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerSync.java
@@ -136,7 +136,8 @@
     catch (CryptoManagerException ex) {
       throw new InitializationException(ex.getMessageObject());
     }
-    DirectoryServer.registerBackendInitializationListener(this);
+    DirectoryServer.getInstance().getServerContext().getBackendConfigManager()
+      .registerLocalBackendInitializationListener(this);
 
     try
     {
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/extensions/DefaultEntryCache.java b/opendj-server-legacy/src/main/java/org/opends/server/extensions/DefaultEntryCache.java
index 8fd4b7d..f3d3011 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/extensions/DefaultEntryCache.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/extensions/DefaultEntryCache.java
@@ -64,7 +64,8 @@
 
     // Register with backend initialization listener to clear cache
     // entries belonging to given backend that about to go offline.
-    DirectoryServer.registerBackendInitializationListener(this);
+    DirectoryServer.getInstance().getServerContext().getBackendConfigManager()
+      .registerLocalBackendInitializationListener(this);
   }
 
   @Override
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java
index 0fa85da..0ddb67b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -594,7 +594,8 @@
     // register as an AlertGenerator
     DirectoryServer.registerAlertGenerator(this);
 
-    DirectoryServer.registerBackendInitializationListener(this);
+    DirectoryServer.getInstance().getServerContext().getBackendConfigManager()
+      .registerLocalBackendInitializationListener(this);
     DirectoryServer.registerShutdownListener(this);
 
     startPublishService();
@@ -2238,7 +2239,8 @@
       }
 
       DirectoryServer.deregisterAlertGenerator(this);
-      DirectoryServer.deregisterBackendInitializationListener(this);
+      DirectoryServer.getInstance().getServerContext().getBackendConfigManager()
+        .deregisterLocalBackendInitializationListener(this);
       DirectoryServer.deregisterShutdownListener(this);
 
       // stop the ReplicationDomain

--
Gitblit v1.10.0