From ef1b8f111ca1931d63fedf977498da7f5188f7e9 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 28 Jun 2016 09:43:32 +0000
Subject: [PATCH] SchemaConfigManager.java: overwrite any X-SCHEMA-FILE read from file

---
 opendj-server-legacy/src/main/java/org/opends/server/core/SchemaConfigManager.java |   50 +++++++++++++++++++++++++++++---------------------
 1 files changed, 29 insertions(+), 21 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaConfigManager.java b/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaConfigManager.java
index a47679c..65c996f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaConfigManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaConfigManager.java
@@ -328,6 +328,19 @@
     return Collections.emptyList();
   }
 
+  private static List<Modification> createAddModifications(Entry entry, AttributeType... attrTypes)
+  {
+    List<Modification> mods = new ArrayList<>(entry.getAttributeCount());
+    for (AttributeType attrType : attrTypes)
+    {
+      for (Attribute a : entry.getAllAttributes(AttributeDescription.create(attrType)))
+      {
+        mods.add(new Modification(ModificationType.ADD, Converters.toAttribute(a)));
+      }
+    }
+    return mods;
+  }
+
   /**
    * Loads the contents of the specified schema file into the provided schema.
    *
@@ -460,54 +473,49 @@
         return builder.addSchema(schemaEntry, overwrite, new SchemaBuilderHook() {
             @Override
             public void beforeAddSyntax(Syntax.Builder builder) {
-                builder.extraProperties(SCHEMA_PROPERTY_FILENAME, Collections.singletonList(schemaFile));
+                builder.removeExtraProperty(SCHEMA_PROPERTY_FILENAME)
+                       .extraProperties(SCHEMA_PROPERTY_FILENAME, schemaFile);
             }
             @Override
             public void beforeAddObjectClass(ObjectClass.Builder builder) {
-                builder.extraProperties(SCHEMA_PROPERTY_FILENAME, Collections.singletonList(schemaFile));
+                builder.removeExtraProperty(SCHEMA_PROPERTY_FILENAME)
+                       .extraProperties(SCHEMA_PROPERTY_FILENAME, schemaFile);
             }
             @Override
             public void beforeAddNameForm(NameForm.Builder builder) {
-                builder.extraProperties(SCHEMA_PROPERTY_FILENAME, Collections.singletonList(schemaFile));
+                builder.removeExtraProperty(SCHEMA_PROPERTY_FILENAME)
+                       .extraProperties(SCHEMA_PROPERTY_FILENAME, schemaFile);
             }
             @Override
             public void beforeAddMatchingRuleUse(MatchingRuleUse.Builder builder) {
-                builder.extraProperties(SCHEMA_PROPERTY_FILENAME, Collections.singletonList(schemaFile));
+                builder.removeExtraProperty(SCHEMA_PROPERTY_FILENAME)
+                       .extraProperties(SCHEMA_PROPERTY_FILENAME, schemaFile);
             }
             @Override
             public void beforeAddMatchingRule(MatchingRule.Builder builder) {
-                builder.extraProperties(SCHEMA_PROPERTY_FILENAME, Collections.singletonList(schemaFile));
+                builder.removeExtraProperty(SCHEMA_PROPERTY_FILENAME)
+                       .extraProperties(SCHEMA_PROPERTY_FILENAME, schemaFile);
             }
             @Override
             public void beforeAddDitStructureRule(DITStructureRule.Builder builder) {
-                builder.extraProperties(SCHEMA_PROPERTY_FILENAME, Collections.singletonList(schemaFile));
+                builder.removeExtraProperty(SCHEMA_PROPERTY_FILENAME)
+                       .extraProperties(SCHEMA_PROPERTY_FILENAME, schemaFile);
             }
             @Override
             public void beforeAddDitContentRule(DITContentRule.Builder builder) {
-                builder.extraProperties(SCHEMA_PROPERTY_FILENAME, Collections.singletonList(schemaFile));
+                builder.removeExtraProperty(SCHEMA_PROPERTY_FILENAME)
+                       .extraProperties(SCHEMA_PROPERTY_FILENAME, schemaFile);
             }
             @Override
             public void beforeAddAttribute(Builder builder) {
-                builder.extraProperties(SCHEMA_PROPERTY_FILENAME, Collections.singletonList(schemaFile));
+                builder.removeExtraProperty(SCHEMA_PROPERTY_FILENAME)
+                       .extraProperties(SCHEMA_PROPERTY_FILENAME, schemaFile);
             }
         }).toSchema();
       }
     });
   }
 
-  private static List<Modification> createAddModifications(Entry entry, AttributeType... attrTypes)
-  {
-    List<Modification> mods = new ArrayList<>(entry.getAttributeCount());
-    for (AttributeType attrType : attrTypes)
-    {
-      for (Attribute a : entry.getAllAttributes(AttributeDescription.create(attrType)))
-      {
-        mods.add(new Modification(ModificationType.ADD, Converters.toAttribute(a)));
-      }
-    }
-    return mods;
-  }
-
   private static void reportError(boolean failOnError, Exception e,
       LocalizableMessage message) throws ConfigException
   {

--
Gitblit v1.10.0