From 177bf7e2e32a9ecdf3efe3e395cc27249830e6e3 Mon Sep 17 00:00:00 2001
From: Violette Roche-Montane <violette.roche-montane@forgerock.com>
Date: Wed, 19 Mar 2014 08:29:16 +0000
Subject: [PATCH] Checkpoint OPENDJ-1343 Migrate dsconfig - Added deleteSubtree as the 'subtree delete' control (1.2.840.113556.1.4.805) is not supported by the config backend. [Thanks Matt!]
---
opendj-config/src/main/java/org/forgerock/opendj/config/client/ldap/LDAPDriver.java | 16 +++++++++++++++-
1 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/client/ldap/LDAPDriver.java b/opendj-config/src/main/java/org/forgerock/opendj/config/client/ldap/LDAPDriver.java
index 26bd074..52e6bb8 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/client/ldap/LDAPDriver.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/client/ldap/LDAPDriver.java
@@ -405,7 +405,7 @@
// Delete the entry and any subordinate entries.
DN dn = DNBuilder.create(path, profile);
try {
- connection.deleteSubtree(dn.toString());
+ deleteSubtree(dn);
} catch (ErrorResultException e) {
if (e.getResult().getResultCode() == ResultCode.UNWILLING_TO_PERFORM) {
AbstractManagedObjectDefinition<?, ?> d = path.getManagedObjectDefinition();
@@ -557,6 +557,20 @@
return d.resolveManagedObjectDefinition(resolver);
}
+ /*
+ * Delete a subtree of entries. We cannot use the subtree delete control because it is not supported by the config
+ * backend.
+ */
+ private void deleteSubtree(DN dn) throws ErrorResultException {
+ // Delete the children first.
+ for (DN child : listEntries(dn, Filter.objectClassPresent())) {
+ deleteSubtree(child);
+ }
+
+ // Delete the named entry.
+ connection.delete(dn.toString());
+ }
+
private Collection<DN> listEntries(DN dn, Filter filter) throws ErrorResultException {
List<DN> names = new LinkedList<DN>();
ConnectionEntryReader reader =
--
Gitblit v1.10.0