opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
@@ -24,7 +24,6 @@ import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.forgerock.opendj.ldap.DN; @@ -573,16 +572,15 @@ private static boolean areObjectClassesEqual(Schema schema1, Schema schema2) { final Map<String, ObjectClass> ocs1 = schema1.getObjectClasses(); final Map<String, ObjectClass> ocs2 = schema2.getObjectClasses(); final Collection<ObjectClass> ocs1 = schema1.getObjectClasses(); final Collection<ObjectClass> ocs2 = schema2.getObjectClasses(); if (ocs1.size() != ocs2.size()) { return false; } for (String name : ocs1.keySet()) for (ObjectClass oc1 : ocs1) { ObjectClass oc1 = ocs1.get(name); ObjectClass oc2 = ocs2.get(name); ObjectClass oc2 = schema2.getObjectClass(oc1.getNameOrOID()); if (oc2 == null || !areObjectClassesEqual(oc1, oc2)) { return false; opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
@@ -638,7 +638,7 @@ ArrayList<ObjectClass> dependentClasses = new ArrayList<>(); for (AttributeType attr : attrsToDelete) { for (ObjectClass oc : schema.getObjectClasses().values()) for (ObjectClass oc : schema.getObjectClasses()) { if (oc.getRequiredAttributes().contains(attr) || oc.getOptionalAttributes().contains(attr)) @@ -691,7 +691,7 @@ ObjectClass objectClass, Schema schema) { LinkedHashSet<ObjectClass> children = new LinkedHashSet<>(); for (ObjectClass oc : schema.getObjectClasses().values()) for (ObjectClass oc : schema.getObjectClasses()) { if (oc.getSuperiorClasses().contains(objectClass)) { opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseSchemaPanel.java
@@ -665,7 +665,7 @@ Map<String, ConfigurationObjectClassTreeNode> hmConfigurationOcs = new HashMap<>(); Set<String> customOcNames = new TreeSet<>(lowerCaseComparator); Map<String, CustomObjectClassTreeNode> hmCustomOcs = new HashMap<>(); for (ObjectClass oc : lastSchema.getObjectClasses().values()) for (ObjectClass oc : lastSchema.getObjectClasses()) { if (mustAdd(oc)) { @@ -1279,7 +1279,7 @@ private boolean mustAddAnyObjectClassName(ObjectClass oc, String f) { for (ObjectClass o : lastSchema.getObjectClasses().values()) for (ObjectClass o : lastSchema.getObjectClasses()) { if (isDescendant(oc, o) && mustAddObjectClassName(o, f)) { @@ -1584,7 +1584,7 @@ // Analyze objectClasses for (ObjectClass objectClass : ocsToDelete) { for (ObjectClass o : schema.getObjectClasses().values()) for (ObjectClass o : schema.getObjectClasses()) { if (o.getSuperiorClasses().contains(objectClass)) { @@ -1608,7 +1608,7 @@ } childAttributes.removeAll(attrsToDelete); for (ObjectClass o : schema.getObjectClasses().values()) for (ObjectClass o : schema.getObjectClasses()) { if (o.getRequiredAttributes().contains(attribute)) { opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomAttributePanel.java
@@ -67,6 +67,7 @@ import org.forgerock.opendj.ldap.schema.AttributeType; import org.forgerock.opendj.ldap.schema.AttributeUsage; import org.forgerock.opendj.ldap.schema.MatchingRule; import org.forgerock.opendj.ldap.schema.ObjectClass; import org.forgerock.opendj.ldap.schema.SchemaBuilder; import org.forgerock.opendj.ldap.schema.Syntax; import org.opends.guitools.controlpanel.datamodel.ServerDescriptor; @@ -83,7 +84,6 @@ import org.opends.guitools.controlpanel.util.LowerCaseComparator; import org.opends.guitools.controlpanel.util.Utilities; import org.opends.server.schema.SomeSchemaElement; import org.forgerock.opendj.ldap.schema.ObjectClass; import org.opends.server.types.Schema; import org.opends.server.util.ServerConstants; import org.opends.server.util.StaticUtils; @@ -560,7 +560,7 @@ Comparator<String> lowerCaseComparator = new LowerCaseComparator(); SortedSet<String> requiredByOcs = new TreeSet<>(lowerCaseComparator); for (ObjectClass oc : schema.getObjectClasses().values()) for (ObjectClass oc : schema.getObjectClasses()) { if (oc.getRequiredAttributes().contains(attr)) { @@ -576,7 +576,7 @@ } SortedSet<String> optionalByOcs = new TreeSet<>(lowerCaseComparator); for (ObjectClass oc : schema.getObjectClasses().values()) for (ObjectClass oc : schema.getObjectClasses()) { if (oc.getOptionalAttributes().contains(attr)) { @@ -735,7 +735,7 @@ } } for (ObjectClass o : schema.getObjectClasses().values()) for (ObjectClass o : schema.getObjectClasses()) { if (o.getRequiredAttributes().contains(attribute)) { opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java
@@ -641,7 +641,7 @@ ArrayList<String> childClasses = new ArrayList<>(); if (schema != null) { for (ObjectClass o : schema.getObjectClasses().values()) for (ObjectClass o : schema.getObjectClasses()) { for (ObjectClass superior : o.getSuperiorClasses()) { opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ObjectClassEditorPanel.java
@@ -29,14 +29,14 @@ import javax.swing.JLabel; import javax.swing.SwingUtilities; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.opendj.ldap.schema.ObjectClass; import org.forgerock.opendj.ldap.schema.ObjectClassType; import org.opends.guitools.controlpanel.datamodel.ObjectClassValue; import org.opends.guitools.controlpanel.datamodel.SortableListModel; import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent; import org.opends.guitools.controlpanel.ui.components.AddRemovePanel; import org.opends.guitools.controlpanel.util.Utilities; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.opendj.ldap.schema.ObjectClass; import org.forgerock.opendj.ldap.schema.ObjectClassType; import org.opends.server.types.Schema; /** @@ -160,7 +160,7 @@ { final SortedSet<String> auxiliaryOcs = new TreeSet<>(); final SortedSet<String> structuralOcs = new TreeSet<>(); for (ObjectClass oc : schema.getObjectClasses().values()) for (ObjectClass oc : schema.getObjectClasses()) { if (oc.getObjectClassType() == ObjectClassType.AUXILIARY) { opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SelectObjectClassesPanel.java
@@ -28,13 +28,13 @@ import javax.swing.JEditorPane; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.opendj.ldap.schema.ObjectClass; import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent; import org.opends.guitools.controlpanel.ui.components.AddRemovePanel; import org.opends.guitools.controlpanel.ui.renderer. SchemaElementComboBoxCellRenderer; import org.opends.guitools.controlpanel.util.Utilities; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.opendj.ldap.schema.ObjectClass; import org.opends.server.types.Schema; /** @@ -219,9 +219,8 @@ private void updateWithSchema(Schema schema) { ArrayList<ObjectClass> allOcs = new ArrayList<>(); for (String key : schema.getObjectClasses().keySet()) for (ObjectClass oc : schema.getObjectClasses()) { ObjectClass oc = schema.getObjectClass(key); if (!toExclude.contains(oc)) { allOcs.add(oc); opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/StandardAttributePanel.java
@@ -39,12 +39,12 @@ import org.forgerock.i18n.LocalizableMessageBuilder; import org.forgerock.opendj.ldap.schema.AttributeType; import org.forgerock.opendj.ldap.schema.MatchingRule; import org.forgerock.opendj.ldap.schema.ObjectClass; import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent; import org.opends.guitools.controlpanel.ui.components.TitlePanel; import org.opends.guitools.controlpanel.util.LowerCaseComparator; import org.opends.guitools.controlpanel.util.Utilities; import org.opends.server.schema.SomeSchemaElement; import org.forgerock.opendj.ldap.schema.ObjectClass; import org.opends.server.types.Schema; /** The panel that displays a standard attribute definition. */ @@ -278,7 +278,7 @@ Comparator<String> lowerCaseComparator = new LowerCaseComparator(); SortedSet<String> requiredByOcs = new TreeSet<>(lowerCaseComparator); for (ObjectClass oc : schema.getObjectClasses().values()) for (ObjectClass oc : schema.getObjectClasses()) { if (oc.getRequiredAttributes().contains(attr)) { @@ -294,7 +294,7 @@ } SortedSet<String> optionalByOcs = new TreeSet<>(lowerCaseComparator); for (ObjectClass oc : schema.getObjectClasses().values()) for (ObjectClass oc : schema.getObjectClasses()) { if (oc.getOptionalAttributes().contains(attr)) { opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/components/SuperiorObjectClassesEditor.java
@@ -40,6 +40,7 @@ import javax.swing.JLabel; import javax.swing.JPanel; import org.forgerock.opendj.ldap.schema.ObjectClass; import org.opends.guitools.controlpanel.event.SuperiorObjectClassesChangedEvent; import org.opends.guitools.controlpanel.event.SuperiorObjectClassesChangedListener; import org.opends.guitools.controlpanel.ui.GenericDialog; @@ -47,7 +48,6 @@ import org.opends.guitools.controlpanel.ui.renderer.SchemaElementComboBoxCellRenderer; import org.opends.guitools.controlpanel.util.LowerCaseComparator; import org.opends.guitools.controlpanel.util.Utilities; import org.forgerock.opendj.ldap.schema.ObjectClass; import org.opends.server.types.Schema; /** A panel that can be used to select one (or several) object classes. */ @@ -257,9 +257,8 @@ private void updateWithSchema(Schema schema) { HashMap<String, ObjectClass> objectClassNameMap = new HashMap<>(); for (String key : schema.getObjectClasses().keySet()) for (ObjectClass oc : schema.getObjectClasses()) { ObjectClass oc = schema.getObjectClass(key); if (!toExclude.contains(oc)) { objectClassNameMap.put(oc.getNameOrOID(), oc); opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
@@ -46,7 +46,6 @@ import java.util.Map; import java.util.Set; import java.util.TreeSet; import java.util.concurrent.ConcurrentHashMap; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.slf4j.LocalizedLogger; @@ -566,7 +565,7 @@ operationalAttrs, attributeTypesType, includeSchemaFile, AttributeTypeSyntax.isStripSyntaxMinimumUpperBound(), ignoreShowAllOption); buildSchemaAttribute(schema.getObjectClasses().values(), userAttrs, buildSchemaAttribute(schema.getObjectClasses(), userAttrs, operationalAttrs, objectClassesType, includeSchemaFile, false, ignoreShowAllOption); buildSchemaAttribute(schema.getMatchingRules(), userAttrs, @@ -1379,7 +1378,7 @@ // Make sure that the attribute type isn't used as a required or optional // attribute type in any objectclass. for (ObjectClass oc : schema.getObjectClasses().values()) for (ObjectClass oc : schema.getObjectClasses()) { if (oc.getDeclaredRequiredAttributes().contains(removeType) || oc.getDeclaredOptionalAttributes().contains(removeType)) @@ -1643,7 +1642,7 @@ // Make sure that the objectclass isn't used as the superior class for any // other objectclass. for (ObjectClass oc : schema.getObjectClasses().values()) for (ObjectClass oc : schema.getObjectClasses()) { for(ObjectClass superiorClass : oc.getSuperiorClasses()) { @@ -2693,7 +2692,7 @@ // same file are written before the subordinate classes. Set<ObjectClass> addedClasses = new HashSet<>(); values = new LinkedHashSet<>(); for (ObjectClass oc : schema.getObjectClasses().values()) for (ObjectClass oc : schema.getObjectClasses()) { if (schemaFile.equals(getSchemaFile(oc))) { @@ -3489,9 +3488,7 @@ // loop on all the object classes in the current schema and delete // them from the new schema if they are not in the imported schema entry. ConcurrentHashMap<String, ObjectClass> currentObjectClasses = newSchema.getObjectClasses(); for (ObjectClass removeClass : currentObjectClasses.values()) for (ObjectClass removeClass : newSchema.getObjectClasses()) { String schemaFile = getSchemaFile(removeClass); if (CONFIG_SCHEMA_ELEMENTS_FILE.equals(schemaFile)) opendj-server-legacy/src/main/java/org/opends/server/types/Schema.java
@@ -115,12 +115,6 @@ private Map<AttributeType, List<AttributeType>> subordinateTypes; /** * The set of objectclass definitions for this schema, mapped between the * lowercase names and OID for the definition and the objectclass itself. */ private ConcurrentHashMap<String,ObjectClass> objectClasses; /** * The set of DIT content rules for this schema, mapped between the structural * objectclass for the definition and the DIT content rule itself. */ @@ -199,7 +193,6 @@ { switchSchema(schemaNG); objectClasses = new ConcurrentHashMap<String,ObjectClass>(); ditContentRules = new ConcurrentHashMap<ObjectClass,DITContentRule>(); ditStructureRulesByID = new ConcurrentHashMap<Integer,DITStructureRule>(); ditStructureRulesByNameForm = new ConcurrentHashMap<NameForm,DITStructureRule>(); @@ -660,9 +653,9 @@ * * @return The objectclass definitions for this schema. */ public ConcurrentHashMap<String,ObjectClass> getObjectClasses() public Collection<ObjectClass> getObjectClasses() { return objectClasses; return schemaNG.getObjectClasses(); } @@ -680,7 +673,7 @@ */ public boolean hasObjectClass(String lowerName) { return objectClasses.containsKey(lowerName); return getSchemaNG().hasObjectClass(lowerName); } @@ -698,7 +691,7 @@ */ public ObjectClass getObjectClass(String lowerName) { return objectClasses.get(lowerName); return getSchemaNG().getObjectClass(lowerName); } @@ -724,48 +717,22 @@ exclusiveLock.lock(); try { if (! overwriteExisting) SchemaBuilder builder = new SchemaBuilder(schemaNG); ObjectClass.Builder b = builder.buildObjectClass(objectClass); String schemaFile = getSchemaFileName(objectClass); if (schemaFile != null) { String oid = toLowerCase(objectClass.getOID()); if (objectClasses.containsKey(oid)) b.removeExtraProperty(SCHEMA_PROPERTY_FILENAME).extraProperties(SCHEMA_PROPERTY_FILENAME, schemaFile); } if (overwriteExisting) { ObjectClass conflictingClass = objectClasses.get(oid); LocalizableMessage message = ERR_SCHEMA_CONFLICTING_OBJECTCLASS_OID. get(objectClass.getNameOrOID(), oid, conflictingClass.getNameOrOID()); throw new DirectoryException( ResultCode.CONSTRAINT_VIOLATION, message); b.addToSchemaOverwrite(); } for (String name : objectClass.getNormalizedNames()) else { if (objectClasses.containsKey(name)) { ObjectClass conflictingClass = objectClasses.get(name); LocalizableMessage message = ERR_SCHEMA_CONFLICTING_OBJECTCLASS_NAME. get(objectClass.getNameOrOID(), name, conflictingClass.getNameOrOID()); throw new DirectoryException( ResultCode.CONSTRAINT_VIOLATION, message); b.addToSchema(); } } } ObjectClass old = objectClasses.put(toLowerCase(objectClass.getOID()), objectClass); if (old != null && old != objectClass) { // Mark the old object class as stale so that caches (such as compressed // schema) can detect changes. old.setDirty(); } for (String name : objectClass.getNormalizedNames()) { objectClasses.put(name, objectClass); } switchSchema(builder.toSchema()); } finally { @@ -773,29 +740,27 @@ } } /** * Deregisters the provided objectclass definition with this schema. * * @param objectClass The objectclass to deregister with this * schema. * @param objectClass The objectclass to deregister with this schema. * @throws DirectoryException * If the object class is referenced by another schema element. */ public void deregisterObjectClass(ObjectClass objectClass) public void deregisterObjectClass(ObjectClass objectClass) throws DirectoryException { synchronized (objectClasses) exclusiveLock.lock(); try { if (objectClasses.remove(toLowerCase(objectClass.getOID()), objectClass)) SchemaBuilder builder = new SchemaBuilder(schemaNG); if (builder.removeObjectClass(objectClass.getNameOrOID())) { // Mark the old object class as stale so that caches (such as // compressed schema) can detect changes. objectClass.setDirty(); switchSchema(builder.toSchema()); } for (String name : objectClass.getNormalizedNames()) { objectClasses.remove(name, objectClass); } finally { exclusiveLock.unlock(); } } @@ -1926,7 +1891,7 @@ for (AttributeType at : schemaNG.getAttributeTypes()) { if ((at.getSuperiorType() != null) && at.getSuperiorType().equals(type)) if (type.equals(at.getSuperiorType())) { deregisterAttributeType(at); registerAttributeType(at.toString(), getSchemaFileName(at), true); @@ -1934,7 +1899,7 @@ } } for (ObjectClass oc : objectClasses.values()) for (ObjectClass oc : schemaNG.getObjectClasses()) { if (oc.getDeclaredRequiredAttributes().contains(type) || oc.getDeclaredOptionalAttributes().contains(type)) { @@ -1983,7 +1948,7 @@ private void rebuildDependentElements(ObjectClass c, int depth) throws DirectoryException { circularityCheck(depth, c); for (ObjectClass oc : objectClasses.values()) for (ObjectClass oc : getObjectClasses()) { if (oc.getSuperiorClasses().contains(c)) { @@ -2112,7 +2077,6 @@ } dupSchema.subordinateTypes.putAll(subordinateTypes); dupSchema.objectClasses.putAll(objectClasses); dupSchema.ditContentRules.putAll(ditContentRules); dupSchema.ditStructureRulesByID.putAll(ditStructureRulesByID); dupSchema.ditStructureRulesByNameForm.putAll(ditStructureRulesByNameForm); @@ -2576,12 +2540,6 @@ nameFormsByOC = null; } if (objectClasses != null) { objectClasses.clear(); objectClasses = null; } if (subordinateTypes != null) { subordinateTypes.clear();