From 9681e2c7eca97e6288d0c7b50178ee28f4955135 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)

---
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java |  157 ++++++++++++++--------------------------------------
 1 files changed, 43 insertions(+), 114 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
index 065d5f2..3da0091 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
@@ -37,14 +37,12 @@
 import org.opends.server.api.Backend;
 import org.opends.server.api.MonitorProvider;
 import org.opends.server.config.ConfigException;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.core.AddOperation;
 import org.opends.server.core.DeleteOperation;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyOperation;
 import org.opends.server.core.ModifyDNOperation;
 import org.opends.server.core.SearchOperation;
-import org.opends.server.core.BackendConfigManager;
 import org.opends.server.util.LDIFException;
 import org.opends.server.util.Validator;
 
@@ -57,8 +55,8 @@
 import org.opends.server.types.*;
 import static org.opends.server.util.ServerConstants.*;
 import org.opends.server.admin.std.server.JEBackendCfg;
-import org.opends.server.admin.std.meta.JEBackendCfgDefn;
 import org.opends.server.admin.server.ConfigurationChangeListener;
+import org.opends.server.admin.Configuration;
 
 /**
  * This is an implementation of a Directory Server Backend which stores entries
@@ -73,7 +71,7 @@
    * The configuration of this JE backend.
    */
   private Config config;
-  private JEBackendCfg currentConfig;
+  private JEBackendCfg cfg;
 
   /**
    * The root JE container to use for this backend.
@@ -214,16 +212,28 @@
   /**
    * {@inheritDoc}
    */
