From 928710159b39fcc1dd04df62ea38846197a39b46 Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Tue, 24 Jul 2007 18:41:36 +0000
Subject: [PATCH] Fix for issue 1794: - Attribute index no longer need the backend index entry limit parameter on construction. This is now handled by the admin framework. - Updated test cases to reflect the change

---
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java                          |   21 ---
 opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/JEIndexConfiguration.xml                    |   10 -
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java |  104 ++++++-----------
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/IndexFilter.java                             |   14 +-
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java                          |  168 +++++++++++++++------------
 5 files changed, 143 insertions(+), 174 deletions(-)

diff --git a/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/JEIndexConfiguration.xml b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/JEIndexConfiguration.xml
index a62cf0d..3389567 100644
--- a/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/JEIndexConfiguration.xml
+++ b/opendj-sdk/opends/src/admin/defn/org/opends/server/admin/std/JEIndexConfiguration.xml
@@ -92,12 +92,10 @@
       </adm:other>
     </adm:requires-admin-action>
     <adm:default-behavior>
-      <adm:alias>
-        <adm:synopsis>
-          The index entry limit specified in the JE backend-wide
-          configuration will be used.
-        </adm:synopsis>
-      </adm:alias>
+      <adm:inherited>
+        <adm:relative property-name="backend-index-entry-limit"
+                      offset="1" managed-object-name="je-backend" />
+      </adm:inherited>
     </adm:default-behavior>
     <adm:syntax>
       <adm:integer lower-limit="0" upper-limit="2147483647">
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java
index fc54256..4aa1c95 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java
@@ -120,39 +120,27 @@
 
   private int cursorEntryLimit = 100000;
 
-  private int backendIndexEntryLimit = 4000;
-
   /**
    * Create a new attribute index object.
    * @param entryContainer The entryContainer of this attribute index.
    * @param state The state database to persist index state info.
    * @param env The JE environment handle.
    * @param indexConfig The attribute index configuration.
-   * @param backendIndexEntryLimit The backend index entry limit to use
-   *        if none is specified for this attribute index.
    * @throws DatabaseException if a JE database error occurs.
    * @throws ConfigException if a configuration related error occurs.
    */
