From a98051a8b65eb1d24f8577f60dbbea2dc03b399d Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Mon, 07 Nov 2016 15:05:30 +0000
Subject: [PATCH] OPENDJ-3417 Fix BackendConfigManager wrt to Backend/LocalBackend

---
 opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java      |    2 +-
 opendj-server-legacy/src/main/java/org/opends/server/core/BackendConfigManager.java |   55 +++++++++++++++++++++++++++++--------------------------
 2 files changed, 30 insertions(+), 27 deletions(-)

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 2bd03e8..67e78f5 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
@@ -207,7 +207,7 @@
       // contain a valid backend implementation, then log an error and skip it.
       String className = backendCfg.getJavaClass();
 
-      LocalBackend<? extends BackendCfg> backend;
+      Backend<? extends BackendCfg> backend;
       try
       {
         backend = loadBackendClass(className).newInstance();
@@ -677,8 +677,8 @@
       String className = configEntry.getJavaClass();
       try
       {
-        Class<LocalBackend<BackendCfg>> backendClass = loadBackendClass(className);
-        if (! LocalBackend.class.isAssignableFrom(backendClass))
+        Class<Backend<BackendCfg>> backendClass = loadBackendClass(className);
+        if (! Backend.class.isAssignableFrom(backendClass))
         {
           unacceptableReason.add(ERR_CONFIG_BACKEND_CLASS_NOT_BACKEND.get(className, backendDN));
           return false;
@@ -894,7 +894,7 @@
     // backend implementation, then log an error and skip it.
     String className = configEntry.getJavaClass();
 
-    LocalBackend<BackendCfg> backend;
+    Backend<BackendCfg> backend;
     try
     {
       backend = loadBackendClass(className).newInstance();
@@ -910,27 +910,30 @@
 
 
     // Make sure that all of the base DNs are acceptable for use in the server.
-    BaseDnRegistry registry = localBackendsRegistry.copy();
-    for (DN baseDN : baseDNs)
+    if (backend instanceof LocalBackend<?>)
     {
-      if (baseDN.isRootDN())
+      BaseDnRegistry registry = localBackendsRegistry.copy();
+      for (DN baseDN : baseDNs)
       {
-        unacceptableReason.add(ERR_CONFIG_BACKEND_BASE_IS_EMPTY.get(backendDN));
-        return false;
-      }
-      try
-      {
-        registry.registerBaseDN(baseDN, backend, false);
-      }
-      catch (DirectoryException de)
-      {
-        unacceptableReason.add(de.getMessageObject());
-        return false;
-      }
-      catch (Exception e)
-      {
-        unacceptableReason.add(getExceptionMessage(e));
-        return false;
+        if (baseDN.isRootDN())
+        {
+          unacceptableReason.add(ERR_CONFIG_BACKEND_BASE_IS_EMPTY.get(backendDN));
+          return false;
+        }
+        try
+        {
+          registry.registerBaseDN(baseDN, (LocalBackend<?>) backend, false);
+        }
+        catch (DirectoryException de)
+        {
+          unacceptableReason.add(de.getMessageObject());
+          return false;
+        }
+        catch (Exception e)
+        {
+          unacceptableReason.add(getExceptionMessage(e));
+          return false;
+        }
       }
     }
 
@@ -980,7 +983,7 @@
     // backend implementation, then log an error and skip it.
     String className = cfg.getJavaClass();
 
-    LocalBackend<? extends BackendCfg> backend;
+    Backend<? extends BackendCfg> backend;
     try
     {
       backend = loadBackendClass(className).newInstance();
@@ -1027,9 +1030,9 @@
   }
 
   @SuppressWarnings("unchecked")
-  private Class<LocalBackend<BackendCfg>> loadBackendClass(String className) throws Exception
+  private Class<Backend<BackendCfg>> loadBackendClass(String className) throws Exception
   {
-    return (Class<LocalBackend<BackendCfg>>) DirectoryServer.loadClass(className);
+    return (Class<Backend<BackendCfg>>) DirectoryServer.loadClass(className);
   }
 
   private WritabilityMode toWritabilityMode(LocalBackendCfgDefn.WritabilityMode writabilityMode)
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 40a62e8..26c8f7f 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
@@ -17,7 +17,6 @@
 package org.opends.server.core;
 
 import static com.forgerock.opendj.cli.CommonArguments.*;
-import static org.forgerock.util.Reject.*;
 import static org.opends.messages.CoreMessages.*;
 import static org.opends.messages.ToolMessages.*;
 import static org.opends.server.config.ConfigConstants.*;
@@ -85,6 +84,7 @@
 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;

--
Gitblit v1.10.0