From 87b6a9294f437fd6312c2fbe2292ee64babd8d7e Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 10 Oct 2013 14:45:51 +0000
Subject: [PATCH] OPENDJ-1116 Introduce abstraction for the changelog DB

---
 opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexRecord.java                          |   12 +-
 opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDBCursor.java                       |    5 
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDBTest.java |   30 ++++---
 opends/src/server/org/opends/server/replication/server/ReplicationServer.java                                              |   11 +-
 opends/src/server/org/opends/server/replication/server/ECLServerHandler.java                                               |   33 ++++----
 opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNData.java                                       |   18 ++--
 opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexDB.java                              |   26 +++---
 opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDB.java                                         |   22 ++--
 opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java                             |   26 +++---
 9 files changed, 95 insertions(+), 88 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java b/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
index c9c2a07..9ebbcd3 100644
--- a/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
@@ -40,10 +40,7 @@
 import org.opends.server.replication.common.ServerState;
 import org.opends.server.replication.common.ServerStatus;
 import org.opends.server.replication.protocol.*;
-import org.opends.server.replication.server.changelog.api.CNIndexRecord;
-import org.opends.server.replication.server.changelog.api.ChangeNumberIndexDB;
-import org.opends.server.replication.server.changelog.api.ChangelogException;
-import org.opends.server.replication.server.changelog.api.DBCursor;
+import org.opends.server.replication.server.changelog.api.*;
 import org.opends.server.types.*;
 import org.opends.server.util.ServerConstants;
 
@@ -77,7 +74,7 @@
   private String operationId;
 
   /** Cursor on the {@link ChangeNumberIndexDB}. */