-  public AttributeIndex(JEIndexCfg indexConfig, State state,
-                        int backendIndexEntryLimit,
-                        Environment env,
+  public AttributeIndex(JEIndexCfg indexConfig, State state, Environment env,
                         EntryContainer entryContainer)
       throws DatabaseException, ConfigException
   {
     this.entryContainer = entryContainer;
     this.env = env;
     this.indexConfig = indexConfig;
-    this.backendIndexEntryLimit = backendIndexEntryLimit;
     this.state = state;
 
     AttributeType attrType = indexConfig.getIndexAttribute();
     String name = attrType.getNameOrOID();
-    int indexEntryLimit = backendIndexEntryLimit;
-
-    if(indexConfig.getIndexEntryLimit() != null)
-    {
-      indexEntryLimit = indexConfig.getIndexEntryLimit();
-    }
+    int indexEntryLimit = indexConfig.getIndexEntryLimit();
 
     if (indexConfig.getIndexType().contains(JEIndexCfgDefn.IndexType.EQUALITY))
     {
@@ -655,10 +643,14 @@
    * Retrieve the entry IDs that might match an equality filter.
    *
    * @param equalityFilter The equality filter.
+   * @param debugBuffer If not null, a diagnostic string will be written
+   *                     which will help determine how the indexes contributed
+   *                     to this search.
    * @return The candidate entry IDs that might contain the filter
    *         assertion value.
    */
-  public EntryIDSet evaluateEqualityFilter(SearchFilter equalityFilter)
+  public EntryIDSet evaluateEqualityFilter(SearchFilter equalityFilter,
+                                           StringBuilder debugBuffer)
   {
     if (equalityIndex == null)
     {
@@ -672,6 +664,14 @@
            equalityFilter.getAssertionValue().getNormalizedValue().value();
       DatabaseEntry key = new DatabaseEntry(keyBytes);
 
+      if(debugBuffer != null)
+      {
+        debugBuffer.append("[INDEX:");
+        debugBuffer.append(indexConfig.getIndexAttribute().getNameOrOID());
+        debugBuffer.append(".");
+        debugBuffer.append("equality]");
+      }
+
       // Read the key.
       return equalityIndex.readKey(key, null, LockMode.DEFAULT);
     }
@@ -689,16 +689,28 @@
    * Retrieve the entry IDs that might match a presence filter.
    *
    * @param filter The presence filter.
+   * @param debugBuffer If not null, a diagnostic string will be written
+   *                     which will help determine how the indexes contributed
+   *                     to this search.
    * @return The candidate entry IDs that might contain one or more
    *         values of the attribute type in the filter.
    */
-  public EntryIDSet evaluatePresenceFilter(SearchFilter filter)
+  public EntryIDSet evaluatePresenceFilter(SearchFilter filter,
+                                           StringBuilder debugBuffer)
   {
     if (presenceIndex == null)
     {
       return new EntryIDSet();
     }
 
+    if(debugBuffer != null)
+    {
+      debugBuffer.append("[INDEX:");
+      debugBuffer.append(indexConfig.getIndexAttribute().getNameOrOID());
+      debugBuffer.append(".");
+      debugBuffer.append("presence]");
+    }
+
     // Read the presence key
     return presenceIndex.readKey(presenceKey, null, LockMode.DEFAULT);
   }
@@ -707,10 +719,14 @@
    * Retrieve the entry IDs that might match a greater-or-equal filter.
    *
    * @param filter The greater-or-equal filter.
+   * @param debugBuffer If not null, a diagnostic string will be written
+   *                     which will help determine how the indexes contributed
+   *                     to this search.
    * @return The candidate entry IDs that might contain a value
    *         greater than or equal to the filter assertion value.
    */
-  public EntryIDSet evaluateGreaterOrEqualFilter(SearchFilter filter)
+  public EntryIDSet evaluateGreaterOrEqualFilter(SearchFilter filter,
+                                                 StringBuilder debugBuffer)
   {
     if (orderingIndex == null)
     {
@@ -730,6 +746,14 @@
       // bound.
       byte[] upper = new byte[0];
 
+      if(debugBuffer != null)
+      {
+        debugBuffer.append("[INDEX:");
+        debugBuffer.append(indexConfig.getIndexAttribute().getNameOrOID());
+        debugBuffer.append(".");
+        debugBuffer.append("ordering]");
+      }
+
       // Read the range: lower <= keys < upper.
       return orderingIndex.readRange(lower, upper, true, false);
     }
@@ -747,10 +771,14 @@
    * Retrieve the entry IDs that might match a less-or-equal filter.
    *
    * @param filter The less-or-equal filter.
+   * @param debugBuffer If not null, a diagnostic string will be written
+   *                     which will help determine how the indexes contributed
+   *                     to this search.
    * @return The candidate entry IDs that might contain a value
    *         less than or equal to the filter assertion value.
    */
-  public EntryIDSet evaluateLessOrEqualFilter(SearchFilter filter)
+  public EntryIDSet evaluateLessOrEqualFilter(SearchFilter filter,
+                                              StringBuilder debugBuffer)
   {
     if (orderingIndex == null)
     {
@@ -770,6 +798,14 @@
       byte[] upper = orderingRule.normalizeValue(
            filter.getAssertionValue().getValue()).value();
 
+      if(debugBuffer != null)
+      {
+        debugBuffer.append("[INDEX:");
+        debugBuffer.append(indexConfig.getIndexAttribute().getNameOrOID());
+        debugBuffer.append(".");
+        debugBuffer.append("ordering]");
+      }
+
       // Read the range: lower < keys <= upper.
       return orderingIndex.readRange(lower, upper, false, true);
     }
@@ -787,10 +823,14 @@
    * Retrieve the entry IDs that might match a substring filter.
    *
    * @param filter The substring filter.
+   * @param debugBuffer If not null, a diagnostic string will be written
+   *                     which will help determine how the indexes contributed
+   *                     to this search.
    * @return The candidate entry IDs that might contain a value
    *         that matches the filter substrings.
    */
-  public EntryIDSet evaluateSubstringFilter(SearchFilter filter)
+  public EntryIDSet evaluateSubstringFilter(SearchFilter filter,
+                                            StringBuilder debugBuffer)
   {
     SubstringMatchingRule matchRule =
          filter.getAttributeType().getSubstringMatchingRule();
@@ -815,6 +855,16 @@
           if (results.isDefined() &&
                results.size() <= IndexFilter.FILTER_CANDIDATE_THRESHOLD)
           {
+
+            if(debugBuffer != null)
+            {
+              debugBuffer.append("[INDEX:");
+              debugBuffer.append(indexConfig.getIndexAttribute().
+                  getNameOrOID());
+              debugBuffer.append(".");
+              debugBuffer.append("equality]");
+            }
+
             return results;
           }
         }
@@ -860,6 +910,14 @@
         }
       }
 
+      if(debugBuffer != null)
+      {
+        debugBuffer.append("[INDEX:");
+        debugBuffer.append(indexConfig.getIndexAttribute().getNameOrOID());
+        debugBuffer.append(".");
+        debugBuffer.append("substring]");
+      }
+
       return results;
     }
     catch (DirectoryException e)
@@ -964,10 +1022,14 @@
    * Retrieve the entry IDs that might match an approximate filter.
    *
    * @param approximateFilter The approximate filter.
+   * @param debugBuffer If not null, a diagnostic string will be written
+   *                     which will help determine how the indexes contributed
+   *                     to this search.
    * @return The candidate entry IDs that might contain the filter
    *         assertion value.
    */
-  public EntryIDSet evaluateApproximateFilter(SearchFilter approximateFilter)
+  public EntryIDSet evaluateApproximateFilter(SearchFilter approximateFilter,
+                                              StringBuilder debugBuffer)
   {
     if (approximateIndex == null)
     {
@@ -984,6 +1046,14 @@
                approximateFilter.getAssertionValue().getValue()).value();
       DatabaseEntry key = new DatabaseEntry(keyBytes);
 
+      if(debugBuffer != null)
+      {
+        debugBuffer.append("[INDEX:");
+        debugBuffer.append(indexConfig.getIndexAttribute().getNameOrOID());
+        debugBuffer.append(".");
+        debugBuffer.append("approximate]");
+      }
+
       // Read the key.
       return approximateIndex.readKey(key, null, LockMode.DEFAULT);
     }
@@ -1078,57 +1148,6 @@
   }
 
   /**
-   * Set the index entry limit used by the backend using this attribute index.
-   * This index will use the backend entry limit only if there is not one
-   * specified for this index.
-   *
-   * @param backendIndexEntryLimit The backend index entry limit.
-   * @return True if a rebuild is required or false otherwise.
-   */
-  public synchronized boolean setBackendIndexEntryLimit(
-      int backendIndexEntryLimit)
-  {
-    // Only update if there is no limit specified for this index.
-    boolean rebuildRequired = false;
-    if(indexConfig.getIndexEntryLimit() == null)
-    {
-      if(equalityIndex != null)
-      {
-        rebuildRequired |=
-            equalityIndex.setIndexEntryLimit(backendIndexEntryLimit);
-      }
-
-      if(presenceIndex != null)
-      {
-        rebuildRequired |=
-            presenceIndex.setIndexEntryLimit(backendIndexEntryLimit);
-      }
-
-      if(substringIndex != null)
-      {
-        rebuildRequired |=
-            substringIndex.setIndexEntryLimit(backendIndexEntryLimit);
-      }
-
-      if(orderingIndex != null)
-      {
-        rebuildRequired |=
-            orderingIndex.setIndexEntryLimit(backendIndexEntryLimit);
-      }
-
-      if(approximateIndex != null)
-      {
-        rebuildRequired |=
-            approximateIndex.setIndexEntryLimit(backendIndexEntryLimit);
-      }
-    }
-
-    this.backendIndexEntryLimit = backendIndexEntryLimit;
-
-    return rebuildRequired;
-  }
-
-  /**
    * {@inheritDoc}
    */
   public synchronized boolean isConfigurationChangeAcceptable(
@@ -1198,12 +1217,7 @@
     {
       AttributeType attrType = cfg.getIndexAttribute();
       String name = attrType.getNameOrOID();
-      int indexEntryLimit = backendIndexEntryLimit;
-
-      if(cfg.getIndexEntryLimit() != null)
-      {
-        indexEntryLimit = cfg.getIndexEntryLimit();
-      }
+      int indexEntryLimit = cfg.getIndexEntryLimit();
 
       if (cfg.getIndexType().contains(JEIndexCfgDefn.IndexType.EQUALITY))
       {
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
index 47a80a4..207e6b7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
@@ -273,9 +273,7 @@
         //TODO: When issue 1793 is fixed, use inherited default values in
         //admin framework instead for the entry limit.
         AttributeIndex index =
-            new AttributeIndex(indexCfg, state,
-                               indexEntryLimit,
-                               env, this);
+            new AttributeIndex(indexCfg, state, env, this);
         index.open();
         attrIndexMap.put(indexCfg.getIndexAttribute(), index);
       }
@@ -3782,19 +3780,6 @@
 
     if(config.getBackendIndexEntryLimit() != cfg.getBackendIndexEntryLimit())
     {
-      for(AttributeIndex index : attrIndexMap.values())
-      {
-        if(index.setBackendIndexEntryLimit(cfg.getBackendIndexEntryLimit()))
-        {
-          adminActionRequired = true;
-          int msgID = MSGID_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD;
-          String message = getMessage(msgID,
-                                      index.getAttributeType().getNameOrOID());
-          messages.add(message);
-        }
-        index.setBackendIndexEntryLimit(cfg.getBackendIndexEntryLimit());
-      }
-
       if(id2children.setIndexEntryLimit(cfg.getBackendIndexEntryLimit()))
       {
         adminActionRequired = true;
@@ -3847,9 +3832,7 @@
     try
     {
       AttributeIndex index =
-          new AttributeIndex(cfg, state,
-                             indexEntryLimit,
-                             env, this);
+          new AttributeIndex(cfg, state, env, this);
       index.open();
       attrIndexMap.put(cfg.getIndexAttribute(), index);
     }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/IndexFilter.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/IndexFilter.java
index 5bac52f..6cbe05a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/IndexFilter.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/IndexFilter.java
@@ -420,7 +420,8 @@
     }
     else
     {
-      candidates = attributeIndex.evaluateEqualityFilter(equalityFilter);
+      candidates =
+          attributeIndex.evaluateEqualityFilter(equalityFilter, buffer);
     }
     return candidates;
   }
@@ -442,7 +443,7 @@
     }
     else
     {
-      candidates = attributeIndex.evaluatePresenceFilter(filter);
+      candidates = attributeIndex.evaluatePresenceFilter(filter, buffer);
     }
     return candidates;
   }
@@ -464,7 +465,7 @@
     }
     else
     {
-      candidates = attributeIndex.evaluateGreaterOrEqualFilter(filter);
+      candidates = attributeIndex.evaluateGreaterOrEqualFilter(filter, buffer);
     }
     return candidates;
   }
