From 97050c54efee9d0cc89afb5fb61b9a1c67f73f6a Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Wed, 16 Nov 2016 19:28:22 +0000
Subject: [PATCH] OPENDJ-3460 Improve management of subordinate backend and naming contexts

---
 opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java |   29 ++++++++---------------------
 1 files changed, 8 insertions(+), 21 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java
index 37fccc6..222ce30 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java
@@ -39,6 +39,7 @@
 import org.opends.messages.TaskMessages;
 import org.opends.server.api.LocalBackend;
 import org.opends.server.api.LocalBackend.BackendOperation;
+import org.opends.server.api.Backend;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.backends.task.Task;
 import org.opends.server.backends.task.TaskState;
@@ -283,7 +284,7 @@
 
     if(backendID != null)
     {
-      backend = getServerContext().getBackendConfigManager().getLocalBackend(backendID);
+      backend = getServerContext().getBackendConfigManager().getLocalBackendById(backendID);
       if (backend == null)
       {
         LocalizableMessage message = ERR_LDIFIMPORT_NO_BACKENDS_FOR_ID.get();
@@ -301,7 +302,7 @@
       BackendConfigManager backendConfigManager = getServerContext().getBackendConfigManager();
       for(DN includeBranch : includeBranches)
       {
-        LocalBackend<?> locatedBackend = backendConfigManager.getLocalBackend(includeBranch);
+        LocalBackend<?> locatedBackend = backendConfigManager.findLocalBackendForEntry(includeBranch);
         if(locatedBackend != null)
         {
           if(backend == null)
@@ -441,7 +442,7 @@
 
     if(backendID != null)
     {
-      backend = getServerContext().getBackendConfigManager().getLocalBackend(backendID);
+      backend = getServerContext().getBackendConfigManager().getLocalBackendById(backendID);
 
       if (backend == null)
       {
@@ -460,7 +461,7 @@
       BackendConfigManager backendConfigManager = getServerContext().getBackendConfigManager();
       for(DN includeBranch : includeBranches)
       {
-        LocalBackend<?> locatedBackend = backendConfigManager.getLocalBackend(includeBranch);
+        LocalBackend<?> locatedBackend = backendConfigManager.findLocalBackendForEntry(includeBranch);
         if(locatedBackend != null)
         {
           if(backend == null)
@@ -479,23 +480,9 @@
 
     // Find backends with subordinate base DNs that should be excluded from the import.
     defaultIncludeBranches = new HashSet<>(backend.getBaseDNs());
-
-    if (backend.getSubordinateBackends() != null)
+    for (Backend<?> subBackend : getServerContext().getBackendConfigManager().getSubordinateBackends(backend))
     {
-      for (LocalBackend<?> subBackend : backend.getSubordinateBackends())
-      {
-        for (DN baseDN : subBackend.getBaseDNs())
-        {
-          for (DN importBase : defaultIncludeBranches)
-          {
-            if (!baseDN.equals(importBase) && baseDN.isSubordinateOrEqualTo(importBase))
-            {
-              excludeBranches.add(baseDN);
-              break;
-            }
-          }
-        }
-      }
+      excludeBranches.addAll(subBackend.getBaseDNs());
     }
 
     for (String s : excludeBranchStrings)
@@ -717,7 +704,7 @@
         // It is necessary to retrieve the backend structure again
         // because disabling and enabling it again may have resulted
         // in a new backend being registered to the server.
-        backend = getServerContext().getBackendConfigManager().getLocalBackend(backend.getBackendID());
+        backend = getServerContext().getBackendConfigManager().getLocalBackendById(backend.getBackendID());
       }
       catch (DirectoryException e)
       {

--
Gitblit v1.10.0