-  private DBCursor<CNIndexRecord> cnIndexDBCursor;
+  private DBCursor<ChangeNumberIndexRecord> cnIndexDBCursor;
 
   private boolean draftCompat = false;
   /**
@@ -591,7 +588,7 @@
     {
       // Request filter DOES NOT contain any start change number
       // So we'll generate from the oldest change number in the CNIndexDB
-      final CNIndexRecord oldestRecord = cnIndexDB.getOldestRecord();
+      final ChangeNumberIndexRecord oldestRecord = cnIndexDB.getOldestRecord();
       if (oldestRecord == null)
       { // DB is empty or closed
         isEndOfCNIndexDBReached = true;
@@ -606,8 +603,9 @@
     // Request filter DOES contain a startChangeNumber
 
     // Read the CNIndexDB to see whether it contains startChangeNumber
-    DBCursor<CNIndexRecord> cursor = cnIndexDB.getCursorFrom(startChangeNumber);
-    final CNIndexRecord startRecord = cursor.getRecord();
+    DBCursor<ChangeNumberIndexRecord> cursor =
+        cnIndexDB.getCursorFrom(startChangeNumber);
+    final ChangeNumberIndexRecord startRecord = cursor.getRecord();
     if (startRecord != null)
     {
       // found the provided startChangeNumber, let's return it
@@ -632,7 +630,7 @@
     if (startChangeNumber < oldestChangeNumber)
     {
       cursor = cnIndexDB.getCursorFrom(oldestChangeNumber);
-      final CNIndexRecord oldestRecord = cursor.getRecord();
+      final ChangeNumberIndexRecord oldestRecord = cursor.getRecord();
       if (oldestRecord == null)
       {
         // This should not happen
@@ -648,7 +646,7 @@
     {
       // startChangeNumber is between oldest and potential newest and has never
       // been returned yet
-      final CNIndexRecord newestRecord = cnIndexDB.getNewestRecord();
+      final ChangeNumberIndexRecord newestRecord = cnIndexDB.getNewestRecord();
       if (newestRecord == null)
       {
         isEndOfCNIndexDBReached = true;
@@ -667,10 +665,12 @@
     throw new DirectoryException(ResultCode.SUCCESS, Message.raw(""));
   }
 
-  private DBCursor<CNIndexRecord> getCursorFrom(ChangeNumberIndexDB cnIndexDB,
-      long startChangeNumber) throws ChangelogException
+  private DBCursor<ChangeNumberIndexRecord> getCursorFrom(
+      ChangeNumberIndexDB cnIndexDB, long startChangeNumber)
+      throws ChangelogException
   {
-    DBCursor<CNIndexRecord> cursor = cnIndexDB.getCursorFrom(startChangeNumber);
+    DBCursor<ChangeNumberIndexRecord> cursor =
+        cnIndexDB.getCursorFrom(startChangeNumber);
     if (cursor.getRecord() == null)
     {
       close(cursor);
@@ -1320,7 +1320,7 @@
         return true;
       }
 
-      final CNIndexRecord currentRecord = cnIndexDBCursor.getRecord();
+      final ChangeNumberIndexRecord currentRecord = cnIndexDBCursor.getRecord();
       final CSN csnFromCNIndexDB = currentRecord.getCSN();
       final DN dnFromCNIndexDB = currentRecord.getBaseDN();
 
@@ -1401,8 +1401,9 @@
   private void assignNewChangeNumberAndStore(ECLUpdateMsg change)
       throws ChangelogException
   {
-    final CNIndexRecord record = new CNIndexRecord(previousCookie.toString(),
-        change.getBaseDN(), change.getUpdateMsg().getCSN());
+    final ChangeNumberIndexRecord record =
+        new ChangeNumberIndexRecord(previousCookie.toString(),
+            change.getBaseDN(), change.getUpdateMsg().getCSN());
     // store in CNIndexDB the pair
     // (change number of the current change, state before this change)
     change.setChangeNumber(
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServer.java b/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
index 260ec98..37b6d7b 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -51,10 +51,7 @@
 import org.opends.server.replication.common.*;
 import org.opends.server.replication.plugin.MultimasterReplication;
 import org.opends.server.replication.protocol.*;
-import org.opends.server.replication.server.changelog.api.CNIndexRecord;
-import org.opends.server.replication.server.changelog.api.ChangeNumberIndexDB;
-import org.opends.server.replication.server.changelog.api.ChangelogDB;
-import org.opends.server.replication.server.changelog.api.ChangelogException;
+import org.opends.server.replication.server.changelog.api.*;
 import org.opends.server.replication.server.changelog.je.JEChangelogDB;
 import org.opends.server.types.*;
 import org.opends.server.util.LDIFReader;
@@ -1399,8 +1396,8 @@
     try
     {
       final ChangeNumberIndexDB cnIndexDB = getChangeNumberIndexDB();
-      final CNIndexRecord oldestRecord = cnIndexDB.getOldestRecord();
-      final CNIndexRecord newestRecord = cnIndexDB.getNewestRecord();
+      final ChangeNumberIndexRecord oldestRecord = cnIndexDB.getOldestRecord();
+      final ChangeNumberIndexRecord newestRecord = cnIndexDB.getNewestRecord();
 
       boolean dbEmpty = true;
       long oldestChangeNumber = 0;
@@ -1453,7 +1450,7 @@
         {
           // There are records in the CNIndexDB (so already returned to clients)
           // BUT
-          // There is nothing related to this domain in the newest CNIndexRecord
+          // There is nothing related to this domain in the newest record
           // (maybe this domain was disabled when this record was returned).
           // In that case, are counted the changes from the time of the most
           // recent change
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexDB.java b/opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexDB.java
index f578665..5df4c1bb 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexDB.java
@@ -29,10 +29,10 @@
 
 /**
  * This class stores an index of all the changes seen by this server in the form
- * of {@link CNIndexRecord}s. The records are sorted by a global ordering as
- * defined in the CSN class. The index links a <code>changeNumber</code> to the
- * corresponding CSN. The CSN then links to a corresponding change in one of the
- * ReplicaDBs.
+ * of {@link ChangeNumberIndexRecord}s. The records are sorted by a global
+ * ordering as defined in the CSN class. The index links a
+ * <code>changeNumber</code> to the corresponding CSN. The CSN then links to a
+ * corresponding change in one of the ReplicaDBs.
  *
  * @see <a href=
  * "https://wikis.forgerock.org/confluence/display/OPENDJ/OpenDJ+Domain+Names"
@@ -53,22 +53,22 @@
   /**
    * Get the oldest record stored in this DB.
    *
-   * @return Returns the oldest {@link CNIndexRecord} in this DB, null when the
-   *         DB is empty or closed
+   * @return Returns the oldest {@link ChangeNumberIndexRecord} in this DB, null
+   *         when the DB is empty or closed
    * @throws ChangelogException
    *           if a database problem occurs.
    */
