From d39b941258094921b72a9c22f8a87c01c8dbec8e Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 29 Apr 2014 12:40:47 +0000
Subject: [PATCH] Support suffixes containing space in the changelog state DB.

---
 opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java                             |    8 +++++---
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnvTest.java |    5 ++---
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
index 32b419e..e4d7283 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
@@ -252,12 +252,13 @@
 
         if (debugEnabled())
         {
-          debug("read (key, value)=(" + stringKey + ", " + stringData + ")");
+          debug("read (key, data)=(" + stringKey + ", " + stringData + ")");
         }
 
-        final String[] str = stringData.split(FIELD_SEPARATOR, 3);
-        if (str[0].equals(GENERATION_ID_TAG))
+        final String prefix = stringKey.split(FIELD_SEPARATOR)[0];
+        if (prefix.equals(GENERATION_ID_TAG))
         {
+          final String[] str = stringData.split(FIELD_SEPARATOR, 3);
           final long generationId = toLong(str[1]);
           final DN baseDN = DN.decode(str[2]);
           if (debugEnabled())
@@ -269,6 +270,7 @@
         }
         else
         {
+          final String[] str = stringData.split(FIELD_SEPARATOR, 2);
           final int serverId = toInt(str[0]);
           final DN baseDN = DN.decode(str[1]);
           if (debugEnabled())
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnvTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnvTest.java
index 1a13313..72fc472 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnvTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnvTest.java
@@ -52,7 +52,7 @@
 {
 
 	/**
-	 * Bypass heavyweight setup. 
+	 * Bypass heavyweight setup.
 	 */
 	private final class TestableReplicationDbEnv extends ReplicationDbEnv
 	{
@@ -93,8 +93,7 @@
 		return new Object[][] {
 			{ DN.decode("dc=example,dc=com"), 524157415, asList(42, 346) },
 			// test with a space in the baseDN (space is the field separator in the DB)
-			// FIXME does not work yet (gosh!!)
-			// { DN.decode("cn=admin data"), 524157415, asList(42, 346) },
+			{ DN.decode("cn=admin data"), 524157415, asList(42, 346) },
 	  };
 	}
 

--
Gitblit v1.10.0