@@ -486,7 +487,7 @@
     }
     else
     {
-      candidates = attributeIndex.evaluateLessOrEqualFilter(filter);
+      candidates = attributeIndex.evaluateLessOrEqualFilter(filter, buffer);
     }
     return candidates;
   }
@@ -508,7 +509,7 @@
     }
     else
     {
-      candidates = attributeIndex.evaluateSubstringFilter(filter);
+      candidates = attributeIndex.evaluateSubstringFilter(filter, buffer);
     }
     return candidates;
   }
@@ -530,7 +531,8 @@
     }
     else
     {
-      candidates = attributeIndex.evaluateApproximateFilter(approximateFilter);
+      candidates =
+          attributeIndex.evaluateApproximateFilter(approximateFilter, buffer);
     }
     return candidates;
   }
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java
index 2bc7f8e..8e2b059 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java
@@ -30,9 +30,7 @@
 
 import org.opends.server.TestCaseUtils;
 import org.opends.server.admin.std.server.JEBackendCfg;
-import org.opends.server.admin.std.server.JEIndexCfg;
 import org.opends.server.admin.std.meta.JEBackendCfgDefn;
-import org.opends.server.admin.std.meta.JEIndexCfgDefn;
 import org.opends.server.admin.server.AdminTestCaseUtils;
 import org.opends.server.core.ModifyDNOperationBasis;
 import org.opends.server.core.DirectoryServer;
