From 1ba9c4316ed7e368f8d0c32e71a6f2fde5669d77 Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Mon, 31 May 2010 12:48:19 +0000
Subject: [PATCH] Fix for issue #4536. Close JNDI enumerations to avoid unbinding and closing underlying LDAP connection. Fixes in all CLI and control panel.
---
opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java | 41 ++++++++++++++++++++++++-----------------
1 files changed, 24 insertions(+), 17 deletions(-)
diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
index 61f3ad0..a670029 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
@@ -649,20 +649,20 @@
}
boolean hasSuperior = false;
Set<ObjectClass> newSuperiors = new LinkedHashSet<ObjectClass>();
- for(ObjectClass sup : ocToDelete.getSuperiorClasses())
+ for (ObjectClass sup : ocToDelete.getSuperiorClasses())
{
boolean isFound = false;
- for(ObjectClass oc: providedOcsToDelete)
+ for (ObjectClass oc: providedOcsToDelete)
{
if(sup.equals(oc))
{
hasSuperior = true;
isFound = true;
- newSuperiors.add(getNewSuperior(oc));
+ newSuperiors.addAll(getNewSuperiors(oc));
break;
}
}
- if(!isFound)
+ if (!isFound)
{
//Use the same super if not found in the list.
newSuperiors.add(sup);
@@ -715,22 +715,29 @@
}
- private ObjectClass getNewSuperior(ObjectClass currentSup)
+ private Set<ObjectClass> getNewSuperiors(ObjectClass currentSup)
{
- if(currentSup.getSuperiorClasses() == null ||
- currentSup.getSuperiorClasses().isEmpty())
- {
- return currentSup;
- }
-
- if(providedOcsToDelete.contains(currentSup))
- {
- for(ObjectClass o : currentSup.getSuperiorClasses())
+ Set<ObjectClass> newSuperiors = new LinkedHashSet<ObjectClass>();
+ if (currentSup.getSuperiorClasses() == null ||
+ currentSup.getSuperiorClasses().isEmpty())
+ {
+ // Nothing to do
+ }
+ else
+ {
+ for (ObjectClass o : currentSup.getSuperiorClasses())
{
- return getNewSuperior(o);
+ if (providedOcsToDelete.contains(o))
+ {
+ newSuperiors.addAll(getNewSuperiors(o));
+ }
+ else
+ {
+ newSuperiors.add(o);
+ }
}
- }
- return null;
+ }
+ return newSuperiors;
}
--
Gitblit v1.10.0