From 0b75361593e78cb6a83d7f763080b36a60e3eb79 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 07 Mar 2016 15:13:46 +0000
Subject: [PATCH] OPENDJ-1342 Migrate AVA, RDN, and DN classes: Moved DN2ID.isChild() to DNKeyFormat

---
 opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/DN2IDTest.java   |   14 +++---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DnKeyFormat.java |   38 +++++++++++++++++-
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VerifyJob.java   |    2 
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2ID.java       |   33 ----------------
 4 files changed, 44 insertions(+), 43 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2ID.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2ID.java
index b2d3afe..22e45d3 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2ID.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DN2ID.java
@@ -192,37 +192,6 @@
     }
   }
 
-  /**
-   * Check if two DN have a parent-child relationship.
-   *
-   * @param parent
-   *          The potential parent
-   * @param child
-   *          The potential child of parent
-   * @return true if child is a direct children of parent, false otherwise.
-   */
-  static boolean isChild(ByteSequence parent, ByteSequence child)
-  {
-    if (!child.startsWith(parent))
-    {
-      return false;
-    }
-    // Immediate children should only have one RDN separator past the parent length
-    int nbSeparator = 0;
-    for (int i = parent.length() ; i < child.length(); i++)
-    {
-      if (child.byteAt(i) == DnKeyFormat.NORMALIZED_RDN_SEPARATOR)
-      {
-        nbSeparator++;
-        if (nbSeparator > 1)
-        {
-          return false;
-        }
-      }
-    }
-    return nbSeparator == 1;
-  }
-
   @Override
   public String keyToString(ByteString key)
   {
@@ -378,7 +347,7 @@
     private void popCompleteParents(ByteString dn)
     {
       ParentInfo<V> currentParent;
-      while ((currentParent = parentsInfoStack.peek()) != null && !isChild(currentParent.parentDN, dn))
+      while ((currentParent = parentsInfoStack.peek()) != null && !DnKeyFormat.isChild(currentParent.parentDN, dn))
       {
         visitor.endParent(parentsInfoStack.pop().visitorData);
       }
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DnKeyFormat.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DnKeyFormat.java
index 25cfb62..ee576b5 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DnKeyFormat.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/DnKeyFormat.java
@@ -27,12 +27,13 @@
   /** The format version used by this class to encode and decode a ByteString. */
   static final byte FORMAT_VERSION = 0x01;
 
+  // The following fields have been copied from the DN class in the SDK
   /** RDN separator for normalized byte string of a DN. */
-  public static final byte NORMALIZED_RDN_SEPARATOR = 0x00;
+  private static final byte NORMALIZED_RDN_SEPARATOR = 0x00;
   /** AVA separator for normalized byte string of a DN. */
-  static final byte NORMALIZED_AVA_SEPARATOR = 0x01;
+  private static final byte NORMALIZED_AVA_SEPARATOR = 0x01;
   /** Escape byte for normalized byte string of a DN. */
-  static final byte NORMALIZED_ESC_BYTE = 0x02;
+  private static final byte NORMALIZED_ESC_BYTE = 0x02;
 
   /**
    * Find the length of bytes that represents the superior DN of the given DN
@@ -107,4 +108,35 @@
     afterKey.appendByte(NORMALIZED_AVA_SEPARATOR);
     return afterKey;
   }
+
+  /**
+   * Check if two DN have a parent-child relationship.
+   *
+   * @param parent
+   *          The potential parent
+   * @param child
+   *          The potential child of parent
+   * @return true if child is a direct children of parent, false otherwise.
+   */
+  static boolean isChild(ByteSequence parent, ByteSequence child)
+  {
+    if (!child.startsWith(parent))
+    {
+      return false;
+    }
+    // Immediate children should only have one RDN separator past the parent length
+    int nbSeparator = 0;
+    for (int i = parent.length() ; i < child.length(); i++)
+    {
+      if (child.byteAt(i) == NORMALIZED_RDN_SEPARATOR)
+      {
+        nbSeparator++;
+        if (nbSeparator > 1)
+        {
+          return false;
+        }
+      }
+    }
+    return nbSeparator == 1;
+  }
 }
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VerifyJob.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VerifyJob.java
index 85c9a36..f9b7be8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VerifyJob.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/VerifyJob.java
@@ -496,7 +496,7 @@
       final ByteString key, final EntryID entryID)
   {
     ChildrenCount currentParent = childrenCounters.peekLast();
-    while (currentParent != null && !DN2ID.isChild(currentParent.baseDN, key))
+    while (currentParent != null && !DnKeyFormat.isChild(currentParent.baseDN, key))
     {
       // This subtree is fully processed, pop the counter of the parent DN from the stack and verify it's value
       verifyID2ChildrenCount(txn, childrenCounters.removeLast());
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/DN2IDTest.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/DN2IDTest.java
index aca33f8..5dd42c0 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/DN2IDTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/DN2IDTest.java
@@ -150,20 +150,20 @@
           cursor.next();
           final ByteString parentDN = cursor.getKey();
           cursor.next();
-          assertThat(DN2ID.isChild(rootDN, parentDN)).isTrue();
+          assertThat(DnKeyFormat.isChild(rootDN, parentDN)).isTrue();
 
           final ByteString childDN = cursor.getKey();
-          assertThat(DN2ID.isChild(parentDN, childDN)).isTrue();
+          assertThat(DnKeyFormat.isChild(parentDN, childDN)).isTrue();
 
           cursor.next();
           final ByteString otherChildDN = cursor.getKey();
-          assertThat(DN2ID.isChild(parentDN, otherChildDN)).isTrue();
-          assertThat(DN2ID.isChild(childDN, otherChildDN)).isFalse();
+          assertThat(DnKeyFormat.isChild(parentDN, otherChildDN)).isTrue();
+          assertThat(DnKeyFormat.isChild(childDN, otherChildDN)).isFalse();
 
           final ByteString lastChildDN = cursor.getKey();
-          assertThat(DN2ID.isChild(parentDN, lastChildDN)).isTrue();
-          assertThat(DN2ID.isChild(otherChildDN, lastChildDN)).isFalse();
-          assertThat(DN2ID.isChild(childDN, lastChildDN)).isFalse();
+          assertThat(DnKeyFormat.isChild(parentDN, lastChildDN)).isTrue();
+          assertThat(DnKeyFormat.isChild(otherChildDN, lastChildDN)).isFalse();
+          assertThat(DnKeyFormat.isChild(childDN, lastChildDN)).isFalse();
         }
         return null;
       }

--
Gitblit v1.10.0