@@ -631,7 +629,7 @@
     //Only one index should be used because it is below the FILTER_CANDIDATEassertEquals(ec.getDN2URI().)_THRESHOLD.
     debugString =
         result.get(0).getAttribute("debugsearchindex").get(0).getValues().toString();
-    assertTrue(debugString.split("cn").length <= 2);
+    assertTrue(debugString.split("cn").length <= 3);
     finalStartPos = debugString.indexOf("final=") + 13;
     finalEndPos = debugString.indexOf("]", finalStartPos);
     finalCount = Integer.valueOf(debugString.substring(finalStartPos,
@@ -1238,26 +1236,20 @@
       "testSearchNotIndexed",
       "testModifyDNNewSuperior", "testMatchedDN"})
   public void testApplyIndexConfig() throws Exception {
-    Entry configEntry = TestCaseUtils.makeEntry(
+    int resultCode = TestCaseUtils.applyModifications(
         "dn: ds-cfg-index-attribute=givenName,cn=Index," +
             "ds-cfg-backend-id=indexRoot,cn=Backends,cn=config",
-        "objectClass: top",
-        "objectClass: ds-cfg-je-index",
-        "ds-cfg-index-attribute: givenName",
+        "changetype: modify",
+        "replace: ds-cfg-index-type",
         "ds-cfg-index-type: approximate");
 
-    JEIndexCfg cfg = AdminTestCaseUtils.getConfiguration(
-        JEIndexCfgDefn.getInstance(), configEntry);
+    assertEquals(resultCode, 0);
 
     RootContainer rootContainer = backend.getRootContainer();
     EntryContainer ec = rootContainer.getEntryContainer(DN.decode("dc=test,dc=com"));
 
     AttributeIndex index =
         ec.getAttributeIndex(DirectoryServer.getAttributeType("givenname"));
-    ConfigChangeResult ccr = index.applyConfigurationChange(cfg);
-    assertTrue(ccr.getResultCode().equals(ResultCode.SUCCESS));
-    assertTrue(ccr.adminActionRequired());
-    assertFalse(ccr.getMessages().isEmpty());
     assertNull(index.equalityIndex);
     assertNull(index.presenceIndex);
     assertNull(index.substringIndex);
@@ -1325,24 +1317,18 @@
         result.get(0).getAttribute("debugsearchindex").get(0).getValues().toString();
     assertTrue(debugString.contains("NOT-INDEXED"));
 
-    configEntry = TestCaseUtils.makeEntry(
+    resultCode = TestCaseUtils.applyModifications(
         "dn: ds-cfg-index-attribute=givenName,cn=Index," +
             "ds-cfg-backend-id=indexRoot,cn=Backends,cn=config",
-        "objectClass: top",
-        "objectClass: ds-cfg-je-index",
-        "ds-cfg-index-attribute: givenName",
+        "changetype: modify",
+        "replace: ds-cfg-index-type",
         "ds-cfg-index-type: equality",
         "ds-cfg-index-type: presence",
         "ds-cfg-index-type: ordering",
         "ds-cfg-index-type: substring");
 
-    cfg = AdminTestCaseUtils.getConfiguration(
-        JEIndexCfgDefn.getInstance(), configEntry);
+    assertEquals(resultCode, 0);
 
-    ccr = index.applyConfigurationChange(cfg);
-    assertTrue(ccr.getResultCode().equals(ResultCode.SUCCESS));
-    assertTrue(ccr.adminActionRequired());
-    assertFalse(ccr.getMessages().isEmpty());
     assertNotNull(index.equalityIndex);
     assertNotNull(index.presenceIndex);
     assertNotNull(index.substringIndex);
@@ -1385,8 +1371,13 @@
     assertFalse(apfound);
 
     // Delete the entries attribute index.
-    ccr = ec.applyConfigurationDelete(cfg);
-    assertTrue(ccr.getResultCode().equals(ResultCode.SUCCESS));
+    resultCode = TestCaseUtils.applyModifications(
+        "dn: ds-cfg-index-attribute=givenName,cn=Index," +
+            "ds-cfg-backend-id=indexRoot,cn=Backends,cn=config",
+        "changetype: delete");
+
+    assertEquals(resultCode, 0);
+
     assertNull(ec.getAttributeIndex(
         DirectoryServer.getAttributeType("givenname")));
     databases = new ArrayList<DatabaseContainer>();
@@ -1397,10 +1388,20 @@
     }
 
     // Add it back
-    ccr = ec.applyConfigurationAdd(cfg);
-    assertTrue(ccr.getResultCode().equals(ResultCode.SUCCESS));
-    assertTrue(ccr.adminActionRequired());
-    assertFalse(ccr.getMessages().isEmpty());
+    resultCode = TestCaseUtils.applyModifications(
+        "dn: ds-cfg-index-attribute=givenName,cn=Index," +
+            "ds-cfg-backend-id=indexRoot,cn=Backends,cn=config",
+        "changetype: add",
+        "objectClass: top",
+        "objectClass: ds-cfg-je-index",
+        "ds-cfg-index-attribute: givenName",
+        "ds-cfg-index-type: equality",
+        "ds-cfg-index-type: presence",
+        "ds-cfg-index-type: ordering",
+        "ds-cfg-index-type: substring");
+
+    assertEquals(resultCode, 0);
+
     assertNotNull(ec.getAttributeIndex(
         DirectoryServer.getAttributeType("givenname")));
     databases = new ArrayList<DatabaseContainer>();
@@ -1441,53 +1442,24 @@
 
     // Make sure changing the index entry limit on an index where the limit
     // is already exceeded causes warnings.
-    configEntry = TestCaseUtils.makeEntry(
+    resultCode = TestCaseUtils.applyModifications(
         "dn: ds-cfg-index-attribute=mail,cn=Index," +
             "ds-cfg-backend-id=indexRoot,cn=Backends,cn=config",
-        "objectClass: top",
-        "objectClass: ds-cfg-je-index",
-        "ds-cfg-index-attribute: mail",
-        "ds-cfg-index-type: presence",
-        "ds-cfg-index-type: equality",
-        "ds-cfg-index-type: ordering",
-        "ds-cfg-index-type: substring",
-        "ds-cfg-index-type: approximate",
+        "changetype: modify",
+        "replace: ds-cfg-index-entry-limit",
         "ds-cfg-index-entry-limit: 30");
 
-    cfg = AdminTestCaseUtils.getConfiguration(
-        JEIndexCfgDefn.getInstance(), configEntry);
+    assertEquals(resultCode, 0);
 
     // Make sure removing a index entry limit for an index makes it use the
     // backend wide setting.
-    index =
-        ec.getAttributeIndex(DirectoryServer.getAttributeType("mail"));
-    ccr = index.applyConfigurationChange(cfg);
-    assertTrue(ccr.getResultCode().equals(ResultCode.SUCCESS));
-    assertTrue(ccr.adminActionRequired());
-    assertFalse(ccr.getMessages().isEmpty());
-
-    configEntry = TestCaseUtils.makeEntry(
+    resultCode = TestCaseUtils.applyModifications(
         "dn: ds-cfg-index-attribute=mail,cn=Index," +
             "ds-cfg-backend-id=indexRoot,cn=Backends,cn=config",
-        "objectClass: top",
-        "objectClass: ds-cfg-je-index",
-        "ds-cfg-index-attribute: mail",
-        "ds-cfg-index-type: presence",
-        "ds-cfg-index-type: equality",
-        "ds-cfg-index-type: ordering",
-        "ds-cfg-index-type: substring",
-        "ds-cfg-index-type: approximate");
+        "changetype: modify",
+        "delete: ds-cfg-index-entry-limit");
 
-    cfg = AdminTestCaseUtils.getConfiguration(
-        JEIndexCfgDefn.getInstance(), configEntry);
-
-   index =
-        ec.getAttributeIndex(DirectoryServer.getAttributeType("mail"));
-    ccr = index.applyConfigurationChange(cfg);
-    assertTrue(ccr.getResultCode().equals(ResultCode.SUCCESS));
-    assertFalse(ccr.adminActionRequired());
-    assertTrue(ccr.getMessages().isEmpty());
-
+    assertEquals(resultCode, 0);
   }
 
 

--
Gitblit v1.10.0