opends/src/server/org/opends/server/util/LDIFReader.java
@@ -33,7 +33,7 @@ import org.opends.server.loggers.debug.DebugTracer; import static org.opends.server.loggers.ErrorLogger.logError; import static org.opends.messages.UtilityMessages.*; import static org.opends.server.util.StaticUtils.toLowerCase; import static org.opends.server.util.StaticUtils.*; import static org.opends.server.util.Validator.*; import java.io.BufferedReader; @@ -323,6 +323,9 @@ entriesRejected++; throw new LDIFException(message, lastEntryLineNumber, true); } //Add any superior objectclass(s) missing in an entries //objectclass map. addSuperiorObjectClasses(entry.getObjectClasses()); } opends/src/server/org/opends/server/util/StaticUtils.java
@@ -52,6 +52,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; @@ -4445,5 +4446,57 @@ } return (char) byteValue; } /** * Add all of the superior objectclasses to the specified objectclass * map if they don't already exist. Used by add and import-ldif to * add missing superior objectclasses to entries that don't have them. * * @param objectClasses A Map of objectclasses. */ public static void addSuperiorObjectClasses(Map<ObjectClass, String> objectClasses) { HashSet<ObjectClass> additionalClasses = null; for (ObjectClass oc : objectClasses.keySet()) { ObjectClass superiorClass = oc.getSuperiorClass(); if ((superiorClass != null) && (! objectClasses.containsKey(superiorClass))) { if (additionalClasses == null) { additionalClasses = new HashSet<ObjectClass>(); } additionalClasses.add(superiorClass); } } if (additionalClasses != null) { for (ObjectClass oc : additionalClasses) { addObjectClassChain(oc, objectClasses); } } } private static void addObjectClassChain(ObjectClass objectClass, Map<ObjectClass, String> objectClasses) { if (objectClasses != null){ if (! objectClasses.containsKey(objectClass)) { objectClasses.put(objectClass, objectClass.getNameOrOID()); } ObjectClass superiorClass = objectClass.getSuperiorClass(); if ((superiorClass != null) && (! objectClasses.containsKey(superiorClass))) { addObjectClassChain(superiorClass, objectClasses); } } } } opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java
@@ -442,33 +442,9 @@ break addProcessing; } // Check to make sure that all objectclasses have their superior classes // listed in the entry. If not, then add them. HashSet<ObjectClass> additionalClasses = null; for (ObjectClass oc : objectClasses.keySet()) { ObjectClass superiorClass = oc.getSuperiorClass(); if ((superiorClass != null) && (! objectClasses.containsKey(superiorClass))) { if (additionalClasses == null) { additionalClasses = new HashSet<ObjectClass>(); } additionalClasses.add(superiorClass); } } if (additionalClasses != null) { for (ObjectClass oc : additionalClasses) { addObjectClassChain(oc); } } //Add any superior objectclass(s) missing in an entries //objectclass map. addSuperiorObjectClasses(objectClasses); // Create an entry object to encapsulate the set of attributes and // objectclasses.