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/jeb/BackendImpl.java | 82 +++++++++++++++++++----------------------
1 files changed, 38 insertions(+), 44 deletions(-)
diff --git a/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java b/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
index a1b3094..98742e2 100644
--- a/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
+++ b/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
@@ -63,6 +63,7 @@
import org.opends.server.types.ResultCode;
import org.opends.server.util.LDIFException;
+import static org.opends.server.messages.BackendMessages.*;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.JebMessages.*;
import static org.opends.server.loggers.Error.logError;
@@ -293,10 +294,21 @@
config = new Config();
config.initializeConfig(configEntry, baseDNs);
- // FIXME: Currently assuming every base DN is also a suffix.
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, String.valueOf(dn),
+ String.valueOf(e));
+ throw new InitializationException(msgID, message, e);
+ }
}
/*
@@ -402,9 +414,9 @@
{
try
{
- DirectoryServer.deregisterSuffix(dn);
+ DirectoryServer.deregisterBaseDN(dn, false);
}
- catch (ConfigException e)
+ catch (Exception e)
{
assert debugException(CLASS_NAME, "finalizeBackend", e);
}
@@ -571,23 +583,6 @@
/**
- * Indicates whether this backend supports the specified feature.
- *
- * @param featureOID The OID of the feature for which to make the
- * determination.
- * @return <CODE>true</CODE> if this backend does support the requested
- * feature, or <CODE>false</CODE>
- */
- public boolean supportsFeature(String featureOID)
- {
- assert debugEnter(CLASS_NAME, "supportsFeature");
-
- return false; //NYI
- }
-
-
-
- /**
* Retrieves the OIDs of the controls that may be supported by this backend.
*
* @return The OIDs of the controls that may be supported by this backend.
@@ -602,23 +597,6 @@
/**
- * Indicates whether this backend supports the specified control.
- *
- * @param controlOID The OID of the control for which to make the
- * determination.
- * @return <CODE>true</CODE> if this backend does support the requested
- * control, or <CODE>false</CODE>
- */
- public boolean supportsControl(String controlOID)
- {
- assert debugEnter(CLASS_NAME, "supportsControl");
-
- return supportedControls.contains(controlOID);
- }
-
-
-
- /**
* Retrieves the set of base-level DNs that may be used within this backend.
*
* @return The set of base-level DNs that may be used within this backend.
@@ -1365,6 +1343,8 @@
assert debugEnter(CLASS_NAME, "applyNewConfiguration");
ConfigChangeResult ccr;
+ ResultCode resultCode = ResultCode.SUCCESS;
+ ArrayList<String> messages = new ArrayList<String>();
try
{
@@ -1397,7 +1377,7 @@
// Even though access to the entry container map is safe, there may be
// operation threads with a handle on the entry container being
// closed.
- DirectoryServer.deregisterSuffix(baseDN);
+ DirectoryServer.deregisterBaseDN(baseDN, false);
rootContainer.removeEntryContainer(baseDN);
}
}
@@ -1406,9 +1386,24 @@
{
if (!rootContainer.getBaseDNs().contains(baseDN))
{
- // The base DN was added.
- rootContainer.openEntryContainer(baseDN);
- DirectoryServer.registerSuffix(baseDN, this);
+ try
+ {
+ // The base DN was added.
+ rootContainer.openEntryContainer(baseDN);
+ DirectoryServer.registerBaseDN(baseDN, this, false, false);
+ }
+ catch (Exception e)
+ {
+ assert debugException(CLASS_NAME, "applyNewConfiguration", e);
+
+ resultCode = DirectoryServer.getServerErrorResultCode();
+
+ int msgID = MSGID_BACKEND_CANNOT_REGISTER_BASEDN;
+ messages.add(getMessage(msgID, String.valueOf(baseDN),
+ String.valueOf(e)));
+ ccr = new ConfigChangeResult(resultCode, false, messages);
+ return ccr;
+ }
}
}
@@ -1420,14 +1415,13 @@
}
catch (Exception e)
{
- ArrayList<String> messages = new ArrayList<String>();
messages.add(e.getMessage());
ccr = new ConfigChangeResult(DirectoryServer.getServerErrorResultCode(),
false, messages);
return ccr;
}
- ccr = new ConfigChangeResult(ResultCode.SUCCESS, false);
+ ccr = new ConfigChangeResult(resultCode, false, messages);
return ccr;
}
--
Gitblit v1.10.0