From 3c28585f6ae5106b114679a1f9414b6d2fcba159 Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <yannick.lecaillez@forgerock.com>
Date: Fri, 22 May 2015 16:18:14 +0000
Subject: [PATCH] OPENDJ-2032: dbtest tool should return more accurate message when running against persistit backend.

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/DBTest.java |   40 ++++++++++++++++++++++++++--------------
 1 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/DBTest.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/DBTest.java
index f4ab9fb..cc74cac 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/DBTest.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/DBTest.java
@@ -558,7 +558,7 @@
 
   private int listRootContainers()
   {
-    Map<LocalDBBackendCfg, BackendImpl> jeBackends = getJEBackends();
+    final Map<LocalDBBackendCfg, BackendImpl> jeBackends = getJEBackends(null);
     int count = 0;
 
     // Create a table of their properties.
@@ -588,7 +588,6 @@
     BackendImpl backend = getBackendById(backendID);
     if(backend == null)
     {
-      printMessage(ERR_DBTEST_NO_BACKENDS_FOR_ID.get(backendID.getValue()));
       return 1;
     }
 
@@ -665,7 +664,6 @@
     BackendImpl backend = getBackendById(backendID);
     if(backend == null)
     {
-      printMessage(ERR_DBTEST_NO_BACKENDS_FOR_ID.get(backendID.getValue()));
       return 1;
     }
 
@@ -815,15 +813,28 @@
 
   private BackendImpl getBackendById(Argument backendId)
   {
-    Collection<BackendImpl> backends = getJEBackends().values();
-    String backendID = backendId.getValue();
-    for (BackendImpl b : backends)
+    final String backendID = backendId.getValue();
+    final List<Backend<?>> otherBackends = new ArrayList<>();
+    final Map<LocalDBBackendCfg, BackendImpl> jeBackends = getJEBackends(otherBackends);
+
+    for (BackendImpl b : jeBackends.values())
     {
       if (b.getBackendID().equalsIgnoreCase(backendID))
       {
         return b;
       }
     }
+
+    for (Backend<?> b : otherBackends)
+    {
+      if (b.getBackendID().equalsIgnoreCase(backendID))
+      {
+        printMessage(ERR_DBTEST_NOT_JE_BACKEND.get(backendID));
+        return null;
+      }
+    }
+
+    printMessage(ERR_DBTEST_NO_BACKENDS_FOR_ID.get(backendID));
     return null;
   }
 
@@ -832,7 +843,6 @@
     BackendImpl backend = getBackendById(backendID);
     if(backend == null)
     {
-      printMessage(ERR_DBTEST_NO_BACKENDS_FOR_ID.get(backendID.getValue()));
       return 1;
     }
 
@@ -1038,7 +1048,6 @@
     BackendImpl backend = getBackendById(backendID);
     if(backend == null)
     {
-      printMessage(ERR_DBTEST_NO_BACKENDS_FOR_ID.get(backendID.getValue()));
       return 1;
     }
 
@@ -1507,15 +1516,14 @@
     }
   }
 
-  private Map<LocalDBBackendCfg, BackendImpl> getJEBackends()
+  private static Map<LocalDBBackendCfg, BackendImpl> getJEBackends(Collection<Backend<?>> otherBackends)
   {
-    ArrayList<Backend> backendList = new ArrayList<Backend>();
-    ArrayList<BackendCfg> entryList = new ArrayList<BackendCfg>();
-    ArrayList<List<DN>> dnList = new ArrayList<List<DN>>();
+    ArrayList<Backend> backendList = new ArrayList<>();
+    ArrayList<BackendCfg> entryList = new ArrayList<>();
+    ArrayList<List<DN>> dnList = new ArrayList<>();
     BackendToolUtils.getBackends(backendList, entryList, dnList);
 
-    LinkedHashMap<LocalDBBackendCfg, BackendImpl> jeBackends =
-        new LinkedHashMap<LocalDBBackendCfg, BackendImpl>();
+    final Map<LocalDBBackendCfg, BackendImpl> jeBackends = new LinkedHashMap<>();
     for(int i = 0; i < backendList.size(); i++)
     {
       Backend<?> backend = backendList.get(i);
@@ -1524,6 +1532,10 @@
         jeBackends.put((LocalDBBackendCfg)entryList.get(i),
                        (BackendImpl)backend);
       }
+      else if (otherBackends != null)
+      {
+        otherBackends.add(backend);
+      }
     }
     return jeBackends;
   }

--
Gitblit v1.10.0