From 99b80cd414fd73af73dfa07be202fd32e9bc498d Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Wed, 25 Nov 2015 12:45:54 +0000
Subject: [PATCH] OPENDJ-2404: add back support for modify DN operations which just change case
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java | 5 ++++-
opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/PluggableBackendImplTestCase.java | 18 ++++++++++++++++++
2 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
index 895b0ed..d67bf45 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
@@ -2023,7 +2023,10 @@
getMatchedDN(txn, newSuperiorDN),
null);
}
- if (dn2id.get(txn, newTargetDN) != null)
+
+ // Check that an entry with the new name does not already exist, but take care to handle the case where
+ // the user is renaming the entry with an equivalent name, e.g. "cn=matt" to "cn=Matt".
+ if (!oldTargetDN.equals(newTargetDN) && dn2id.get(txn, newTargetDN) != null)
{
throw new DirectoryException(ResultCode.ENTRY_ALREADY_EXISTS,
ERR_MODIFYDN_ALREADY_EXISTS.get(newTargetDN));
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/PluggableBackendImplTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/PluggableBackendImplTestCase.java
index 7782617..3fe8ba3 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/PluggableBackendImplTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/PluggableBackendImplTestCase.java
@@ -692,6 +692,24 @@
assertEquals(dbEntry.getName(), prevDN, "Original entry has not been renamed");
}
+ @Test(description = "OPENDJ-2404")
+ public void testRenameEntrySameDNDifferentCase() throws Exception
+ {
+ DN prevDN = DN.valueOf("uid=user.0,ou=People," + testBaseDN);
+ DN newDN = DN.valueOf("uid=USER.0,ou=People," + testBaseDN);
+ Entry renameEntry = backend.getEntry(prevDN).duplicate(false);
+
+ renameEntry.setDN(newDN);
+ backend.renameEntry(prevDN, renameEntry, null);
+ Entry dbEntry = backend.getEntry(newDN);
+ assertEquals(dbEntry.getName().rdn().toString(), "uid=USER.0");
+
+ renameEntry.setDN(prevDN);
+ backend.renameEntry(newDN, renameEntry, null);
+ dbEntry = backend.getEntry(prevDN);
+ assertEquals(dbEntry.getName().rdn().toString(), "uid=user.0");
+ }
+
@Test
public void testDeleteEntry() throws Exception
{
--
Gitblit v1.10.0