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