From 35af51f9683f5ef8cec66baca7b89aa1e1cbc44e Mon Sep 17 00:00:00 2001
From: coulbeck <coulbeck@localhost>
Date: Fri, 11 May 2007 23:27:30 +0000
Subject: [PATCH] Issue 1532: Remove ConfigEntry from Backend API. (DS-1532)
---
opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java | 319 ++++------------------------------------------------
1 files changed, 28 insertions(+), 291 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java b/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java
index 93d7ba1..5c811fd 100644
--- a/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java
+++ b/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java
@@ -26,14 +26,10 @@
*/
package org.opends.server.replication.plugin;
-import static org.opends.server.config.ConfigConstants.ATTR_BACKEND_BASE_DN;
-import static org.opends.server.config.ConfigConstants.ATTR_BACKEND_CLASS;
-import static org.opends.server.config.ConfigConstants.ATTR_BACKEND_ID;
import static org.opends.server.config.ConfigConstants.DN_BACKEND_BASE;
import static org.opends.server.loggers.ErrorLogger.logError;
import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
import static org.opends.server.loggers.debug.DebugLogger.debugInfo;
-import static org.opends.server.messages.ConfigMessages.*;
import static org.opends.server.messages.MessageHandler.getMessage;
import static org.opends.server.messages.ToolMessages.*;
import static org.opends.server.messages.ReplicationMessages.*;
@@ -57,16 +53,14 @@
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.MultimasterDomainCfg;
+import org.opends.server.admin.std.server.BackendCfg;
import org.opends.server.api.Backend;
import org.opends.server.api.DirectoryThread;
import org.opends.server.api.SynchronizationProvider;
import org.opends.server.backends.jeb.BackendImpl;
import org.opends.server.backends.task.Task;
import org.opends.server.backends.task.TaskState;
-import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
-import org.opends.server.config.DNConfigAttribute;
-import org.opends.server.config.StringConfigAttribute;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryServer;
@@ -251,9 +245,8 @@
// Null when none is being processed.
private IEContext ieContext = null;
- // The backend informations necessary to make an import or export.
+ // The backend information necessary to make an import or export.
private Backend backend;
- private ConfigEntry backendConfigEntry;
private List<DN> branches = new ArrayList<DN>(0);
private int listenerThreadNumber = 10;
@@ -1859,13 +1852,9 @@
String dn) throws Exception
{
BackendImpl backend = (BackendImpl)DirectoryServer.getBackend(beID);
- DN[] baseDNs = backend.getBaseDNs();
-
- // FIXME Should getConfigEntry be part of TaskUtils ?
- ConfigEntry configEntry = TaskUtils.getConfigEntry(backend);
// FIXME Should setBackendEnabled be part of TaskUtils ?
- TaskUtils.setBackendEnabled(configEntry, false);
+ TaskUtils.disableBackend(beID);
try
{
@@ -1879,7 +1868,7 @@
try
{
- backend.clearBackend(configEntry, baseDNs);
+ backend.clearBackend();
}
finally
{
@@ -1888,7 +1877,7 @@
}
finally
{
- TaskUtils.setBackendEnabled(configEntry, true);
+ TaskUtils.enableBackend(beID);
}
if (createBaseEntry)
@@ -1951,12 +1940,14 @@
ReplLDIFOutputStream os = new ReplLDIFOutputStream(this);
LDIFExportConfig exportConfig = new LDIFExportConfig(os);
+ List<DN> includeBranches = new ArrayList<DN>(1);
+ includeBranches.add(this.baseDN);
+ exportConfig.setIncludeBranches(includeBranches);
// Launch the export.
try
{
- DN[] baseDNs = {this.baseDN};
- backend.exportLDIF(backendConfigEntry, baseDNs, exportConfig);
+ backend.exportLDIF(exportConfig);
}
catch (DirectoryException de)
{
@@ -2020,14 +2011,6 @@
*/
protected void retrievesBackendInfos(DN baseDN) throws DirectoryException
{
- ArrayList<Backend> backendList = new ArrayList<Backend>();
- ArrayList<ConfigEntry> entryList = new ArrayList<ConfigEntry>();
- ArrayList<List<DN>> dnList = new ArrayList<List<DN>>();
-
- Backend backend = null;
- ConfigEntry backendConfigEntry = null;
- List<DN> branches = new ArrayList<DN>(0);
-
// Retrieves the backend related to this domain
Backend domainBackend = DirectoryServer.getBackend(baseDN);
if (domainBackend == null)
@@ -2038,44 +2021,9 @@
ResultCode.OTHER, message, msgID, null);
}
- // Retrieves its config entry and its DNs
- int code = getBackends(backendList, entryList, dnList);
- if (code != 0)
- {
- int msgID = MSGID_CANNOT_DECODE_BASE_DN;
- String message = getMessage(msgID, DN_BACKEND_BASE);
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null);
- }
-
- int numBackends = backendList.size();
- for (int i=0; i < numBackends; i++)
- {
- Backend b = backendList.get(i);
-
- if (domainBackend.getBackendID() != b.getBackendID())
- {
- continue;
- }
-
- if (backend == null)
- {
- backend = domainBackend;
- backendConfigEntry = entryList.get(i).duplicate();
- branches = dnList.get(i);
- }
- else
- {
- int msgID = MSGID_LDIFIMPORT_MULTIPLE_BACKENDS_FOR_ID;
- String message = getMessage(msgID, domainBackend.getBackendID());
- logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
- message, msgID);
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null);
- }
- }
-
- if (backend == null)
+ // Retrieves its configuration
+ BackendCfg backendCfg = TaskUtils.getConfigEntry(domainBackend);
+ if (backendCfg == null)
{
int msgID = MSGID_LDIFIMPORT_NO_BACKENDS_FOR_ID;
String message = getMessage(msgID, domainBackend.getBackendID());
@@ -2084,10 +2032,11 @@
throw new DirectoryException(
ResultCode.OTHER, message, msgID, null);
}
- else if (! backend.supportsLDIFExport())
+
+ if (! domainBackend.supportsLDIFExport())
{
int msgID = MSGID_LDIFIMPORT_CANNOT_IMPORT;
- String message = getMessage(msgID, 0); // FIXME
+ String message = getMessage(msgID, domainBackend.getBackendID());
logError(ErrorLogCategory.BACKEND,
ErrorLogSeverity.SEVERE_ERROR, message, msgID);
throw new DirectoryException(
@@ -2095,9 +2044,12 @@
}
- this.backend = backend;
- this.backendConfigEntry = backendConfigEntry;
- this.branches = branches;
+ this.backend = domainBackend;
+ this.branches = new ArrayList<DN>(backendCfg.getBackendBaseDN().size());
+ for (DN dn : backendCfg.getBackendBaseDN())
+ {
+ this.branches.add(dn);
+ }
}
@@ -2127,216 +2079,6 @@
}
/**
- * Retrieves information about the backends defined in the Directory Server
- * configuration.
- *
- * @param backendList A list into which instantiated (but not initialized)
- * backend instances will be placed.
- * @param entryList A list into which the config entries associated with
- * the backends will be placed.
- * @param dnList A list into which the set of base DNs for each backend
- * will be placed.
- */
- private static int getBackends(ArrayList<Backend> backendList,
- ArrayList<ConfigEntry> entryList,
- ArrayList<List<DN>> dnList)
- throws DirectoryException
- {
- // Get the base entry for all backend configuration.
- DN backendBaseDN = null;
- try
- {
- backendBaseDN = DN.decode(DN_BACKEND_BASE);
- }
- catch (DirectoryException de)
- {
- int msgID = MSGID_CANNOT_DECODE_BASE_DN;
- String message = getMessage(msgID, DN_BACKEND_BASE, de.getErrorMessage());
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null);
- }
- catch (Exception e)
- {
- int msgID = MSGID_CANNOT_DECODE_BASE_DN;
- String message = getMessage(msgID, DN_BACKEND_BASE,
- stackTraceToSingleLineString(e));
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null);
- }
-
- ConfigEntry baseEntry = null;
- try
- {
- baseEntry = DirectoryServer.getConfigEntry(backendBaseDN);
- }
- catch (ConfigException ce)
- {
- int msgID = MSGID_CANNOT_RETRIEVE_BACKEND_BASE_ENTRY;
- String message = getMessage(msgID, DN_BACKEND_BASE, ce.getMessage());
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null);
- }
- catch (Exception e)
- {
- int msgID = MSGID_CANNOT_RETRIEVE_BACKEND_BASE_ENTRY;
- String message = getMessage(msgID, DN_BACKEND_BASE,
- stackTraceToSingleLineString(e));
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null);
- }
-
-
- // Iterate through the immediate children, attempting to parse them as
- // backends.
- for (ConfigEntry configEntry : baseEntry.getChildren().values())
- {
- // Get the backend ID attribute from the entry. If there isn't one, then
- // skip the entry.
- String backendID = null;
- try
- {
- int msgID = MSGID_CONFIG_BACKEND_ATTR_DESCRIPTION_BACKEND_ID;
- StringConfigAttribute idStub =
- new StringConfigAttribute(ATTR_BACKEND_ID, getMessage(msgID),
- true, false, true);
- StringConfigAttribute idAttr =
- (StringConfigAttribute) configEntry.getConfigAttribute(idStub);
- if (idAttr == null)
- {
- continue;
- }
- else
- {
- backendID = idAttr.activeValue();
- }
- }
- catch (ConfigException ce)
- {
- int msgID = MSGID_CANNOT_DETERMINE_BACKEND_ID;
- String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
- ce.getMessage());
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null);
- }
- catch (Exception e)
- {
- int msgID = MSGID_CANNOT_DETERMINE_BACKEND_ID;
- String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
- stackTraceToSingleLineString(e));
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null);
- }
-
-
- // Get the backend class name attribute from the entry. If there isn't
- // one, then just skip the entry.
- String backendClassName = null;
- try
- {
- int msgID = MSGID_CONFIG_BACKEND_ATTR_DESCRIPTION_CLASS;
- StringConfigAttribute classStub =
- new StringConfigAttribute(ATTR_BACKEND_CLASS, getMessage(msgID),
- true, false, false);
- StringConfigAttribute classAttr =
- (StringConfigAttribute) configEntry.getConfigAttribute(classStub);
- if (classAttr == null)
- {
- continue;
- }
- else
- {
- backendClassName = classAttr.activeValue();
- }
- }
- catch (ConfigException ce)
- {
- int msgID = MSGID_CANNOT_DETERMINE_BACKEND_CLASS;
- String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
- ce.getMessage());
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null);
- }
- catch (Exception e)
- {
- int msgID = MSGID_CANNOT_DETERMINE_BACKEND_CLASS;
- String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
- stackTraceToSingleLineString(e));
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null);
- }
-
- Class backendClass = null;
- try
- {
- backendClass = Class.forName(backendClassName);
- }
- catch (Exception e)
- {
- int msgID = MSGID_CANNOT_LOAD_BACKEND_CLASS;
- String message = getMessage(msgID, backendClassName,
- String.valueOf(configEntry.getDN()),
- stackTraceToSingleLineString(e));
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null);
- }
-
- Backend backend = null;
- try
- {
- backend = (Backend) backendClass.newInstance();
- backend.setBackendID(backendID);
- }
- catch (Exception e)
- {
- int msgID = MSGID_CANNOT_INSTANTIATE_BACKEND_CLASS;
- String message = getMessage(msgID, backendClassName,
- String.valueOf(configEntry.getDN()),
- stackTraceToSingleLineString(e));
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null); }
-
-
- // Get the base DN attribute from the entry. If there isn't one, then
- // just skip this entry.
- List<DN> baseDNs = null;
- try
- {
- int msgID = MSGID_CONFIG_BACKEND_ATTR_DESCRIPTION_BASE_DNS;
- DNConfigAttribute baseDNStub =
- new DNConfigAttribute(ATTR_BACKEND_BASE_DN, getMessage(msgID),
- true, true, true);
- DNConfigAttribute baseDNAttr =
- (DNConfigAttribute) configEntry.getConfigAttribute(baseDNStub);
- if (baseDNAttr == null)
- {
- msgID = MSGID_NO_BASES_FOR_BACKEND;
- String message = getMessage(msgID,
- String.valueOf(configEntry.getDN()));
- throw new DirectoryException(
- DirectoryServer.getServerErrorResultCode(), message,msgID, null);
- }
- else
- {
- baseDNs = baseDNAttr.activeValues();
- }
- }
- catch (Exception e)
- {
- int msgID = MSGID_CANNOT_DETERMINE_BASES_FOR_BACKEND;
- String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
- stackTraceToSingleLineString(e));
- throw new DirectoryException(
- ResultCode.OTHER, message, msgID, null); }
-
-
- backendList.add(backend);
- entryList.add(configEntry);
- dnList.add(baseDNs);
- }
- return 0;
- }
-
- /**
* Initializes this domain from another source server.
*
* @param source The source from which to initialize
@@ -2526,11 +2268,9 @@
/**
* Process backend before import.
* @param backend The backend.
- * @param backendConfigEntry The config entry of the backend.
* @throws Exception
*/
- private void preBackendImport(Backend backend,
- ConfigEntry backendConfigEntry)
+ private void preBackendImport(Backend backend)
throws Exception
{
// Stop saving state
@@ -2540,7 +2280,7 @@
clearJEBackend(false,backend.getBackendID(),null);
// FIXME setBackendEnabled should be part of TaskUtils ?
- TaskUtils.setBackendEnabled(backendConfigEntry, false);
+ TaskUtils.disableBackend(backend.getBackendID());
// Acquire an exclusive lock for the backend.
String lockFile = LockFileManager.getBackendLockFileName(backend);
@@ -2583,9 +2323,8 @@
ieContext.entryLeftCount = initializeMessage.getEntryCount();
ieContext.initTaskCounters(initializeMessage.getEntryCount());
- preBackendImport(this.backend, this.backendConfigEntry);
+ preBackendImport(this.backend);
- DN[] baseDNs = {baseDN};
ieContext.ldifImportInputStream = new ReplLDIFInputStream(this);
importConfig =
new LDIFImportConfig(ieContext.ldifImportInputStream);
@@ -2596,7 +2335,7 @@
// ExistingFileBehavior.OVERWRITE);
// Process import
- this.backend.importLDIF(this.backendConfigEntry, baseDNs, importConfig);
+ this.backend.importLDIF(importConfig);
stateSavingDisabled = false;
@@ -2616,7 +2355,7 @@
importConfig.close();
// Re-enable backend
- closeBackendImport(this.backend, this.backendConfigEntry);
+ closeBackendImport(this.backend);
// Update the task that initiated the import
if ((ieContext != null ) && (ieContext.initializeTask != null))
@@ -2635,11 +2374,9 @@
/**
* Make post import operations.
* @param backend The backend implied in the import.
- * @param backendConfigEntry The config entry of the backend.
* @exception DirectoryException Thrown when an error occurs.
*/
- protected void closeBackendImport(Backend backend,
- ConfigEntry backendConfigEntry)
+ protected void closeBackendImport(Backend backend)
throws DirectoryException
{
String lockFile = LockFileManager.getBackendLockFileName(backend);
@@ -2657,7 +2394,7 @@
}
// FIXME setBackendEnabled should be part taskUtils ?
- TaskUtils.setBackendEnabled(backendConfigEntry, true);
+ TaskUtils.enableBackend(backend.getBackendID());
}
/**
--
Gitblit v1.10.0