From 0ea193c303a1553fbde5a1637d40bfb46c8e5b73 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Fri, 16 Sep 2016 12:49:16 +0000
Subject: [PATCH] OPENDJ-3302 Do not replicate changes in schema elements related to configuration
---
opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaFilesWriter.java | 28 +++++++++++++++++++++++++++-
1 files changed, 27 insertions(+), 1 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaFilesWriter.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaFilesWriter.java
index 3c7c0c0..77491e1 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaFilesWriter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/SchemaFilesWriter.java
@@ -16,6 +16,9 @@
*/
package org.opends.server.schema;
+import static org.opends.server.util.SchemaUtils.is02ConfigLdif;
+
+import static org.opends.server.util.SchemaUtils.parseSchemaFileFromElementDefinition;
import static org.forgerock.opendj.ldap.ModificationType.ADD;
import static org.forgerock.opendj.ldap.ModificationType.DELETE;
import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
@@ -228,7 +231,7 @@
// so we don't re-find these same changes on the next startup.
writeConcatenatedSchema();
}
- return mods;
+ return filterOutConfigSchemaElementFromModifications(mods);
}
catch (InitializationException ie)
{
@@ -243,6 +246,29 @@
}
}
+ private List<Modification> filterOutConfigSchemaElementFromModifications(final List<Modification> mods)
+ throws DirectoryException
+ {
+ final List<Modification> filteredMods = new ArrayList<>();
+ for (Modification modification : mods)
+ {
+ for (ByteString v : modification.getAttribute())
+ {
+ String definition = v.toString();
+ if (!isFrom02ConfigLdif(definition))
+ {
+ filteredMods.add(modification);
+ }
+ }
+ }
+ return filteredMods;
+ }
+
+ private boolean isFrom02ConfigLdif(String definition) throws DirectoryException
+ {
+ return is02ConfigLdif(parseSchemaFileFromElementDefinition(definition));
+ }
+
/**
* Writes a single file containing all schema element definitions, which can be used on startup to
* determine whether the schema files were edited with the server offline.
--
Gitblit v1.10.0