From 5ec0cb08889c9f1a24fd4cc8b139dcdb942dd92a Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Fri, 14 Aug 2009 12:37:19 +0000
Subject: [PATCH] Support for External change log compatible with draft-good-ldap-changelog-04.txt , March 2003

---
 opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ECLUpdateMsg.java |   45 +++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ECLUpdateMsg.java b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ECLUpdateMsg.java
index 590d83d..2e1dc1d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ECLUpdateMsg.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/ECLUpdateMsg.java
@@ -45,18 +45,23 @@
   // The value of the cookie updated with the current change
   private MultiDomainServerState cookie;
 
+  // The changenumber as specified by draft-good-ldap-changelog.
+  private int draftChangeNumber;
+
   /**
    * Creates a new message.
    * @param update    The provided update.
    * @param cookie    The provided cookie value
    * @param serviceId The provided serviceId.
+   * @param draftChangeNumber The provided draft change number.
    */
   public ECLUpdateMsg(LDAPUpdateMsg update, MultiDomainServerState cookie,
-      String serviceId)
+      String serviceId, int draftChangeNumber)
   {
     this.cookie = cookie;
     this.serviceId = serviceId;
     this.updateMsg = update;
+    this.draftChangeNumber = draftChangeNumber;
   }
 
   /**
@@ -93,6 +98,12 @@
       this.serviceId = new String(in, pos, length, "UTF-8");
       pos += length + 1;
 
+      // Decode the draft changeNumber
+      length = getNextLength(in, pos);
+      this.draftChangeNumber = Integer.valueOf(
+          new String(in, pos, length, "UTF-8"));
+      pos += length + 1;
+
       // Decode the msg
       /* Read the mods : all the remaining bytes but the terminating 0 */
       length = in.length - pos - 1;
@@ -152,9 +163,10 @@
   public String toString()
   {
     return "ECLUpdateMsg:[" +
-    "updateMsg: " + updateMsg +
-    "cookie: " + cookie +
-    "serviceId: " + serviceId + "]";
+    " updateMsg: " + updateMsg +
+    " cookie: " + cookie +
+    " draftChangeNumber: " + draftChangeNumber +
+    " serviceId: " + serviceId + "]";
   }
 
   /**
@@ -165,10 +177,13 @@
   {
     byte[] byteCookie    = String.valueOf(cookie).getBytes("UTF-8");
     byte[] byteServiceId = String.valueOf(serviceId).getBytes("UTF-8");
+    byte[] byteDraftChangeNumber =
+      Integer.toString(draftChangeNumber).getBytes("UTF-8");
     byte[] byteUpdateMsg = updateMsg.getBytes();
 
     int length = 1 + byteCookie.length +
                  1 + byteServiceId.length +
+                 1 + byteDraftChangeNumber.length +
                  1 + byteUpdateMsg.length + 1;
 
     byte[] resultByteArray = new byte[length];
@@ -183,9 +198,31 @@
     // Encode serviceid
     pos = addByteArray(byteServiceId, resultByteArray, pos);
 
+    /* Put the draftChangeNumber */
+    pos = addByteArray(byteDraftChangeNumber, resultByteArray, pos);
+
     // Encode msg
     pos = addByteArray(byteUpdateMsg, resultByteArray, pos);
 
     return resultByteArray;
   }
+
+  /**
+   * Setter for the draftChangeNumber of this change.
+   * @param draftChangeNumber the provided draftChangeNumber for this change.
+   */
+  public void setDraftChangeNumber(int draftChangeNumber)
+  {
+    this.draftChangeNumber = draftChangeNumber;
+  }
+
+  /**
+   * Getter for the draftChangeNumber of this change.
+   * @return the draftChangeNumber of this change.
+   */
+  public int getDraftChangeNumber()
+  {
+    return this.draftChangeNumber;
+  }
+
 }

--
Gitblit v1.10.0