From e95d2b4182b468a4e7d206fb11104098beef3b46 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 03 Jan 2014 11:25:19 +0000
Subject: [PATCH] OPENDJ-1205 Remove network layer from External ChangeLog implementation

---
 opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java                |   16 +-
 opends/src/server/org/opends/server/replication/server/ECLServerHandler.java                                 |   89 +++++++----------
 opends/src/server/org/opends/server/replication/server/ECLServerWriter.java                                  |    6 
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/protocol/SynchronizationMsgTest.java |   34 +++---
 opends/src/server/org/opends/server/replication/protocol/StartECLSessionMsg.java                             |  138 +++++++++++++++------------
 5 files changed, 144 insertions(+), 139 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/protocol/StartECLSessionMsg.java b/opends/src/server/org/opends/server/replication/protocol/StartECLSessionMsg.java
index 092dc70..d23a0f1 100644
--- a/opends/src/server/org/opends/server/replication/protocol/StartECLSessionMsg.java
+++ b/opends/src/server/org/opends/server/replication/protocol/StartECLSessionMsg.java
@@ -44,55 +44,69 @@
 {
 
   /**
-   * This specifies that the ECL is requested from a provided cookie value
-   * defined as a MultiDomainServerState.
+   * Type of request made to the External Changelog.
    */
-  public final static short REQUEST_TYPE_FROM_COOKIE = 0;
+  public enum ECLRequestType
+  {
+
+    /**
+     * This specifies that the ECL is requested from a provided cookie value
+     * defined as a MultiDomainServerState.
+     */
+    REQUEST_TYPE_FROM_COOKIE,
+
+    /**
+     * This specifies that the ECL is requested from a provided interval
+     * of change numbers (as defined by draft-good-ldap-changelog [CHANGELOG]
+     * and NOT replication CSNs).
+     * TODO: not yet implemented
+     */
+    REQUEST_TYPE_FROM_CHANGE_NUMBER,
+
+    /**
+     * This specifies that the ECL is requested only for the entry that have a
+     * CSN matching the provided one.
+     * TODO: not yet implemented
+     */
+    REQUEST_TYPE_EQUALS_REPL_CHANGE_NUMBER
+  }
 
   /**
-   * This specifies that the ECL is requested from a provided interval
-   * of change numbers (as defined by draft-good-ldap-changelog [CHANGELOG]
-   * and NOT replication CSNs).
-   * TODO: not yet implemented
+   * Whether the current External Changelog search is persistent and requires to
+   * receive only new changes or already existing changes as well.
    */
-  public final static short REQUEST_TYPE_FROM_CHANGE_NUMBER = 1;
+  public enum Persistent
+  {
+    /**
+     * This specifies that the request on the ECL is a PERSISTENT search with
+     * changesOnly = false.
+     * <p>
+     * It will return the content of the changelog DB as it is now, plus any
+     * subsequent changes.
+     */
+    PERSISTENT,
 
-  /**
-   * This specifies that the ECL is requested only for the entry that have
-   * a CSN matching the provided one.
-   * TODO: not yet implemented
-   */
-  public final static short REQUEST_TYPE_EQUALS_REPL_CHANGE_NUMBER = 2;
+    /**
+     * This specifies that the request on the ECL is a NOT a PERSISTENT search.
+     * <p>
+     * It will only return the content of the changelog DB as it is now, and
+     * stop. It will NOT be turned into a persistent search that can return
+     * subsequent changes.
+     */
+    NON_PERSISTENT,
 
-  /**
-   * This specifies that the request on the ECL is a PERSISTENT search with
-   * changesOnly = false.
-   * <p>
-   * It will return the content of the changelog DB as it is now, plus any
-   * subsequent changes.
-   */
-  public final static short PERSISTENT = 0;
-
-  /**
-   * This specifies that the request on the ECL is a NOT a PERSISTENT search.
-   * <p>
-   * It will only return the content of the changelog DB as it is now, and stop.
-   * It will NOT be turned into a persistent search that can return subsequent
-   * changes.
-   */
-  public final static short NON_PERSISTENT = 1;
-
-  /**
-   * This specifies that the request on the ECL is a PERSISTENT search with
-   * changesOnly = true.
-   * <p>
-   * It will only return subsequent changes that do not exist yet in the
-   * changelog DB.
-   */
-  public final static short PERSISTENT_CHANGES_ONLY = 2;
+    /**
+     * This specifies that the request on the ECL is a PERSISTENT search with
+     * changesOnly = true.
+     * <p>
+     * It will only return subsequent changes that do not exist yet in the
+     * changelog DB.
+     */
+    PERSISTENT_CHANGES_ONLY
+  }
 
   /** The type of request as defined by REQUEST_TYPE_... */
-  private short eclRequestType;
+  private ECLRequestType eclRequestType;
 
   /**
    * When eclRequestType = FROM_COOKIE, specifies the provided cookie value.
@@ -114,15 +128,14 @@
 
   /**
    * Specifies whether the search is persistent and changesOnly.
-   *
-   * @see #NON_PERSISTENT
-   * @see #PERSISTENT
-   * @see #PERSISTENT_CHANGES_ONLY
    */
-  private short isPersistent = NON_PERSISTENT;
+  private Persistent isPersistent = Persistent.NON_PERSISTENT;
 
   /**
-   * A string helping debugging and tracing the client operation related when
+   * This is a string identifying the operation, provided by the client part of
+   * the ECL, used to help interpretation of messages logged.
+   * <p>
+   * It helps debugging and tracing the client operation related when
    * processing, on the RS side, a request on the ECL.
    */
   private String operationId = "";
@@ -160,7 +173,8 @@
 
       // start mode
       int length = getNextLength(in, pos);
-      eclRequestType = Short.valueOf(new String(in, pos, length, "UTF-8"));
+      int requestType = Integer.parseInt(new String(in, pos, length, "UTF-8"));
+      eclRequestType = ECLRequestType.values()[requestType];
       pos += length +1;
 
       length = getNextLength(in, pos);
@@ -177,7 +191,8 @@
 
       // persistentSearch mode
       length = getNextLength(in, pos);
-      isPersistent = Short.valueOf(new String(in, pos, length, "UTF-8"));
+      int persistent = Integer.parseInt(new String(in, pos, length, "UTF-8"));
+      isPersistent = Persistent.values()[persistent];
       pos += length + 1;
 
       // generalized state
@@ -213,12 +228,12 @@
    */
   public StartECLSessionMsg()
   {
-    eclRequestType = REQUEST_TYPE_FROM_COOKIE;
+    eclRequestType = ECLRequestType.REQUEST_TYPE_FROM_COOKIE;
     crossDomainServerState = "";
     firstChangeNumber = -1;
     lastChangeNumber = -1;
     csn = new CSN(0, 0, 0);
-    isPersistent = NON_PERSISTENT;
+    isPersistent = Persistent.NON_PERSISTENT;
     operationId = "-1";
     excludedBaseDNs = new HashSet<String>();
   }
@@ -234,13 +249,13 @@
 
     try
     {
-      byte[] byteMode = toBytes(eclRequestType);
+      byte[] byteMode = toBytes(eclRequestType.ordinal());
       // FIXME JNR Changing the lines below to use long would require a protocol
       // version change. Leave it like this for now until the need arises.
       byte[] byteChangeNumber = toBytes((int) firstChangeNumber);
       byte[] byteStopChangeNumber = toBytes((int) lastChangeNumber);
       byte[] byteCSN = csn.toString().getBytes("UTF-8");
-      byte[] bytePsearch = toBytes(isPersistent);
+      byte[] bytePsearch = toBytes(isPersistent.ordinal());
       byte[] byteGeneralizedState = toBytes(crossDomainServerState);
       byte[] byteOperationId = toBytes(operationId);
       byte[] byteExcludedDNs = toBytes(excludedBaseDNsString);
@@ -291,7 +306,7 @@
   @Override
   public String toString()
   {
-    return getClass().getCanonicalName() + " [" +
+    return getClass().getSimpleName() + " [" +
             " requestType="+ eclRequestType +
             " persistentSearch="       + isPersistent +
             " csn="                    + csn +
@@ -312,8 +327,9 @@
   }
 
   /**
-   * Getter on the changer number stop.
-   * @return the change number stop.
+   * Specifies the last changer number requested.
+   *
+   * @return the last change number requested.
    */
   public long getLastChangeNumber()
   {
@@ -359,7 +375,7 @@
    * Getter on the type of request.
    * @return the type of request.
    */
-  public short getECLRequestType()
+  public ECLRequestType getECLRequestType()
   {
     return eclRequestType;
   }
@@ -368,7 +384,7 @@
    * Setter on the type of request.
    * @param eclRequestType the provided type of request.
    */
-  public void setECLRequestType(short eclRequestType)
+  public void setECLRequestType(ECLRequestType eclRequestType)
   {
     this.eclRequestType = eclRequestType;
   }
@@ -377,7 +393,7 @@
    * Getter on the persistent property of the search request on the ECL.
    * @return the persistent property.
    */
-  public short isPersistent()
+  public Persistent getPersistent()
   {
     return this.isPersistent;
   }
@@ -386,7 +402,7 @@
    * Setter on the persistent property of the search request on the ECL.
    * @param isPersistent the provided persistent property.
    */
-  public void setPersistent(short isPersistent)
+  public void setPersistent(Persistent isPersistent)
   {
     this.isPersistent = isPersistent;
   }
@@ -428,7 +444,7 @@
   }
 
   /**
-   * Getter on the list of excluded baseDNs.
+   * Getter on the list of excluded baseDNs (like cn=admin, ...).
    *
    * @return the list of excluded baseDNs.
    */
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 b3cbf15..93ade2f 100644
--- a/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
@@ -47,7 +47,10 @@
 import static org.opends.server.loggers.ErrorLogger.*;
 import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.replication.protocol.ProtocolVersion.*;
-import static org.opends.server.replication.protocol.StartECLSessionMsg.*;
+import static org.opends.server.replication.protocol.StartECLSessionMsg
+.ECLRequestType.*;
+import static org.opends.server.replication.protocol.StartECLSessionMsg
+.Persistent.*;
 import static org.opends.server.util.StaticUtils.*;
 
 /**
@@ -78,7 +81,7 @@
    *
    * @see #getSearchPhase()
    */
-  public static int INIT_PHASE = 1;
+  private static int INIT_PHASE = 1;
   /**
    * The persistent phase is only used for persistent searches on the External
    * ChangeLog. It comes after the {@link #INIT_PHASE} and sends back to the
@@ -86,30 +89,17 @@
    */
   private static int PERSISTENT_PHASE = 2;
 
-  /**
-   * This is a string identifying the operation, provided by the client part of
-   * the ECL, used to help interpretation of messages logged.
-   */
-  private String operationId;
+  private StartECLSessionMsg startECLSessionMsg;
 
   /** Cursor on the {@link ChangeNumberIndexDB}. */
   private DBCursor<ChangeNumberIndexRecord> cnIndexDBCursor;
 
   private boolean draftCompat = false;
   /**
-   * Specifies the last changer number requested.
-   */
-  private long lastChangeNumber = 0;
-  /**
    * Specifies whether the change number db has been read until its end.
    */
   private boolean isEndOfCNIndexDBReached = false;
   /**
-   * Specifies whether the current search has been requested to be persistent
-   * or not.
-   */
-  private short isPersistent;
-  /**
    * Specifies the current search phase : INIT or PERSISTENT.
    */
   private int searchPhase = INIT_PHASE;
@@ -124,10 +114,6 @@
    * (thus becoming the "current" cookie just before the change is returned.
    */
   private MultiDomainServerState previousCookie = new MultiDomainServerState();
-  /**
-   * Specifies the excluded DNs (like cn=admin, ...).
-   */
-  private Set<String> excludedBaseDNs = new HashSet<String>();
 
   /**
    * Eligible CSN - only changes older or equal to eligibleCSN are published in
@@ -144,13 +130,13 @@
    * Provides a string representation of this object.
    * @return the string representation.
    */
-  public String dumpState()
+  private String dumpState()
   {
     return getClass().getCanonicalName() +
            "[" +
            "[draftCompat=" + draftCompat +
-           "] [persistent=" + isPersistent +
-           "] [startChangeNumber=" + lastChangeNumber +
+           "] [persistent=" + startECLSessionMsg.getPersistent() +
+           "] [startChangeNumber=" + startECLSessionMsg.getLastChangeNumber() +
            "] [isEndOfCNIndexDBReached=" + isEndOfCNIndexDBReached +
            "] [searchPhase=" + searchPhase +
            "] [startCookie=" + startCookie +
@@ -716,7 +702,7 @@
       // Initializes each and every domain with the next(first) eligible message
       // from the domain.
       for (DomainContext domainCtxt : domainCtxts) {
-        domainCtxt.computeNextEligibleMessageForDomain(operationId);
+        domainCtxt.computeNextEligibleMessageForDomain(getOperationId());
 
         if (domainCtxt.nextMsg == null)
           domainCtxt.active = false;
@@ -766,6 +752,7 @@
         continue;
 
       // skip the excluded domains
+      Set<String> excludedBaseDNs = startECLSessionMsg.getExcludedBaseDNs();
       if (excludedBaseDNs.contains(domain.getBaseDN().toNormalizedString()))
       {
         // this is an excluded domain
@@ -786,7 +773,7 @@
       newDomainCtxt.domainLatestTrimDate = domain.getLatestDomainTrimDate();
 
       // Assign the start state for the domain
-      if (isPersistent == PERSISTENT_CHANGES_ONLY)
+      if (startECLSessionMsg.getPersistent() == PERSISTENT_CHANGES_ONLY)
       {
         newDomainCtxt.startState = latestState;
         startStatesFromProvidedCookie.remove(domain.getBaseDN());
@@ -999,9 +986,9 @@
     if (this.serverId != 0)
     {
       return eclServer + serverId + " " + serverURL + " "
-          + getBaseDNString() + " " + operationId;
+          + getBaseDNString() + " " + getOperationId();
     }
-    return eclServer + getClass().getCanonicalName() + " " + operationId;
+    return eclServer + getClass().getCanonicalName() + " " + getOperationId();
   }
 
   /**
@@ -1032,10 +1019,8 @@
   private void initialize(StartECLSessionMsg startECLSessionMsg)
       throws DirectoryException
   {
-    this.operationId = startECLSessionMsg.getOperationId();
+    this.startECLSessionMsg = startECLSessionMsg;
 
-    isPersistent  = startECLSessionMsg.isPersistent();
-    lastChangeNumber = startECLSessionMsg.getLastChangeNumber();
     searchPhase   = INIT_PHASE;
     final String cookie = startECLSessionMsg.getCrossDomainServerState();
     try
@@ -1049,9 +1034,6 @@
           ERR_INVALID_COOKIE_SYNTAX.get(cookie));
     }
 
-    excludedBaseDNs = startECLSessionMsg.getExcludedBaseDNs();
-    refreshEligibleCSN();
-
     initializeChangelogSearch(startECLSessionMsg);
 
     if (session != null)
@@ -1081,7 +1063,7 @@
       // TODO:ECL Potential race condition if writer not yet resumed here
     }
 
-    if (isPersistent == PERSISTENT_CHANGES_ONLY)
+    if (startECLSessionMsg.getPersistent() == PERSISTENT_CHANGES_ONLY)
     {
       closeInitPhase();
     }
@@ -1089,7 +1071,7 @@
     registerIntoDomain();
 
     if (debugEnabled())
-      TRACER.debugInfo(getClass().getCanonicalName() + " " + operationId
+      TRACER.debugInfo(getClass().getCanonicalName() + " " + getOperationId()
           + " initialized: " + " " + dumpState() + " " + " "
           + domaimCtxtsToString(""));
   }
@@ -1097,12 +1079,13 @@
   private void initializeChangelogSearch(StartECLSessionMsg msg)
       throws DirectoryException
   {
-    short requestType = msg.getECLRequestType();
-    if (requestType == REQUEST_TYPE_FROM_COOKIE)
+    refreshEligibleCSN();
+
+    if (msg.getECLRequestType() == REQUEST_TYPE_FROM_COOKIE)
     {
       initializeCLSearchFromCookie(msg.getCrossDomainServerState());
     }
-    else if (requestType == REQUEST_TYPE_FROM_CHANGE_NUMBER)
+    else if (msg.getECLRequestType() == REQUEST_TYPE_FROM_CHANGE_NUMBER)
     {
       initializeCLSearchFromChangeNumber(msg.getFirstChangeNumber());
     }
@@ -1240,7 +1223,7 @@
         }
         if (oldestContext.active)
         {
-          oldestContext.computeNextEligibleMessageForDomain(operationId);
+          oldestContext.computeNextEligibleMessageForDomain(getOperationId());
         }
         oldestChange = change;
       }
@@ -1253,7 +1236,7 @@
                   + "looking for the generalized oldest change"));
 
         for (DomainContext domainCtxt : domainCtxts) {
-          domainCtxt.computeNextEligibleMessageForDomain(operationId);
+          domainCtxt.computeNextEligibleMessageForDomain(getOperationId());
         }
 
         final DomainContext oldestContext = findDomainCtxtWithOldestChange();
@@ -1292,6 +1275,7 @@
 
   private boolean isBeyondLastRequestedChangeNumber(final ECLUpdateMsg change)
   {
+    final long lastChangeNumber = startECLSessionMsg.getLastChangeNumber();
     return draftCompat
         && 0 < lastChangeNumber
         && lastChangeNumber < change.getChangeNumber();
@@ -1431,7 +1415,7 @@
     // go to persistent phase if one
     for (DomainContext domainCtxt : domainCtxts) domainCtxt.active = true;
 
-    if (this.isPersistent != NON_PERSISTENT)
+    if (startECLSessionMsg.getPersistent() != NON_PERSISTENT)
     {
       // INIT_PHASE is done AND search is persistent => goto PERSISTENT_PHASE
       searchPhase = PERSISTENT_PHASE;
@@ -1488,23 +1472,27 @@
    */
   public String getOperationId()
   {
-    return operationId;
+    return startECLSessionMsg.getOperationId();
   }
 
   /**
-   * Getter for the persistent property of the current search.
-   * @return Whether the current search is persistent or not.
+   * Returns whether the current search is a persistent search .
+   *
+   * @return true if the current search is a persistent search, false otherwise
    */
-  public short isPersistent() {
-    return this.isPersistent;
+  boolean isNonPersistent()
+  {
+    return startECLSessionMsg.getPersistent() == NON_PERSISTENT;
   }
 
   /**
-   * Getter for the current search phase (INIT or PERSISTENT).
-   * @return Whether the current search is persistent or not.
+   * Returns whether the initialization phase has completed.
+   *
+   * @return true the initialization phase has completed, false otherwise
    */
-  public int getSearchPhase() {
-    return this.searchPhase;
+  boolean isInitPhaseDone()
+  {
+    return this.searchPhase != INIT_PHASE;
   }
 
   /**
@@ -1512,6 +1500,7 @@
    */
   private void refreshEligibleCSN()
   {
+    Set<String> excludedBaseDNs = startECLSessionMsg.getExcludedBaseDNs();
     eligibleCSN = replicationServer.getEligibleCSN(excludedBaseDNs);
   }
 
diff --git a/opends/src/server/org/opends/server/replication/server/ECLServerWriter.java b/opends/src/server/org/opends/server/replication/server/ECLServerWriter.java
index eca578e..97974ca 100644
--- a/opends/src/server/org/opends/server/replication/server/ECLServerWriter.java
+++ b/opends/src/server/org/opends/server/replication/server/ECLServerWriter.java
@@ -35,7 +35,6 @@
 import org.opends.server.replication.protocol.DoneMsg;
 import org.opends.server.replication.protocol.ECLUpdateMsg;
 import org.opends.server.replication.protocol.Session;
-import org.opends.server.replication.protocol.StartECLSessionMsg;
 import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.Entry;
@@ -209,8 +208,7 @@
 
       if (update == null)
       {
-        if (session != null
-            && handler.getSearchPhase() != ECLServerHandler.INIT_PHASE)
+        if (session != null && handler.isInitPhaseDone())
         {
           // session is null in pusherOnly mode
           // Done is used to end phase 1
@@ -218,7 +216,7 @@
               handler.getReplicationServerId(), handler.getServerId()));
         }
 
-        if (handler.isPersistent() == StartECLSessionMsg.NON_PERSISTENT)
+        if (handler.isNonPersistent())
         { // publishing is normally stopped here...
           break;
         }
diff --git a/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java b/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java
index e71bd28..919b038 100644
--- a/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java
@@ -55,6 +55,10 @@
 import static org.opends.server.config.ConfigConstants.*;
 import static org.opends.server.loggers.ErrorLogger.*;
 import static org.opends.server.loggers.debug.DebugLogger.*;
+import static org.opends.server.replication.protocol.StartECLSessionMsg
+.ECLRequestType.*;
+import static org.opends.server.replication.protocol.StartECLSessionMsg
+.Persistent.*;
 import static org.opends.server.util.LDIFWriter.*;
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.*;
@@ -205,8 +209,7 @@
 
       // Set default behavior as "from change number".
       // "from cookie" is set only when cookie is provided.
-      startECLSessionMsg.setECLRequestType(
-          StartECLSessionMsg.REQUEST_TYPE_FROM_CHANGE_NUMBER);
+      startECLSessionMsg.setECLRequestType(REQUEST_TYPE_FROM_CHANGE_NUMBER);
 
       // Set a string operationId that will help correlate any error message
       // logged for this operation with the 'real' client operation.
@@ -397,8 +400,7 @@
           returnECLControl = true;
           if (cookie != null)
           {
-            startECLSessionMsg.setECLRequestType(
-                StartECLSessionMsg.REQUEST_TYPE_FROM_COOKIE);
+            startECLSessionMsg.setECLRequestType(REQUEST_TYPE_FROM_COOKIE);
             startECLSessionMsg.setCrossDomainServerState(cookie.toString());
           }
         }
@@ -523,11 +525,9 @@
           // If we're only interested in changes, then we don't actually want
           // to process the search now.
           if (psearchControl.getChangesOnly())
-            startECLSessionMsg.setPersistent(
-                StartECLSessionMsg.PERSISTENT_CHANGES_ONLY);
+            startECLSessionMsg.setPersistent(PERSISTENT_CHANGES_ONLY);
           else
-            startECLSessionMsg.setPersistent(
-                StartECLSessionMsg.PERSISTENT);
+            startECLSessionMsg.setPersistent(PERSISTENT);
         }
         else if (OID_LDAP_SUBENTRIES.equals(oid))
         {
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/protocol/SynchronizationMsgTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/protocol/SynchronizationMsgTest.java
index f54db34..135ef39 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/protocol/SynchronizationMsgTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/protocol/SynchronizationMsgTest.java
@@ -36,6 +36,8 @@
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.replication.ReplicationTestCase;
 import org.opends.server.replication.common.*;
+import org.opends.server.replication.protocol.StartECLSessionMsg.ECLRequestType;
+import org.opends.server.replication.protocol.StartECLSessionMsg.Persistent;
 import org.opends.server.types.*;
 import org.opends.server.util.TimeThread;
 import org.opends.server.workflowelement.localbackend.LocalBackendAddOperation;
@@ -850,8 +852,8 @@
     new WindowProbeMsg(msg.getBytes(getCurrentVersion()));
   }
 
-  @DataProvider(name="createTopologyData")
-  public Object [][] createTopologyData() throws Exception
+  @DataProvider
+  public Object[][] createTopologyData() throws Exception
   {
     List<String> urls1 = newList(
         "ldap://ldap.iplanet.com/" + TEST_ROOT_DN_STRING + "??sub?(sn=Jensen)",
@@ -892,23 +894,23 @@
     List<RSInfo> rsList1 = newList(rsInfo1);
     List<RSInfo> rsList2 = newList(rsInfo1, rsInfo2, rsInfo3, rsInfo4);
 
-    return new Object [][] {
-      {dsList1, rsList1, a1},
-      {dsList2, rsList2, a2},
-      {dsList3, rsList1, a3},
-      {dsList3, null, null},
-      {null, rsList1, a1},
-      {null, null, a2},
-      {dsList4, rsList2, a3}
+    return new Object[][] {
+      {dsList1, rsList1},
+      {dsList2, rsList2},
+      {dsList3, rsList1},
+      {dsList3, null},
+      {null, rsList1},
+      {null, null},
+      {dsList4, rsList2}
     };
   }
 
   /**
    * Test TopologyMsg encoding and decoding.
    */
-  @Test(enabled=true,dataProvider = "createTopologyData")
-  public void topologyMsgTest(List<DSInfo> dsList, List<RSInfo> rsList, Set<String> attrs)
-    throws Exception
+  @Test(enabled = true, dataProvider = "createTopologyData")
+  public void topologyMsgTest(List<DSInfo> dsList, List<RSInfo> rsList)
+      throws Exception
   {
     TopologyMsg msg = new TopologyMsg(dsList, rsList);
     TopologyMsg newMsg = new TopologyMsg(msg.getBytes(getCurrentVersion()),
@@ -1287,10 +1289,10 @@
     StartECLSessionMsg msg = new StartECLSessionMsg();
     msg.setCSN(csn);
     msg.setCrossDomainServerState("fakegenstate");
-    msg.setPersistent(StartECLSessionMsg.PERSISTENT);
+    msg.setPersistent(Persistent.PERSISTENT);
     msg.setFirstChangeNumber(13);
     msg.setLastChangeNumber(14);
-    msg.setECLRequestType((short) 3);
+    msg.setECLRequestType(ECLRequestType.REQUEST_TYPE_EQUALS_REPL_CHANGE_NUMBER);
     msg.setOperationId("fakeopid");
     String dn1 = "cn=admin data";
     String dn2 = "cn=config";
@@ -1300,7 +1302,7 @@
     StartECLSessionMsg newMsg = new StartECLSessionMsg(msg.getBytes(getCurrentVersion()));
     // test equality between the two copies
     assertEquals(msg.getCSN(), newMsg.getCSN());
-    assertEquals(msg.isPersistent(), newMsg.isPersistent());
+    assertEquals(msg.getPersistent(), newMsg.getPersistent());
     assertEquals(msg.getFirstChangeNumber(), newMsg.getFirstChangeNumber());
     assertEquals(msg.getECLRequestType(), newMsg.getECLRequestType());
     assertEquals(msg.getLastChangeNumber(), newMsg.getLastChangeNumber());

--
Gitblit v1.10.0