From 721b0df3d5c03c4b794556d1348a2a6780c3fb81 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 02 Jun 2016 12:19:11 +0000
Subject: [PATCH] OPENDJ-3037 SchemaBackend.java: code simplifications
---
opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java | 103 +++++++++++++++++++++------------------------------
1 files changed, 43 insertions(+), 60 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
index 006e8ad..9ff1caf 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
@@ -16,6 +16,7 @@
*/
package org.opends.server.backends;
+import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
import static org.forgerock.util.Reject.*;
import static org.opends.messages.BackendMessages.*;
import static org.opends.messages.ConfigMessages.*;
@@ -61,7 +62,6 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.AttributeType;
-import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.DITContentRule;
import org.forgerock.opendj.ldap.schema.DITStructureRule;
import org.forgerock.opendj.ldap.schema.MatchingRule;
@@ -84,8 +84,6 @@
import org.opends.server.core.ServerContext;
import org.opends.server.schema.AttributeTypeSyntax;
import org.opends.server.schema.GeneralizedTimeSyntax;
-import org.opends.server.schema.ServerSchemaElement;
-import org.opends.server.schema.SomeSchemaElement;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
import org.opends.server.types.Attributes;
@@ -1066,13 +1064,12 @@
// Otherwise, we're replacing an existing one.
if (existingType.isPlaceHolder())
{
- String schemaFile = addNewSchemaElement(modifiedSchemaFiles, new ServerSchemaElement(attributeType));
+ String schemaFile = addNewSchemaElement(modifiedSchemaFiles, attributeType);
schema.registerAttributeType(attributeType, schemaFile, false);
}
else
{
- String schemaFile = replaceExistingSchemaElement(
- modifiedSchemaFiles, new ServerSchemaElement(attributeType), new ServerSchemaElement(existingType));
+ String schemaFile = replaceExistingSchemaElement(modifiedSchemaFiles, attributeType, existingType);
schema.replaceAttributeType(attributeType, existingType, schemaFile);
}
}
@@ -1090,9 +1087,9 @@
* Update list of modified files and return the schema file to use for the
* added element (may be null).
*/
- private String addNewSchemaElement(Set<String> modifiedSchemaFiles, ServerSchemaElement elem)
+ private String addNewSchemaElement(Set<String> modifiedSchemaFiles, SchemaElement elem)
{
- String schemaFile = elem.getSchemaFile();
+ String schemaFile = getSchemaFile(elem);
String finalFile = schemaFile != null ? schemaFile : FILE_USER_SCHEMA_ELEMENTS;
modifiedSchemaFiles.add(finalFile);
return schemaFile == null ? finalFile : null;
@@ -1102,11 +1099,11 @@
* Update list of modified files and return the schema file to use for the new
* element (may be null).
*/
- private String replaceExistingSchemaElement(Set<String> modifiedSchemaFiles, ServerSchemaElement newElem,
- ServerSchemaElement existingElem)
+ private String replaceExistingSchemaElement(Set<String> modifiedSchemaFiles, SchemaElement newElem,
+ SchemaElement existingElem)
{
- String newSchemaFile = newElem.getSchemaFile();
- String oldSchemaFile = existingElem.getSchemaFile();
+ String newSchemaFile = getSchemaFile(newElem);
+ String oldSchemaFile = getSchemaFile(existingElem);
if (newSchemaFile == null)
{
if (oldSchemaFile == null)
@@ -1209,7 +1206,7 @@
// If we've gotten here, then it's OK to remove the attribute type from
// the schema.
schema.deregisterAttributeType(removeType);
- String schemaFile = new ServerSchemaElement(removeType).getSchemaFile();
+ String schemaFile = getSchemaFile(removeType);
if (schemaFile != null)
{
modifiedSchemaFiles.add(schemaFile);
@@ -1320,13 +1317,12 @@
// Otherwise, we're replacing an existing one.
if (existingClass.isPlaceHolder())
{
- String schemaFile = addNewSchemaElement(modifiedSchemaFiles, new ServerSchemaElement(objectClass));
+ String schemaFile = addNewSchemaElement(modifiedSchemaFiles, objectClass);
schema.registerObjectClass(objectClass, schemaFile, false);
}
else
{
- final String schemaFile = replaceExistingSchemaElement(
- modifiedSchemaFiles, new ServerSchemaElement(objectClass), new ServerSchemaElement(existingClass));
+ final String schemaFile = replaceExistingSchemaElement(modifiedSchemaFiles, objectClass, existingClass);
schema.replaceObjectClass(objectClass, existingClass, schemaFile);
}
}
@@ -1518,15 +1514,14 @@
// Otherwise, we're replacing an existing one.
if (!schema.hasNameForm(nameForm.getNameOrOID()))
{
- String schemaFile = addNewSchemaElement(modifiedSchemaFiles, new ServerSchemaElement(nameForm));
+ String schemaFile = addNewSchemaElement(modifiedSchemaFiles, nameForm);
schema.registerNameForm(nameForm, schemaFile, false);
}
else
{
NameForm existingNF = schema.getNameForm(nameForm.getNameOrOID());
schema.deregisterNameForm(existingNF);
- String schemaFile = replaceExistingSchemaElement(
- modifiedSchemaFiles, new ServerSchemaElement(nameForm), new ServerSchemaElement(existingNF));
+ String schemaFile = replaceExistingSchemaElement(modifiedSchemaFiles, nameForm, existingNF);
schema.registerNameForm(nameForm, schemaFile, false);
}
}
@@ -1731,14 +1726,13 @@
// Otherwise, we're replacing an existing one.
if (existingDCR == null)
{
- String schemaFile = addNewSchemaElement(modifiedSchemaFiles, new ServerSchemaElement(ditContentRule));
+ String schemaFile = addNewSchemaElement(modifiedSchemaFiles, ditContentRule);
schema.registerDITContentRule(ditContentRule, schemaFile, false);
}
else
{
schema.deregisterDITContentRule(existingDCR);
- String schemaFile = replaceExistingSchemaElement(modifiedSchemaFiles, new ServerSchemaElement(ditContentRule),
- new ServerSchemaElement(existingDCR));
+ String schemaFile = replaceExistingSchemaElement(modifiedSchemaFiles, ditContentRule, existingDCR);
schema.registerDITContentRule(ditContentRule, schemaFile, false);
}
}
@@ -1881,14 +1875,13 @@
// Otherwise, we're replacing an existing one.
if (existingDSR == null)
{
- String schemaFile = addNewSchemaElement(modifiedSchemaFiles, new ServerSchemaElement(ditStructureRule));
+ String schemaFile = addNewSchemaElement(modifiedSchemaFiles, ditStructureRule);
schema.registerDITStructureRule(ditStructureRule, schemaFile, false);
}
else
{
schema.deregisterDITStructureRule(existingDSR);
- String schemaFile = replaceExistingSchemaElement(
- modifiedSchemaFiles, new ServerSchemaElement(ditStructureRule), new ServerSchemaElement(existingDSR));
+ String schemaFile = replaceExistingSchemaElement(modifiedSchemaFiles, ditStructureRule, existingDSR);
schema.registerDITStructureRule(ditStructureRule, schemaFile, false);
}
}
@@ -2053,14 +2046,13 @@
// Otherwise, we're replacing an existing matching rule use.
if (existingMRU == null)
{
- String schemaFile = addNewSchemaElement(modifiedSchemaFiles, new ServerSchemaElement(matchingRuleUse));
+ String schemaFile = addNewSchemaElement(modifiedSchemaFiles, matchingRuleUse);
schema.registerMatchingRuleUse(matchingRuleUse, schemaFile, false);
}
else
{
schema.deregisterMatchingRuleUse(existingMRU);
- String schemaFile = replaceExistingSchemaElement(
- modifiedSchemaFiles, new ServerSchemaElement(matchingRuleUse), new ServerSchemaElement(existingMRU));
+ String schemaFile = replaceExistingSchemaElement(modifiedSchemaFiles, matchingRuleUse, existingMRU);
schema.registerMatchingRuleUse(matchingRuleUse, schemaFile, false);
}
}
@@ -2108,7 +2100,7 @@
// just remove the DIT content rule now, and if it is added back later then
// there still won't be any conflict.
schema.deregisterMatchingRuleUse(removeMRU);
- String schemaFile = new ServerSchemaElement(removeMRU).getSchemaFile();
+ String schemaFile = getSchemaFile(removeMRU);
if (schemaFile != null)
{
modifiedSchemaFiles.add(schemaFile);
@@ -2258,7 +2250,7 @@
* this only for the real part of the ldapsyntaxes attribute. The real part
* is read and write to/from the schema files.
*/
- Set<ByteString> values = getLdapSyntaxDescValuesForSchemaFile(schema, schemaFile);
+ Set<ByteString> values = getValuesForSchemaFile(schema.getLdapSyntaxDescriptions(), schemaFile);
addAttribute(schemaEntry, ldapSyntaxesType, values);
// Add all of the appropriate attribute types to the schema entry. We need
@@ -2323,7 +2315,7 @@
Set<ByteString> values = new LinkedHashSet<>();
for (SchemaElement schemaElement : schemaElements)
{
- if (schemaFile.equals(new ServerSchemaElement(schemaElement).getSchemaFile()))
+ if (schemaFile.equals(getSchemaFile(schemaElement)))
{
values.add(ByteString.valueOfUtf8(schemaElement.toString()));
}
@@ -2331,19 +2323,6 @@
return values;
}
- private Set<ByteString> getLdapSyntaxDescValuesForSchemaFile(Schema schema, String schemaFile)
- {
- Set<ByteString> values = new LinkedHashSet<>();
- for (LDAPSyntaxDescription ldapSyntax : schema.getLdapSyntaxDescriptions())
- {
- if (schemaFile.equals(getSchemaFile(ldapSyntax)))
- {
- values.add(ByteString.valueOfUtf8(ldapSyntax.toString()));
- }
- }
- return values;
- }
-
private Set<ByteString> getAttributeTypeValuesForSchemaFile(Schema schema, String schemaFile)
throws DirectoryException
{
@@ -2351,8 +2330,7 @@
Set<ByteString> values = new LinkedHashSet<>();
for (AttributeType at : schema.getAttributeTypes())
{
- String atSchemaFile = new ServerSchemaElement(at).getSchemaFile();
- if (schemaFile.equals(atSchemaFile))
+ if (schemaFile.equals(getSchemaFile(at)))
{
addAttrTypeToSchemaFile(schema, schemaFile, at, values, addedTypes, 0);
}
@@ -2436,7 +2414,7 @@
AttributeType superiorType = attributeType.getSuperiorType();
if (superiorType != null &&
- schemaFile.equals(new ServerSchemaElement(attributeType).getSchemaFile()) &&
+ schemaFile.equals(getSchemaFile(attributeType)) &&
!addedTypes.contains(superiorType))
{
addAttrTypeToSchemaFile(schema, schemaFile, superiorType, values,
@@ -2956,13 +2934,10 @@
Schema newSchema = schema.duplicate();
TreeSet<String> modifiedSchemaFiles = new TreeSet<>();
- // Get the attributeTypes attribute from the entry.
- AttributeType attributeAttrType = CoreSchema.getAttributeTypesAttributeType();
-
// loop on the attribute types in the entry just received
// and add them in the existing schema.
Set<String> oidList = new HashSet<>(1000);
- for (Attribute a : newSchemaEntry.getAttribute(attributeAttrType))
+ for (Attribute a : newSchemaEntry.getAttribute(getAttributeTypesAttributeType()))
{
// Look for attribute types that could have been added to the schema
// or modified in the schema
@@ -2970,7 +2945,7 @@
{
// Parse the attribute type.
AttributeType attrType = schema.parseAttributeType(v.toString());
- String schemaFile = new ServerSchemaElement(attrType).getSchemaFile();
+ String schemaFile = getSchemaFile(attrType);
if (CONFIG_SCHEMA_ELEMENTS_FILE.equals(schemaFile))
{
// Don't import the file containing the definitions of the
@@ -2984,8 +2959,7 @@
{
// Register this attribute type in the new schema
// unless it is already defined with the same syntax.
- AttributeType oldAttrType = schema.getAttributeType(attrType.getOID());
- if (oldAttrType == null || !oldAttrType.toString().equals(attrType.toString()))
+ if (hasDefinitionChanged(schema, attrType))
{
newSchema.registerAttributeType(attrType, schemaFile, true);
@@ -3006,7 +2980,7 @@
// them from the new schema if they are not in the imported schema entry.
for (AttributeType removeType : newSchema.getAttributeTypes())
{
- String schemaFile = new SomeSchemaElement(removeType).getSchemaFile();
+ String schemaFile = getSchemaFile(removeType);
if (CONFIG_SCHEMA_ELEMENTS_FILE.equals(schemaFile) || CORE_SCHEMA_ELEMENTS_FILE.equals(schemaFile))
{
// Don't import the file containing the definitions of the
@@ -3027,10 +3001,8 @@
// loop on the objectClasses from the entry, search if they are
// already in the current schema, add them if not.
- AttributeType objectclassAttrType = CoreSchema.getObjectClassesAttributeType();
-
oidList.clear();
- for (Attribute a : newSchemaEntry.getAttribute(objectclassAttrType))
+ for (Attribute a : newSchemaEntry.getAttribute(getObjectClassesAttributeType()))
{
for (ByteString v : a)
{
@@ -3051,8 +3023,7 @@
{
// Register this ObjectClass in the new schema
// unless it is already defined with the same syntax.
- ObjectClass oldObjectClass = schema.getObjectClass(newObjectClass.getOID());
- if (oldObjectClass.isPlaceHolder() || !oldObjectClass.toString().equals(newObjectClass.toString()))
+ if (hasDefinitionChanged(schema, newObjectClass))
{
newSchema.registerObjectClass(newObjectClass, schemaFile, true);
@@ -3101,6 +3072,18 @@
}
}
+ private boolean hasDefinitionChanged(Schema schema, AttributeType newAttrType)
+ {
+ AttributeType oldAttrType = schema.getAttributeType(newAttrType.getOID());
+ return oldAttrType.isPlaceHolder() || !oldAttrType.toString().equals(newAttrType.toString());
+ }
+
+ private boolean hasDefinitionChanged(Schema schema, ObjectClass newObjectClass)
+ {
+ ObjectClass oldObjectClass = schema.getObjectClass(newObjectClass.getOID());
+ return oldObjectClass.isPlaceHolder() || !oldObjectClass.toString().equals(newObjectClass.toString());
+ }
+
@Override
public void createBackup(BackupConfig backupConfig) throws DirectoryException
{
--
Gitblit v1.10.0