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/task/ModifyObjectClassTask.java | 20 ++++++++++++++++----
1 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java b/opends/src/guitools/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java
index 3a46366..4541963 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/task/ModifyObjectClassTask.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2009 Sun Microsystems, Inc.
+ * Copyright 2009-2010 Sun Microsystems, Inc.
*/
package org.opends.guitools.controlpanel.task;
@@ -164,11 +164,12 @@
private ObjectClass getObjectClassToAdd(ObjectClass ocToDelete)
{
ObjectClass ocToAdd;
+ Set<ObjectClass> currentSups = ocToDelete.getSuperiorClasses();
if (ocToDelete.equals(oldObjectClass))
{
ocToAdd = newObjectClass;
}
- else if (oldObjectClass.equals(ocToDelete.getSuperiorClass()))
+ else if (currentSups.contains(oldObjectClass))
{
ArrayList<String> allNames = new ArrayList<String>();
for (String str : ocToDelete.getNormalizedNames())
@@ -177,13 +178,24 @@
}
Map<String, List<String>> extraProperties =
DeleteSchemaElementsTask.cloneExtraProperties(ocToDelete);
-
+ Set<ObjectClass> newSups = new LinkedHashSet<ObjectClass>();
+ for(ObjectClass oc: currentSups)
+ {
+ if(oc.equals(oldObjectClass))
+ {
+ newSups.add(newObjectClass);
+ }
+ else
+ {
+ newSups.add(oc);
+ }
+ }
ocToAdd = new ObjectClass("",
ocToDelete.getPrimaryName(),
allNames,
ocToDelete.getOID(),
ocToDelete.getDescription(),
- newObjectClass,
+ newSups,
ocToDelete.getRequiredAttributes(),
ocToDelete.getOptionalAttributes(),
ocToDelete.getObjectClassType(),
--
Gitblit v1.10.0