From a9f305153b30d5cb478c561467803512e90f3ba6 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 03 Feb 2016 11:57:34 +0000
Subject: [PATCH] OPENDJ-2647 Schema problems in control-panel
---
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java | 48 +++++++++++++++++++++++++++++-------------------
1 files changed, 29 insertions(+), 19 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java
index d8ab0bf..22d05f1 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java
@@ -35,14 +35,17 @@
import java.util.List;
import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.opendj.ldap.schema.Syntax;
-import org.forgerock.opendj.ldap.schema.MatchingRule;
-import org.opends.server.config.ConfigConstants;
+import org.forgerock.i18n.LocalizedIllegalArgumentException;
import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.forgerock.opendj.ldap.schema.MatchingRule;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
+import org.forgerock.opendj.ldap.schema.Syntax;
+import org.opends.server.config.ConfigConstants;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SchemaConfigManager;
import org.opends.server.schema.SchemaConstants;
-import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ObjectClass;
@@ -189,25 +192,32 @@
*/
protected Schema getBaseSchema() throws DirectoryException
{
- // start from default schema
- Schema schema = new Schema(org.forgerock.opendj.ldap.schema.Schema.getDefaultSchema());
- for (MatchingRule mr : matchingRulesToKeep)
+ try
{
- schema.registerMatchingRule(mr, true);
+ SchemaBuilder builder = new SchemaBuilder(org.forgerock.opendj.ldap.schema.Schema.getDefaultSchema());
+ for (Syntax syntax : syntaxesToKeep)
+ {
+ builder.buildSyntax(syntax).addToSchemaOverwrite();
+ }
+ for (MatchingRule mr : matchingRulesToKeep)
+ {
+ builder.buildMatchingRule(mr).addToSchemaOverwrite();
+ }
+ for (AttributeType attr : attributesToKeep)
+ {
+ builder.buildAttributeType(attr).addToSchemaOverwrite();
+ }
+ Schema schema = new Schema(builder.toSchema());
+ for (ObjectClass oc : objectclassesToKeep)
+ {
+ schema.registerObjectClass(oc, true);
+ }
+ return schema;
}
- for (Syntax syntax : syntaxesToKeep)
+ catch (LocalizedIllegalArgumentException e)
{
- schema.registerSyntax(syntax, true);
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, e.getMessageObject(), e);
}
- for (AttributeType attr : attributesToKeep)
- {
- schema.registerAttributeType(attr, true);
- }
- for (ObjectClass oc : objectclassesToKeep)
- {
- schema.registerObjectClass(oc, true);
- }
- return schema;
}
/**
--
Gitblit v1.10.0