From ec647eab18711b036bd1a1a18425aaa8ae9f369f Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 21 Jan 2015 11:27:33 +0000
Subject: [PATCH] OPENDJ-1708 Persistit: no rebuild-index support

---
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/tasks/RebuildTask.java                                   |    7 +--
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/tools/RebuildIndex.java                                  |    9 +---
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/api/Backend.java                                         |   22 +++++++++++
 opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestRebuildJob.java |   24 +++++------
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java                            |   13 +-----
 5 files changed, 40 insertions(+), 35 deletions(-)

diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/api/Backend.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/api/Backend.java
index 4dd4c57..4f4af42 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/api/Backend.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/api/Backend.java
@@ -41,6 +41,7 @@
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.schema.MatchingRule;
 import org.opends.server.admin.Configuration;
+import org.opends.server.backends.RebuildConfig;
 import org.opends.server.backends.VerifyConfig;
 import org.opends.server.core.AddOperation;
 import org.opends.server.core.DeleteOperation;
@@ -683,6 +684,27 @@
   }
 
   /**
+   * Rebuild indexes in the backend instance. Note that the server will not explicitly initialize
+   * this backend before calling this method.
+   *
+   * @param rebuildConfig
+   *          The rebuild configuration.
+   * @throws ConfigException
+   *           If an unrecoverable problem arises during initialization.
+   * @throws InitializationException
+   *           If a problem occurs during initialization that is not related to the server
+   *           configuration.
+   * @throws DirectoryException
+   *           If a Directory Server error occurs.
+   */
+  public void rebuildBackend(RebuildConfig rebuildConfig) throws InitializationException, ConfigException,
+      DirectoryException
+  {
+    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
+        ERR_INDEXES_NOT_SUPPORTED.get(getBackendID()));
+  }
+
+  /**
    * Indicates whether this backend provides a backup mechanism of any
    * kind.  This method is used by the backup process when backing up
    * all backends to determine whether this backend is one that should
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java
index 65ceb23..cb77aa2 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java
@@ -863,17 +863,8 @@
   }
 
 
-  /**
-   * 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.
-   * @throws  ConfigException  If an unrecoverable problem arises during
-   *                           initialization.
-   * @throws  InitializationException  If a problem occurs during initialization
-   *                                   that is not related to the server
-   *                                   configuration.
-   * @throws DirectoryException If a Directory Server error occurs.
-   */
+  /** {@inheritDoc} */
+  @Override
   public void rebuildBackend(RebuildConfig rebuildConfig)
           throws InitializationException, ConfigException, DirectoryException
   {
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/tasks/RebuildTask.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/tasks/RebuildTask.java
index 92a9388..5041341 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/tasks/RebuildTask.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/tasks/RebuildTask.java
@@ -43,7 +43,6 @@
 import org.opends.server.api.ClientConnection;
 import org.opends.server.backends.RebuildConfig;
 import org.opends.server.backends.RebuildConfig.RebuildMode;
-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.core.DirectoryServer;
@@ -182,8 +181,7 @@
       logger.error(ERR_NO_BACKENDS_FOR_BASE, baseDN);
       return TaskState.STOPPED_BY_ERROR;
     }
