From 7302736c0007f2851e1b8bce3101e18ec884090f Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Thu, 08 Nov 2007 15:45:34 +0000
Subject: [PATCH] Fix for 2577 : replication generationID is not correctly saved in schema backend files and is not returned when searching.
---
opends/src/server/org/opends/server/core/SchemaConfigManager.java | 84 ++++++++++++++++++++++++++++--------------
1 files changed, 56 insertions(+), 28 deletions(-)
diff --git a/opends/src/server/org/opends/server/core/SchemaConfigManager.java b/opends/src/server/org/opends/server/core/SchemaConfigManager.java
index 938d54e..00d6986 100644
--- a/opends/src/server/org/opends/server/core/SchemaConfigManager.java
+++ b/opends/src/server/org/opends/server/core/SchemaConfigManager.java
@@ -710,29 +710,16 @@
}
}
-
- AttributeType synchronizationStateType =
- schema.getAttributeType(ATTR_SYNCHRONIZATION_STATE_LC);
- if (synchronizationStateType == null)
+ // Loop on all the attribute of the schema entry to
+ // find the extra attribute that shoule be loaded in the Schema.
+ for (Attribute attribute : entry.getAttributes())
{
- synchronizationStateType =
- DirectoryServer.getDefaultAttributeType(ATTR_SYNCHRONIZATION_STATE_LC,
- new MatchingRuleUseSyntax());
+ if (!isSchemaAttribute(attribute))
+ {
+ schema.addExtraAttribute(attribute.getName(), attribute);
+ }
}
- AttributeType synchronizationGenerationIdType =
- schema.getAttributeType(ATTR_SYNCHRONIZATION_GENERATIONID_LC);
- if (synchronizationGenerationIdType == null)
- {
- synchronizationGenerationIdType = DirectoryServer.getDefaultAttributeType
- (ATTR_SYNCHRONIZATION_GENERATIONID_LC, new MatchingRuleUseSyntax());
- }
-
- List<Attribute> synchronizationState =
- entry.getAttribute(synchronizationStateType);
- if (synchronizationState != null && !(synchronizationState.isEmpty()))
- schema.setSynchronizationState(synchronizationState.get(0).getValues());
-
// Parse the attribute type definitions if there are any.
if (attrList != null)
{
@@ -744,7 +731,7 @@
AttributeType attrType;
try
{
- attrType = attrTypeSyntax.decodeAttributeType(v.getValue(),
+ attrType = AttributeTypeSyntax.decodeAttributeType(v.getValue(),
schema, false);
attrType.setExtraProperty(SCHEMA_PROPERTY_FILENAME, (String) null);
attrType.setSchemaFile(schemaFile);
@@ -837,7 +824,8 @@
ObjectClass oc;
try
{
- oc = ocSyntax.decodeObjectClass(v.getValue(), schema, false);
+ oc =
+ ObjectClassSyntax.decodeObjectClass(v.getValue(), schema, false);
oc.setExtraProperty(SCHEMA_PROPERTY_FILENAME, (String) null);
oc.setSchemaFile(schemaFile);
}
@@ -931,7 +919,7 @@
NameForm nf;
try
{
- nf = nfSyntax.decodeNameForm(v.getValue(), schema, false);
+ nf = NameFormSyntax.decodeNameForm(v.getValue(), schema, false);
nf.getExtraProperties().remove(SCHEMA_PROPERTY_FILENAME);
nf.setSchemaFile(schemaFile);
}
@@ -1023,7 +1011,8 @@
DITContentRule dcr;
try
{
- dcr = dcrSyntax.decodeDITContentRule(v.getValue(), schema, false);
+ dcr = DITContentRuleSyntax.decodeDITContentRule(
+ v.getValue(), schema, false);
dcr.getExtraProperties().remove(SCHEMA_PROPERTY_FILENAME);
dcr.setSchemaFile(schemaFile);
}
@@ -1116,8 +1105,8 @@
DITStructureRule dsr;
try
{
- dsr = dsrSyntax.decodeDITStructureRule(v.getValue(), schema,
- false);
+ dsr = DITStructureRuleSyntax.decodeDITStructureRule(
+ v.getValue(), schema, false);
dsr.getExtraProperties().remove(SCHEMA_PROPERTY_FILENAME);
dsr.setSchemaFile(schemaFile);
}
@@ -1210,8 +1199,8 @@
MatchingRuleUse mru;
try
{
- mru = mruSyntax.decodeMatchingRuleUse(v.getValue(), schema,
- false);
+ mru = MatchingRuleUseSyntax.decodeMatchingRuleUse(
+ v.getValue(), schema, false);
mru.getExtraProperties().remove(SCHEMA_PROPERTY_FILENAME);
mru.setSchemaFile(schemaFile);
}
@@ -1296,5 +1285,44 @@
return mods;
}
+
+
+
+ /**
+ * This method checks if a given attribute is an attribute that
+ * is used by the definition of the schema.
+ *
+ * @param attribute The attribute to be checked.
+ * @return true if the attribute is part of the schema definition,
+ * false if the attribute is not part of the schema
+ * definition.
+ */
+ private static boolean isSchemaAttribute(Attribute attribute)
+ {
+ String attributeOid = attribute.getAttributeType().getOID();
+ if (attributeOid.equals("2.5.21.1") ||
+ attributeOid.equals("2.5.21.2") ||
+ attributeOid.equals("2.5.21.4") ||
+ attributeOid.equals("2.5.21.5") ||
+ attributeOid.equals("2.5.21.6") ||
+ attributeOid.equals("2.5.21.7") ||
+ attributeOid.equals("2.5.21.8") ||
+ attributeOid.equals("2.5.4.3") ||
+ attributeOid.equals("attributetypes-oid") ||
+ attributeOid.equals("objectclasses-oid") ||
+ attributeOid.equals("matchingRules-oid") ||
+ attributeOid.equals("matchingRuleUse-oid") ||
+ attributeOid.equals("NameFormDescription-oid") ||
+ attributeOid.equals("dITContentRules-oid") ||
+ attributeOid.equals("dITStructureRules")
+ )
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
}
--
Gitblit v1.10.0