From e66d460903009243d4aac4079d37006cf366fb4d Mon Sep 17 00:00:00 2001
From: mmarie <mmarie@localhost>
Date: Thu, 18 Dec 2008 09:35:55 +0000
Subject: [PATCH] issue 3640 : Refactor Replication code to make it more generic

---
 opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplInputStream.java |   17 ++++++++++++-----
 opendj-sdk/opends/src/server/org/opends/server/replication/protocol/EntryMsg.java       |    2 +-
 opendj-sdk/opends/src/server/org/opends/server/replication/common/ServerState.java      |   25 +++++++++++++++++++++++++
 3 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/common/ServerState.java b/opendj-sdk/opends/src/server/org/opends/server/replication/common/ServerState.java
index 559ae24..e6f1b7c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/common/ServerState.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/common/ServerState.java
@@ -172,6 +172,31 @@
   }
 
   /**
+   * Replace the Server State with another ServerState.
+   *
+   * @param serverState The ServerState.
+   *
+   * @return a boolean indicating if the update was meaningful.
+   */
+  public boolean reload(ServerState serverState) {
+    if (serverState == null) {
+      return false;
+    }
+
+    boolean result = false;
+
+    clear();
+    for (Short id : serverState) {
+      ChangeNumber maxChangeNumber = getMaxChangeNumber(id);
+      if (update(maxChangeNumber)) {
+        result = true;
+      }
+    }
+
+    return (result);
+  }
+
+  /**
    * return a Set of String usable as a textual representation of
    * a Server state.
    * format : time seqnum id
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/EntryMsg.java b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/EntryMsg.java
index c05e2ae..fb5c846 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/EntryMsg.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/protocol/EntryMsg.java
@@ -107,7 +107,7 @@
       pos += length +1;
 
       // entry
-      length = getNextLength(in, pos);
+      length = in.length - (pos + 1);
       this.entryByteArray = new byte[length];
       for (int i=0; i<length; i++)
       {
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplInputStream.java b/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplInputStream.java
index 7e0bd4b..e3c86d8 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplInputStream.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplInputStream.java
@@ -146,11 +146,18 @@
    *                       use by this input stream.
    */
   public int read()
-         throws IOException
+          throws IOException
   {
-    // This method is not supposed to be called to make an LDIF import
-    // for replication.
-    throw new IOException("Not implemented");
+    if (closed) {
+      return -1;
+    }
+
+    byte[] b = new byte[1];
+    
+    if (read(b, 0, 1) == 0) {
+      throw new IOException();
+    }
+
+    return ((int)b[0]);
   }
 }
-

--
Gitblit v1.10.0