From 2439f5121bd2989daae452410ea14b61fc0e0775 Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Fri, 25 Jun 2010 10:30:42 +0000
Subject: [PATCH] Fixes an issue when deleting a password policy
---
opends/tests/unit-tests-testng/src/server/org/opends/server/api/DITCacheMapTestCase.java | 78 +++++++++++++++++++++++++++++++++++++++
opends/src/server/org/opends/server/api/DITCacheMap.java | 37 +++++++++++-------
2 files changed, 101 insertions(+), 14 deletions(-)
diff --git a/opends/src/server/org/opends/server/api/DITCacheMap.java b/opends/src/server/org/opends/server/api/DITCacheMap.java
index 6f2d335..543cfab 100644
--- a/opends/src/server/org/opends/server/api/DITCacheMap.java
+++ b/opends/src/server/org/opends/server/api/DITCacheMap.java
@@ -116,7 +116,7 @@
private Map<DN,Node<T>> ditCacheMap;
/**
- * Default contructor.
+ * Default constructor.
*/
public DITCacheMap()
{
@@ -124,7 +124,7 @@
}
/**
- * Contructs a new DITCacheMap from a given Map.
+ * Constructs a new DITCacheMap from a given Map.
* @param m existing Map to construct new
* DITCacheMap from.
*/
@@ -683,6 +683,13 @@
{
if (rootNode != null)
{
+ if (node == rootNode)
+ {
+ if (rootNode.element != null)
+ {
+ return true;
+ }
+ }
while (node != null)
{
if (node.element != null)
@@ -695,13 +702,10 @@
}
else
{
- if (node != rootNode)
+ while ((node.next == null) &&
+ (node.parent != rootNode))
{
- while ((node.next == null) &&
- (node.parent != rootNode))
- {
- node = node.parent;
- }
+ node = node.parent;
}
node = node.next;
}
@@ -719,6 +723,14 @@
if (rootNode != null)
{
+ if (node == rootNode)
+ {
+ node = rootNode.child;
+ if (rootNode.element != null)
+ {
+ return rootNode.element;
+ }
+ }
while (node != null)
{
if (node.element != null)
@@ -735,13 +747,10 @@
}
else
{
- if (node != rootNode)
+ while ((node.next == null) &&
+ (node.parent != rootNode))
{
- while ((node.next == null) &&
- (node.parent != rootNode))
- {
- node = node.parent;
- }
+ node = node.parent;
}
node = node.next;
}
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/api/DITCacheMapTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/api/DITCacheMapTestCase.java
index 75c8d50..74832b6 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/api/DITCacheMapTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/api/DITCacheMapTestCase.java
@@ -292,6 +292,21 @@
assertFalse(subtreeSet.isEmpty());
assertEquals(subtreeSet.size(), 1);
assertTrue(subtreeSet.contains(dn0String));
+
+ subtreeSet = ditMap.getSubtree(dn1);
+ assertFalse(subtreeSet.isEmpty());
+ assertEquals(subtreeSet.size(), 1);
+ assertTrue(subtreeSet.contains(dn1String));
+
+ subtreeSet = ditMap.getSubtree(dn2);
+ assertFalse(subtreeSet.isEmpty());
+ assertEquals(subtreeSet.size(), 1);
+ assertTrue(subtreeSet.contains(dn2String));
+
+ subtreeSet = ditMap.getSubtree(dn3);
+ assertFalse(subtreeSet.isEmpty());
+ assertEquals(subtreeSet.size(), 1);
+ assertTrue(subtreeSet.contains(dn3String));
}
@Test()
@@ -492,5 +507,68 @@
assertTrue(ditMap.containsKey(dn7));
assertTrue(ditMap.containsKey(dn8));
assertTrue(ditMap.containsKey(dn9));
+
+ clearTestMap();
+
+ putAllAndVerify();
+
+ removeSet.clear();
+ assertTrue(ditMap.removeSubtree(dn1,
+ removeSet));
+ assertFalse(removeSet.isEmpty());
+ assertEquals(removeSet.size(), 1);
+ assertTrue(removeSet.contains(dn1String));
+ assertEquals(ditMap.size(), 9);
+ assertTrue(ditMap.containsKey(dn0));
+ assertTrue(ditMap.containsKey(dn2));
+ assertTrue(ditMap.containsKey(dn3));
+ assertTrue(ditMap.containsKey(dn4));
+ assertTrue(ditMap.containsKey(dn5));
+ assertTrue(ditMap.containsKey(dn6));
+ assertTrue(ditMap.containsKey(dn7));
+ assertTrue(ditMap.containsKey(dn8));
+ assertTrue(ditMap.containsKey(dn9));
+
+ clearTestMap();
+
+ putAllAndVerify();
+
+ removeSet.clear();
+ assertTrue(ditMap.removeSubtree(dn2,
+ removeSet));
+ assertFalse(removeSet.isEmpty());
+ assertEquals(removeSet.size(), 1);
+ assertTrue(removeSet.contains(dn2String));
+ assertEquals(ditMap.size(), 9);
+ assertTrue(ditMap.containsKey(dn0));
+ assertTrue(ditMap.containsKey(dn1));
+ assertTrue(ditMap.containsKey(dn3));
+ assertTrue(ditMap.containsKey(dn4));
+ assertTrue(ditMap.containsKey(dn5));
+ assertTrue(ditMap.containsKey(dn6));
+ assertTrue(ditMap.containsKey(dn7));
+ assertTrue(ditMap.containsKey(dn8));
+ assertTrue(ditMap.containsKey(dn9));
+
+ clearTestMap();
+
+ putAllAndVerify();
+
+ removeSet.clear();
+ assertTrue(ditMap.removeSubtree(dn3,
+ removeSet));
+ assertFalse(removeSet.isEmpty());
+ assertEquals(removeSet.size(), 1);
+ assertTrue(removeSet.contains(dn3String));
+ assertEquals(ditMap.size(), 9);
+ assertTrue(ditMap.containsKey(dn0));
+ assertTrue(ditMap.containsKey(dn1));
+ assertTrue(ditMap.containsKey(dn2));
+ assertTrue(ditMap.containsKey(dn4));
+ assertTrue(ditMap.containsKey(dn5));
+ assertTrue(ditMap.containsKey(dn6));
+ assertTrue(ditMap.containsKey(dn7));
+ assertTrue(ditMap.containsKey(dn8));
+ assertTrue(ditMap.containsKey(dn9));
}
}
--
Gitblit v1.10.0