-  CNIndexRecord getOldestRecord() throws ChangelogException;
+  ChangeNumberIndexRecord getOldestRecord() throws ChangelogException;
 
   /**
    * Get the newest record stored in this DB.
    *
-   * @return Returns the newest {@link CNIndexRecord} in this DB, null when the
-   *         DB is empty or closed
+   * @return Returns the newest {@link ChangeNumberIndexRecord} in this DB, null
+   *         when the DB is empty or closed
    * @throws ChangelogException
    *           if a database problem occurs.
    */
-  CNIndexRecord getNewestRecord() throws ChangelogException;
+  ChangeNumberIndexRecord getNewestRecord() throws ChangelogException;
 
   /**
    * Add an update to the list of messages that must be saved to this DB managed
@@ -80,12 +80,12 @@
    * for lazily building the ChangeNumberIndexDB.
    *
    * @param record
-   *          The {@link CNIndexRecord} to add to this DB.
+   *          The {@link ChangeNumberIndexRecord} to add to this DB.
    * @return the change number associated to this record on adding to this DB
    * @throws ChangelogException
    *           if a database problem occurs.
    */
-  long addRecord(CNIndexRecord record) throws ChangelogException;
+  long addRecord(ChangeNumberIndexRecord record) throws ChangelogException;
 
   /**
    * Generate a new {@link DBCursor} that allows to browse the db managed by
@@ -99,7 +99,7 @@
    * @throws ChangelogException
    *           if a database problem occurs.
    */
-  DBCursor<CNIndexRecord> getCursorFrom(long startChangeNumber)
+  DBCursor<ChangeNumberIndexRecord> getCursorFrom(long startChangeNumber)
       throws ChangelogException;
 
 }
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/api/CNIndexRecord.java b/opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexRecord.java
similarity index 88%
rename from opends/src/server/org/opends/server/replication/server/changelog/api/CNIndexRecord.java
rename to opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexRecord.java
index eb057d7..2d07a60 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/api/CNIndexRecord.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/api/ChangeNumberIndexRecord.java
@@ -30,10 +30,10 @@
 import org.opends.server.types.DN;
 
 /**
- * The Change Number Index Data class represents records stored in the
+ * The Change Number Index Record class represents records stored in the
  * {@link ChangeNumberIndexDB}.
  */