-
-    if (!(backend instanceof BackendImpl))
+    if (!backend.supportsIndexing())
     {
       logger.error(ERR_REBUILDINDEX_WRONG_BACKEND_TYPE);
       return TaskState.STOPPED_BY_ERROR;
@@ -249,8 +247,7 @@
     // Launch the rebuild process.
     try
     {
-      BackendImpl jebBackend = (BackendImpl) backend;
-      jebBackend.rebuildBackend(rebuildConfig);
+      backend.rebuildBackend(rebuildConfig);
     }
     catch (InitializationException e)
     {
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/tools/RebuildIndex.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/tools/RebuildIndex.java
index c6edd8c..d44b543 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/tools/RebuildIndex.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/tools/RebuildIndex.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2006-2009 Sun Microsystems, Inc.
- *      Portions Copyright 2011-2014 ForgeRock AS
+ *      Portions Copyright 2011-2015 ForgeRock AS
  */
 package org.opends.server.tools;
 
@@ -47,7 +47,6 @@
 import org.opends.server.api.Backend;
 import org.opends.server.backends.RebuildConfig;
 import org.opends.server.backends.RebuildConfig.RebuildMode;
-import org.opends.server.backends.jeb.BackendImpl;
 import org.opends.server.core.CoreConfigManager;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.LockFileManager;
@@ -585,8 +584,7 @@
     int returnCode = 0;
     try
     {
-      final BackendImpl jebBackend = (BackendImpl) backend;
-      jebBackend.rebuildBackend(rebuildConfig);
+      backend.rebuildBackend(rebuildConfig);
     }
     catch (InitializationException e)
     {
@@ -664,8 +662,7 @@
     {
       throw new ConfigException(ERR_NO_BACKENDS_FOR_BASE.get(baseDNString.getValue()));
     }
-
-    if (!(backend instanceof BackendImpl))
+    if (!backend.supportsIndexing())
     {
       throw new ConfigException(ERR_BACKEND_NO_INDEXING_SUPPORT.get());
     }
diff --git a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestRebuildJob.java b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestRebuildJob.java
index 4f8208f..775407d 100644
--- a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestRebuildJob.java
+++ b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestRebuildJob.java
@@ -29,9 +29,10 @@
 import static org.testng.Assert.*;
 
 import org.opends.server.TestCaseUtils;
+import org.opends.server.api.Backend;
 import org.opends.server.backends.RebuildConfig;
-import org.opends.server.backends.VerifyConfig;
 import org.opends.server.backends.RebuildConfig.RebuildMode;
+import org.opends.server.backends.VerifyConfig;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.tasks.TaskUtils;
 import org.opends.server.types.DN;
@@ -51,7 +52,7 @@
   private  String numUsersLine="define numusers= #numEntries#";
 
   private  DN[] baseDNs;
-  private BackendImpl backend;
+  private Backend<?> backend;
 
   @DataProvider(name = "systemIndexes")
   public Object[][] systemIndexes() {
@@ -144,9 +145,7 @@
    */
   private void cleanAndLoad(int numEntries) throws Exception {
     TestCaseUtils.clearJEBackend(backendID);
-    template[2]=numUsersLine;
-    template[2]=
-        template[2].replaceAll("#numEntries#", String.valueOf(numEntries));
+    template[2] = numUsersLine.replaceAll("#numEntries#", String.valueOf(numEntries));
     createLoadEntries(template, numEntries);
   }
 
@@ -162,7 +161,7 @@
     RebuildConfig rebuildConfig = new RebuildConfig();
     rebuildConfig.setBaseDN(baseDNs[0]);
     rebuildConfig.addRebuildIndex(index);
-    backend = (BackendImpl) DirectoryServer.getBackend(backendID);
+    backend = DirectoryServer.getBackend(backendID);
     backend.rebuildBackend(rebuildConfig);
 
     if(index.contains(".") && !index.startsWith("vlv."))
@@ -189,7 +188,7 @@
     RebuildConfig rebuildConfig = new RebuildConfig();
     rebuildConfig.setBaseDN(baseDNs[0]);
     rebuildConfig.addRebuildIndex("id2entry");
-    backend = (BackendImpl) DirectoryServer.getBackend(backendID);
+    backend = DirectoryServer.getBackend(backendID);
     backend.rebuildBackend(rebuildConfig);
 
   }
@@ -208,7 +207,7 @@
     RebuildConfig rebuildConfig = new RebuildConfig();
     rebuildConfig.setBaseDN(baseDNs[0]);
     rebuildConfig.addRebuildIndex("id2entry");
-    backend = (BackendImpl) DirectoryServer.getBackend(backendID);
+    backend = DirectoryServer.getBackend(backendID);
     TaskUtils.disableBackend(backendID);
 
     try {
@@ -225,7 +224,7 @@
     RebuildConfig rebuildConfig = new RebuildConfig();
     rebuildConfig.setBaseDN(baseDNs[0]);
     rebuildConfig.addRebuildIndex(index);
-    backend = (BackendImpl) DirectoryServer.getBackend(backendID);
+    backend = DirectoryServer.getBackend(backendID);
     backend.rebuildBackend(rebuildConfig);
   }
 
@@ -237,7 +236,7 @@
     RebuildConfig rebuildConfig = new RebuildConfig();
     rebuildConfig.setBaseDN(baseDNs[0]);
     rebuildConfig.addRebuildIndex(index);
-    backend = (BackendImpl) DirectoryServer.getBackend(backendID);
+    backend = DirectoryServer.getBackend(backendID);
     backend.rebuildBackend(rebuildConfig);
   }
 
@@ -248,10 +247,9 @@
     RebuildConfig rebuildConfig = new RebuildConfig();
     rebuildConfig.setBaseDN(baseDNs[0]);
     rebuildConfig.addRebuildIndex(index);
-    backend = (BackendImpl) DirectoryServer.getBackend(backendID);
 
+    backend = DirectoryServer.getBackend(backendID);
     TaskUtils.disableBackend(backendID);
-
     backend.rebuildBackend(rebuildConfig);
 
     //TODO: Verify dn2uri database as well.
@@ -298,7 +296,7 @@
 
   private void rebuildIndexes(RebuildConfig rebuildConfig) throws Exception
   {
-    backend = (BackendImpl) DirectoryServer.getBackend(backendID);
+    backend = DirectoryServer.getBackend(backendID);
     TaskUtils.disableBackend(backendID);
     try
     {

--
Gitblit v1.10.0