From e736f929ae922d3351fae9bbd668f34925c39f0b Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Mon, 30 May 2016 10:43:12 +0000
Subject: [PATCH] OPENDJ-2987 Ensure top objectclass is added if missing for structural classes

---
 opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/ObjectClass.java |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/ObjectClass.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/ObjectClass.java
index 18c1c3d..221b2b8 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/ObjectClass.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/ObjectClass.java
@@ -16,6 +16,8 @@
  */
 package org.forgerock.opendj.ldap.schema;
 
+import static org.forgerock.opendj.ldap.schema.SchemaConstants.TOP_OBJECTCLASS_OID;
+
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
@@ -32,11 +34,9 @@
 
 import static java.util.Arrays.*;
 import static java.util.Collections.*;
-
 import static org.forgerock.opendj.ldap.schema.ObjectClassType.*;
 import static org.forgerock.opendj.ldap.schema.SchemaConstants.*;
 import static org.forgerock.opendj.ldap.schema.SchemaUtils.*;
-
 import static com.forgerock.opendj.ldap.CoreMessages.*;
 
 /**
@@ -939,10 +939,15 @@
 
                 superiorClasses.add(superiorClass);
             }
+        } else if (superiorClasses.isEmpty() && getObjectClassType() == ObjectClassType.STRUCTURAL) {
+            // default superior to top
+            superiorClasses = new HashSet<>(1);
+            superiorClasses.add(schema.getObjectClass(TOP_OBJECTCLASS_OID));
+            derivesTop = true;
         }
 
         if (!derivesTop) {
-            derivesTop = isDescendantOf(schema.getObjectClass("2.5.6.0"));
+            derivesTop = isDescendantOf(schema.getObjectClass(TOP_OBJECTCLASS_OID));
         }
 
         // Structural classes must have the "top" objectclass somewhere

--
Gitblit v1.10.0