From 5be072c20e46f0921bb00401ff26d0defb3e8991 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Tue, 05 Dec 2006 21:41:50 +0000
Subject: [PATCH] Update the base DN registration process to address a number of issues:

---
 opends/src/server/org/opends/server/backends/MemoryBackend.java |   57 ++++++++++++++++++++++++++++-----------------------------
 1 files changed, 28 insertions(+), 29 deletions(-)

diff --git a/opends/src/server/org/opends/server/backends/MemoryBackend.java b/opends/src/server/org/opends/server/backends/MemoryBackend.java
index a2587c4..10bd317 100644
--- a/opends/src/server/org/opends/server/backends/MemoryBackend.java
+++ b/opends/src/server/org/opends/server/backends/MemoryBackend.java
@@ -48,6 +48,7 @@
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
+import org.opends.server.types.InitializationException;
 import org.opends.server.types.LDIFExportConfig;
 import org.opends.server.types.LDIFImportConfig;
 import org.opends.server.types.RestoreConfig;
@@ -62,6 +63,7 @@
 import static org.opends.server.messages.BackendMessages.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
 
 
 
@@ -148,7 +150,7 @@
    */
   public synchronized void initializeBackend(ConfigEntry configEntry,
                                              DN[] baseDNs)
-         throws ConfigException
+         throws ConfigException, InitializationException
   {
     assert debugEnter(CLASS_NAME, "initializeBackend",
                       String.valueOf(configEntry), String.valueOf(baseDNs));
@@ -184,7 +186,19 @@
 
     for (DN dn : baseDNs)
     {
-      DirectoryServer.registerSuffix(dn, this);
+      try
+      {
+        DirectoryServer.registerBaseDN(dn, this, false, false);
+      }
+      catch (Exception e)
+      {
+        assert debugException(CLASS_NAME, "initializeBackend", e);
+
+        int msgID = MSGID_BACKEND_CANNOT_REGISTER_BASEDN;
+        String message = getMessage(msgID, dn.toString(),
+                                    stackTraceToSingleLineString(e));
+        throw new InitializationException(msgID, message, e);
+      }
     }
   }
 
@@ -209,6 +223,18 @@
     assert debugEnter(CLASS_NAME, "finalizeBackend");
 
     clearMemoryBackend();
+
+    for (DN dn : baseDNs)
+    {
+      try
+      {
+        DirectoryServer.deregisterBaseDN(dn, false);
+      }
+      catch (Exception e)
+      {
+        assert debugException(CLASS_NAME, "finalizeBackend", e);
+      }
+    }
   }
 
 
@@ -585,19 +611,6 @@
   /**
    * {@inheritDoc}
    */
-  public boolean supportsControl(String controlOID)
-  {
-    assert debugEnter(CLASS_NAME, "supportsControl",
-                      String.valueOf(controlOID));
-
-    return supportedControls.contains(controlOID);
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
   public HashSet<String> getSupportedFeatures()
   {
     assert debugEnter(CLASS_NAME, "getSupportedFeatures");
@@ -610,20 +623,6 @@
   /**
    * {@inheritDoc}
    */
-  public boolean supportsFeature(String featureOID)
-  {
-    assert debugEnter(CLASS_NAME, "supportsFeature",
-                      String.valueOf(featureOID));
-
-    // This backend does not provide any special feature support.
-    return false;
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   */
   public boolean supportsLDIFExport()
   {
     assert debugEnter(CLASS_NAME, "supportsLDIFExport");

--
Gitblit v1.10.0