-  public void initializeBackend(ConfigEntry configEntry, DN[] baseDNs)
-       throws ConfigException, InitializationException
+  public void configureBackend(Configuration cfg)
+       throws ConfigException
   {
-    Validator.ensureNotNull(configEntry);
-    JEBackendCfg backendCfg = getJEBackendCfg(configEntry);
+    Validator.ensureNotNull(cfg);
+    Validator.ensureTrue(cfg instanceof JEBackendCfg);
 
     // Initialize a config object
-    config = new Config();
-    config.initializeConfig(backendCfg, baseDNs);
+    Config config = new Config();
+    config.initializeConfig((JEBackendCfg)cfg);
 
+    this.cfg = (JEBackendCfg)cfg;
+    this.config = config;
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public void initializeBackend()
+       throws ConfigException, InitializationException
+  {
     // Open the database environment
     try
     {
@@ -243,7 +253,7 @@
 
     try
     {
-      rootContainer.openEntryContainers(baseDNs);
+      rootContainer.openEntryContainers(config.getBaseDNs());
     }
     catch (DatabaseException databaseException)
     {
@@ -264,7 +274,8 @@
     {
       // Log an informational message about the number of entries.
       int msgID = MSGID_JEB_BACKEND_STARTED;
-      String message = getMessage(msgID, rootContainer.getEntryCount());
+      String message = getMessage(msgID, cfg.getBackendId(),
+                                  rootContainer.getEntryCount());
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.NOTICE, message,
                msgID);
     }
@@ -280,7 +291,7 @@
                                         message, databaseException);
     }
 
-    for (DN dn : baseDNs)
+    for (DN dn : config.getBaseDNs())
     {
       try
       {
@@ -307,10 +318,9 @@
     DirectoryServer.registerMonitorProvider(monitorProvider);
 
     // Register this backend as a change listener.
-    currentConfig = backendCfg;
-    backendCfg.addJEChangeListener(this);
-    backendCfg.addJEChangeListener(config);
-    backendCfg.addJEChangeListener(rootContainer);
+    cfg.addJEChangeListener(this);
+    cfg.addJEChangeListener(config);
+    cfg.addJEChangeListener(rootContainer);
   }
 
   /**
@@ -325,9 +335,9 @@
   public void finalizeBackend()
   {
     // Deregister as a change listener.
-    currentConfig.removeJEChangeListener(rootContainer);
-    currentConfig.removeJEChangeListener(config);
-    currentConfig.removeJEChangeListener(this);
+    cfg.removeJEChangeListener(rootContainer);
+    cfg.removeJEChangeListener(config);
+    cfg.removeJEChangeListener(this);
 
     // Deregister our base DNs.
     for (DN dn : rootContainer.getBaseDNs())
@@ -379,9 +389,6 @@
     // Make sure the thread counts are zero for next initialization.
     threadTotalCount.set(0);
     threadWriteCount.set(0);
-
-    // We will not reuse the config object.
-    config = null;
   }
 
 
@@ -871,28 +878,9 @@
   /**
    * {@inheritDoc}
    */
-  public void exportLDIF(ConfigEntry configEntry, DN[] baseDNs,
-                         LDIFExportConfig exportConfig)
+  public void exportLDIF(LDIFExportConfig exportConfig)
        throws DirectoryException
   {
-    // Initialize a config object.
-    config = new Config();
-
-    try
-    {
-      config.initializeConfig(configEntry, baseDNs);
-    }
-    catch (ConfigException e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
-                                   e.getMessage(),
-                                   e.getMessageID());
-    }
-
     // If the backend already has the root container open, we must use the same
     // underlying root container
     boolean openRootContainer = rootContainer == null;
@@ -906,7 +894,7 @@
         rootContainer.open(config.getBackendDirectory(),
                            config.getBackendPermission(),
                            true, false, false, false, true, true);
-        rootContainer.openEntryContainers(baseDNs);
+        rootContainer.openEntryContainers(config.getBaseDNs());
       }
 
       ExportJob exportJob = new ExportJob(exportConfig);
@@ -981,28 +969,9 @@
   /**
    * {@inheritDoc}
    */
-  public void importLDIF(ConfigEntry configEntry, DN[] baseDNs,
-                         LDIFImportConfig importConfig)
+  public void importLDIF(LDIFImportConfig importConfig)
        throws DirectoryException
   {
-    // Initialize a config object.
-    config = new Config();
-
-    try
-    {
-      config.initializeConfig(configEntry, baseDNs);
-    }
-    catch (ConfigException e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
-                                   e.getMessage(),
-                                   e.getMessageID());
-    }
-
     try
     {
       ImportJob importJob = new ImportJob(this, config, importConfig);
@@ -1047,9 +1016,6 @@
   /**
    * Verify the integrity of the backend instance.
    * @param verifyConfig The verify configuration.
-   * @param configEntry The backend instance configuration entry.
-   * @param  baseDNs      The set of base DNs that have been configured for this
-   *                      backend.
    * @param statEntry Optional entry to save stats into.
    * @throws  ConfigException  If an unrecoverable problem arises during
    *                           initialization.
@@ -1058,14 +1024,9 @@
    *                                   configuration.
    * @throws DirectoryException If a Directory Server error occurs.
    */
-  public void verifyBackend(VerifyConfig verifyConfig, ConfigEntry configEntry,
-                            DN[] baseDNs, Entry statEntry)
+  public void verifyBackend(VerifyConfig verifyConfig, Entry statEntry)
        throws InitializationException, ConfigException, DirectoryException
   {
-    // Initialize a config object.
-    config = new Config();
-    config.initializeConfig(configEntry, baseDNs);
-
     // If the backend already has the root container open, we must use the same
     // underlying root container
     boolean openRootContainer = rootContainer == null;
@@ -1079,7 +1040,7 @@
         rootContainer.open(config.getBackendDirectory(),
                            config.getBackendPermission(),
                            true, false, false, false, true, true);
-        rootContainer.openEntryContainers(baseDNs);
+        rootContainer.openEntryContainers(config.getBaseDNs());
       }
 
       VerifyJob verifyJob = new VerifyJob(config, verifyConfig);
@@ -1133,9 +1094,6 @@
    * Rebuild index(es) in the backend instance. Note that the server will not
    * explicitly initialize this backend before calling this method.
    * @param rebuildConfig The rebuild configuration.
-   * @param configEntry The backend instance configuration entry.
-   * @param  baseDNs      The set of base DNs that have been configured for this
-   *                      backend.
    * @throws  ConfigException  If an unrecoverable problem arises during
    *                           initialization.
    * @throws  InitializationException  If a problem occurs during initialization
@@ -1143,12 +1101,9 @@
    *                                   configuration.
    * @throws DirectoryException If a Directory Server error occurs.
    */
-  public void rebuildBackend(RebuildConfig rebuildConfig,
-                             ConfigEntry configEntry, DN[] baseDNs)
+  public void rebuildBackend(RebuildConfig rebuildConfig)
        throws InitializationException, ConfigException, DirectoryException
   {
-    JEBackendCfg backendCfg = getJEBackendCfg(configEntry);
-
     // If the backend already has the root container open, we must use the same
     // underlying root container
     boolean openRootContainer = rootContainer == null;
@@ -1168,14 +1123,10 @@
     {
       if (openRootContainer)
       {
-        // Initialize a config object.
-        config = new Config();
-        config.initializeConfig(backendCfg, baseDNs);
-
         // Open the database environment
         rootContainer = new RootContainer(config, this);
         rootContainer.open();
-        rootContainer.openEntryContainers(baseDNs);
+        rootContainer.openEntryContainers(config.getBaseDNs());
       }
 
       RebuildJob rebuildJob = new RebuildJob(rebuildConfig);
@@ -1229,12 +1180,12 @@
   /**
    * {@inheritDoc}
    */
-  public void createBackup(ConfigEntry configEntry, BackupConfig backupConfig)
+  public void createBackup(BackupConfig backupConfig)
        throws DirectoryException
   {
     BackupManager backupManager =
          new BackupManager(getBackendID());
-    backupManager.createBackup(configEntry, backupConfig);
+    backupManager.createBackup(cfg, backupConfig);
   }
 
 
@@ -1255,13 +1206,12 @@
   /**
    * {@inheritDoc}
    */
-  public void restoreBackup(ConfigEntry configEntry,
-                            RestoreConfig restoreConfig)
+  public void restoreBackup(RestoreConfig restoreConfig)
        throws DirectoryException
   {
     BackupManager backupManager =
          new BackupManager(getBackendID());
-    backupManager.restoreBackup(configEntry, restoreConfig);
+    backupManager.restoreBackup(cfg, restoreConfig);
   }
 
 
@@ -1346,7 +1296,7 @@
       }
 
       // Put the new configuration in place.
-      currentConfig = cfg;
+      this.cfg = cfg;
     }
     catch (Exception e)
     {
@@ -1375,37 +1325,16 @@
    * Clears all the entries from the backend.  This method is for test cases
    * that use the JE backend.
    *
-   * @param  configEntry  The configuration entry that contains the information
-   *                      to use to initialize this backend.
-   * @param  baseDNs      The set of base DNs that have been configured for this
-   *                      backend.
-   *
    * @throws  ConfigException  If an unrecoverable problem arises in the
    *                           process of performing the initialization.
    *
    * @throws  JebException     If an error occurs while removing the data.
    */
-  public void clearBackend(ConfigEntry configEntry, DN[] baseDNs)
+  public void clearBackend()
        throws ConfigException, JebException
   {
-    Config config = new Config();
-    config.initializeConfig(configEntry, baseDNs);
     EnvManager.removeFiles(config.getBackendDirectory().getPath());
   }
 
-  /**
-   * Gets the JE backend configuration corresponding to a JE
-   * backend config entry.
-   *
-   * @param configEntry A JE backend config entry.
-   * @return Returns the JE backend configuration.
-   * @throws ConfigException If the config entry could not be decoded.
-   */
-  static JEBackendCfg getJEBackendCfg(ConfigEntry configEntry)
-      throws ConfigException {
-    return BackendConfigManager.getConfiguration(
-         JEBackendCfgDefn.getInstance(), configEntry);
-  }
-
 
 }

--
Gitblit v1.10.0