-public final class CNIndexRecord
+public final class ChangeNumberIndexRecord
 {
 
   /** This is the key used to store the rest of the . */
@@ -54,8 +54,8 @@
    * @param csn
    *          the replication CSN field
    */
-  public CNIndexRecord(long changeNumber, String previousCookie, DN baseDN,
-      CSN csn)
+  public ChangeNumberIndexRecord(long changeNumber, String previousCookie,
+      DN baseDN, CSN csn)
   {
     this.changeNumber = changeNumber;
     this.previousCookie = previousCookie;
@@ -72,9 +72,9 @@
    *          the baseDN
    * @param csn
    *          the replication CSN field
-   * @see #CNIndexRecord(long, String, DN, CSN)
+   * @see #ChangeNumberIndexRecord(long, String, DN, CSN)
    */
-  public CNIndexRecord(String previousCookie, DN baseDN, CSN csn)
+  public ChangeNumberIndexRecord(String previousCookie, DN baseDN, CSN csn)
   {
     this(0, previousCookie, baseDN, csn);
   }
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDB.java b/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDB.java
index 6ccb0c2..9a1c9f8 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDB.java
@@ -33,8 +33,7 @@
 
 import org.opends.messages.MessageBuilder;
 import org.opends.server.loggers.debug.DebugTracer;
-import org.opends.server.replication.server.changelog.api.CNIndexRecord;
-import org.opends.server.replication.server.changelog.api.ChangelogException;
+import org.opends.server.replication.server.changelog.api.*;
 import org.opends.server.types.DebugLogLevel;
 
 import com.sleepycat.je.*;
@@ -83,9 +82,9 @@
    * Add a record to the database.
    *
    * @param record
-   *          the provided {@link CNIndexRecord} to be stored.
+   *          the provided {@link ChangeNumberIndexRecord} to be stored.
    */
-  public void addRecord(CNIndexRecord record)
+  public void addRecord(ChangeNumberIndexRecord record)
   {
     try
     {
@@ -220,7 +219,7 @@
    * @throws ChangelogException
    *           if a database problem occurred
    */
-  public CNIndexRecord readFirstRecord() throws ChangelogException
+  public ChangeNumberIndexRecord readFirstRecord() throws ChangelogException
   {
     try
     {
@@ -256,7 +255,7 @@
     }
   }
 
-  private CNIndexRecord newCNIndexRecord(ReplicationDraftCNKey key,
+  private ChangeNumberIndexRecord newCNIndexRecord(ReplicationDraftCNKey key,
       DatabaseEntry data) throws ChangelogException
   {
     return new DraftCNData(key.getChangeNumber(), data.getData()).getRecord();
@@ -297,7 +296,7 @@
    * @throws ChangelogException
    *           if a database problem occurred
    */
-  public CNIndexRecord readLastRecord() throws ChangelogException
+  public ChangeNumberIndexRecord readLastRecord() throws ChangelogException
   {
     try
     {
@@ -357,7 +356,7 @@
     private final Transaction txn;
     private final ReplicationDraftCNKey key;
     private final DatabaseEntry entry = new DatabaseEntry();
-    private CNIndexRecord record;
+    private ChangeNumberIndexRecord record;
     private boolean isClosed = false;
 
 
@@ -561,11 +560,12 @@
     }
 
     /**
-     * Returns the {@link CNIndexRecord} at the current position of the cursor.
+     * Returns the {@link ChangeNumberIndexRecord} at the current position of
+     * the cursor.
      *
-     * @return The current {@link CNIndexRecord}.
+     * @return The current {@link ChangeNumberIndexRecord}.
      */
-    public CNIndexRecord currentRecord()
+    public ChangeNumberIndexRecord currentRecord()
     {
       if (isClosed)
       {
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNData.java b/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNData.java
index c6faad5..fc4b194 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNData.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNData.java
@@ -31,8 +31,7 @@
 
 import org.opends.messages.Message;
 import org.opends.server.replication.common.CSN;
-import org.opends.server.replication.server.changelog.api.CNIndexRecord;
-import org.opends.server.replication.server.changelog.api.ChangelogException;
+import org.opends.server.replication.server.changelog.api.*;
 import org.opends.server.types.DN;
 import org.opends.server.types.DirectoryException;
 
@@ -50,7 +49,7 @@
   private static final long serialVersionUID = 1L;
 
   private long changeNumber;
-  private CNIndexRecord record;
+  private ChangeNumberIndexRecord record;
 
   /**
    * Creates a record to be stored in the DraftCNDB.
@@ -90,16 +89,16 @@
   }
 
   /**
-   * Decode and returns a {@link CNIndexRecord}.
+   * Decode and returns a {@link ChangeNumberIndexRecord}.
    *
    * @param changeNumber
    * @param data
    *          the provided byte array.
-   * @return the decoded {@link CNIndexRecord}
+   * @return the decoded {@link ChangeNumberIndexRecord}
    * @throws ChangelogException
    *           when a problem occurs.
    */
-  private CNIndexRecord decodeData(long changeNumber, byte[] data)
+  private ChangeNumberIndexRecord decodeData(long changeNumber, byte[] data)
       throws ChangelogException
   {
     try
@@ -107,7 +106,8 @@
       String stringData = new String(data, "UTF-8");
       String[] str = stringData.split(FIELD_SEPARATOR, 3);
       final DN baseDN = DN.decode(str[1]);
-      return new CNIndexRecord(changeNumber, str[0], baseDN, new CSN(str[2]));
+      final CSN csn = new CSN(str[2]);
+      return new ChangeNumberIndexRecord(changeNumber, str[0], baseDN, csn);
     }
     catch (UnsupportedEncodingException e)
     {
@@ -124,11 +124,11 @@
   /**
    * Getter for the decoded record.
    *
-   * @return the {@link CNIndexRecord} record.
+   * @return the {@link ChangeNumberIndexRecord} record.
    * @throws ChangelogException
    *           when a problem occurs.
    */
-  public CNIndexRecord getRecord() throws ChangelogException
+  public ChangeNumberIndexRecord getRecord() throws ChangelogException
   {
     if (record == null)
       record = decodeData(changeNumber, getData());
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
index 6fb9407..241a084 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java
@@ -123,8 +123,8 @@
 
     // DB initialization
     db = new DraftCNDB(dbenv);
-    final CNIndexRecord oldestRecord = db.readFirstRecord();
-    final CNIndexRecord newestRecord = db.readLastRecord();
+    final ChangeNumberIndexRecord oldestRecord = db.readFirstRecord();
+    final ChangeNumberIndexRecord newestRecord = db.readLastRecord();
     oldestChangeNumber = getChangeNumber(oldestRecord);
     newestChangeNumber = getChangeNumber(newestRecord);
     // initialization of the lastGeneratedChangeNumber from the DB content
@@ -147,7 +147,8 @@
     trimmingThread.start();
   }
 
-  private long getChangeNumber(CNIndexRecord record) throws ChangelogException
+  private long getChangeNumber(ChangeNumberIndexRecord record)
+      throws ChangelogException
   {
     if (record != null)
     {
@@ -158,12 +159,13 @@
 
   /** {@inheritDoc} */
   @Override
-  public long addRecord(CNIndexRecord record) throws ChangelogException
+  public long addRecord(ChangeNumberIndexRecord record)
+      throws ChangelogException
   {
     long changeNumber = nextChangeNumber();
-    final CNIndexRecord newRecord =
-        new CNIndexRecord(changeNumber, record.getPreviousCookie(), record
-            .getBaseDN(), record.getCSN());
+    final ChangeNumberIndexRecord newRecord =
+        new ChangeNumberIndexRecord(changeNumber, record.getPreviousCookie(),
+            record.getBaseDN(), record.getCSN());
     db.addRecord(newRecord);
 
     if (debugEnabled())
@@ -173,14 +175,14 @@
 
   /** {@inheritDoc} */
   @Override
-  public CNIndexRecord getOldestRecord() throws ChangelogException
+  public ChangeNumberIndexRecord getOldestRecord() throws ChangelogException
   {
     return db.readFirstRecord();
   }
 
   /** {@inheritDoc} */
   @Override
-  public CNIndexRecord getNewestRecord() throws ChangelogException
+  public ChangeNumberIndexRecord getNewestRecord() throws ChangelogException
   {
     return db.readLastRecord();
   }
@@ -221,7 +223,7 @@
 
   /** {@inheritDoc} */
   @Override
-  public DBCursor<CNIndexRecord> getCursorFrom(long startChangeNumber)
+  public DBCursor<ChangeNumberIndexRecord> getCursorFrom(long startChangeNumber)
       throws ChangelogException
   {
     return new JEChangeNumberIndexDBCursor(db, startChangeNumber);
@@ -355,7 +357,7 @@
             return;
           }
 
-          final CNIndexRecord record = cursor.currentRecord();
+          final ChangeNumberIndexRecord record = cursor.currentRecord();
           if (baseDNToClear != null && baseDNToClear.equals(record.getBaseDN()))
           {
             cursor.delete();
@@ -478,7 +480,7 @@
     {
       try
       {
-        CNIndexRecord record =
+        final ChangeNumberIndexRecord record =
             isFirst ? db.readFirstRecord() : db.readLastRecord();
         if (record != null)
         {
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDBCursor.java b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDBCursor.java
index 57db6d4..f4291302 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDBCursor.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDBCursor.java
@@ -38,7 +38,8 @@
  * This class allows to iterate through the changes received from a given
  * LDAP Server Identifier.
  */
-public class JEChangeNumberIndexDBCursor implements DBCursor<CNIndexRecord>
+public class JEChangeNumberIndexDBCursor implements
+    DBCursor<ChangeNumberIndexRecord>
 {
   private static final DebugTracer TRACER = getTracer();
   private DraftCNDBCursor draftCNDbCursor;
@@ -62,7 +63,7 @@
 
   /** {@inheritDoc} */
   @Override
-  public CNIndexRecord getRecord()
+  public ChangeNumberIndexRecord getRecord()
   {
     try
     {
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDBTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDBTest.java
index 0409d34..dc2600e 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDBTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDBTest.java
@@ -35,7 +35,7 @@
 import org.opends.server.replication.common.CSN;
 import org.opends.server.replication.server.ReplServerFakeConfiguration;
 import org.opends.server.replication.server.ReplicationServer;
-import org.opends.server.replication.server.changelog.api.CNIndexRecord;
+import org.opends.server.replication.server.changelog.api.ChangeNumberIndexRecord;
 import org.opends.server.replication.server.changelog.api.ChangelogException;
 import org.opends.server.replication.server.changelog.api.DBCursor;
 import org.opends.server.types.DN;
@@ -86,16 +86,16 @@
       CSN[] csns = newCSNs(1, 0, 3);
 
       // Add records
-      long cn1 = cnIndexDB.addRecord(new CNIndexRecord(value1, baseDN1, csns[0]));
-                 cnIndexDB.addRecord(new CNIndexRecord(value2, baseDN2, csns[1]));
-      long cn3 = cnIndexDB.addRecord(new CNIndexRecord(value3, baseDN3, csns[2]));
+      long cn1 = addRecord(cnIndexDB, value1, baseDN1, csns[0]);
+                 addRecord(cnIndexDB, value2, baseDN2, csns[1]);
+      long cn3 = addRecord(cnIndexDB, value3, baseDN3, csns[2]);
 
       // The ChangeNumber should not get purged
       final long oldestCN = cnIndexDB.getOldestRecord().getChangeNumber();
       assertEquals(oldestCN, cn1);
       assertEquals(cnIndexDB.getNewestRecord().getChangeNumber(), cn3);
 
-      DBCursor<CNIndexRecord> cursor = cnIndexDB.getCursorFrom(oldestCN);
+      DBCursor<ChangeNumberIndexRecord> cursor = cnIndexDB.getCursorFrom(oldestCN);
       try
       {
         assertEqualTo(cursor.getRecord(), csns[0], baseDN1, value1);
@@ -131,7 +131,13 @@
     }
   }
 
-  private void assertEqualTo(CNIndexRecord record, CSN csn, DN baseDN, String cookie)
+  private long addRecord(JEChangeNumberIndexDB cnIndexDB, String cookie, DN baseDN, CSN csn)
+      throws ChangelogException
+  {
+    return cnIndexDB.addRecord(new ChangeNumberIndexRecord(cookie, baseDN, csn));
+  }
+
+  private void assertEqualTo(ChangeNumberIndexRecord record, CSN csn, DN baseDN, String cookie)
   {
     assertEquals(record.getCSN(), csn);
     assertEquals(record.getBaseDN(), baseDN);
@@ -190,9 +196,9 @@
       CSN[] csns = newCSNs(1, 0, 3);
 
       // Add records
-      long cn1 = cnIndexDB.addRecord(new CNIndexRecord(value1, baseDN1, csns[0]));
-      long cn2 = cnIndexDB.addRecord(new CNIndexRecord(value2, baseDN2, csns[1]));
-      long cn3 = cnIndexDB.addRecord(new CNIndexRecord(value3, baseDN3, csns[2]));
+      long cn1 = addRecord(cnIndexDB, value1, baseDN1, csns[0]);
+      long cn2 = addRecord(cnIndexDB, value2, baseDN2, csns[1]);
+      long cn3 = addRecord(cnIndexDB, value3, baseDN3, csns[2]);
 
       // Checks
       assertEquals(cnIndexDB.getOldestRecord().getChangeNumber(), cn1);
@@ -205,7 +211,7 @@
       assertEquals(getPreviousCookie(cnIndexDB, cn2), value2);
       assertEquals(getPreviousCookie(cnIndexDB, cn3), value3);
 
-      DBCursor<CNIndexRecord> cursor = cnIndexDB.getCursorFrom(cn1);
+      DBCursor<ChangeNumberIndexRecord> cursor = cnIndexDB.getCursorFrom(cn1);
       assertCursorReadsInOrder(cursor, cn1, cn2, cn3);
 
       cursor = cnIndexDB.getCursorFrom(cn2);
@@ -239,7 +245,7 @@
   private String getPreviousCookie(JEChangeNumberIndexDB cnIndexDB,
       long changeNumber) throws Exception
   {
-    DBCursor<CNIndexRecord> cursor = cnIndexDB.getCursorFrom(changeNumber);
+    DBCursor<ChangeNumberIndexRecord> cursor = cnIndexDB.getCursorFrom(changeNumber);
     try
     {
       return cursor.getRecord().getPreviousCookie();
@@ -250,7 +256,7 @@
     }
   }
 
-  private void assertCursorReadsInOrder(DBCursor<CNIndexRecord> cursor,
+  private void assertCursorReadsInOrder(DBCursor<ChangeNumberIndexRecord> cursor,
       long... cns) throws ChangelogException
   {
     try

--
Gitblit v1.10.0