From 85811b64468e9b7a876bd352a0299b904a53a3fb Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Mon, 31 May 2010 12:16:23 +0000
Subject: [PATCH] Fix for Issue #615. Add support for multiple object-class inheritance. Support added in the schema, core server and tools including Control-Panel
---
opends/src/guitools/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java | 30 ++++++++++++++++++++++++++----
1 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
index ad80e04..a1a7261 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
@@ -455,12 +455,11 @@
schema.getObjectClass(ocValue.getStructural().toLowerCase());
if (oc != null)
{
- ObjectClass parent = oc.getSuperiorClass();
- while (parent != null)
+ Set<String> names = getObjectClassSuperiorValues(oc);
+ for (String name : names)
{
sb.append("\n");
- sb.append(attrName+": "+parent.getNameOrOID());
- parent = parent.getSuperiorClass();
+ sb.append(attrName+": "+name);
}
}
}
@@ -713,4 +712,27 @@
}
return filteredValue;
}
+
+
+ /**
+ * Returns the list of superior object classes (to top) for a given object
+ * class.
+ * @param oc the object class.
+ * @return the set of superior object classes for a given object classes.
+ */
+ protected Set<String> getObjectClassSuperiorValues(
+ ObjectClass oc)
+ {
+ Set<String> names = new LinkedHashSet<String>();
+ Set<ObjectClass> parents = oc.getSuperiorClasses();
+ if (parents != null && !parents.isEmpty())
+ {
+ for (ObjectClass parent : parents)
+ {
+ names.add(parent.getNameOrOID());
+ names.addAll(getObjectClassSuperiorValues(parent));
+ }
+ }
+ return names;
+ }
}
--
Gitblit v1.10.0