From 3fa56f675fdf8c49c9cb2abcfd478172e5acfe53 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Fri, 09 Sep 2016 09:45:24 +0000
Subject: [PATCH] OPENDJ-3089 Remove all remaining references to server Schema class
---
opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java | 26 ++--
opendj-server-legacy/src/test/java/org/opends/server/schema/CoreSchemaProviderTestCase.java | 18 +-
opendj-server-legacy/src/test/java/org/opends/server/ServerContextBuilder.java | 14 ++
opendj-server-legacy/src/test/java/org/opends/server/schema/CountryStringSyntaxTest.java | 4
opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java | 82 +++++++++----
opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeTypeSyntaxTest.java | 4
opendj-server-legacy/src/test/java/org/opends/server/core/SchemaHandlerTestCase.java | 11 +
opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java | 25 +--
opendj-server-legacy/src/main/java/org/opends/server/schema/CoreSchemaProvider.java | 10 -
opendj-server-legacy/src/main/java/org/opends/server/schema/AciSyntax.java | 8
opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java | 81 +++++++------
opendj-server-legacy/src/test/java/org/opends/server/schema/CertificateSyntaxTest.java | 4
opendj-server-legacy/src/main/java/org/opends/server/types/DirectoryConfig.java | 10 -
opendj-server-legacy/src/main/java/org/opends/server/schema/SubtreeSpecificationSyntax.java | 8
14 files changed, 164 insertions(+), 141 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java b/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
index c12a33c..f518163 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
@@ -90,7 +90,6 @@
import org.opends.server.util.StaticUtils;
import com.forgerock.opendj.util.OperatingSystem;
-import com.sun.corba.se.spi.ior.WriteContents;
/**
* Responsible for loading the server schema.
@@ -268,17 +267,10 @@
}
/**
- * Update the schema using the provided schema updater.
- * <p>
- * An implicit lock is performed, so it is in general not necessary
- * to call the {code lock()} and {code unlock() methods.
- * However, these method should be used if/when the SchemaBuilder passed
- * as an argument to the updater is not used to return the schema
- * (see for example usage in {@code CoreSchemaProvider} class). This
- * case should remain exceptional.
+ * Updates the schema using the provided schema updater.
*
* @param updater
- * the updater that returns a new schema
+ * the updater that performs modifications on the schema builder
* @throws DirectoryException if there is any problem updating the schema
*/
public void updateSchema(SchemaUpdater updater) throws DirectoryException
@@ -286,7 +278,9 @@
exclusiveLock.lock();
try
{
- switchSchema(updater.update(new SchemaBuilder(schema)));
+ SchemaBuilder schemaBuilder = new SchemaBuilder(schema);
+ updater.update(schemaBuilder);
+ switchSchema(schemaBuilder.toSchema());
}
finally
{
@@ -386,9 +380,9 @@
updateSchema(new SchemaUpdater()
{
@Override
- public Schema update(SchemaBuilder builder)
+ public void update(SchemaBuilder builder)
{
- return builder.setOption(option, newValue).toSchema();
+ builder.setOption(option, newValue);
}
});
}
@@ -1051,14 +1045,13 @@
public interface SchemaUpdater
{
/**
- * Returns an updated schema.
+ * Updates the schema using the provided schema builder.
*
* @param builder
* The builder on the current schema
- * @return the new schema
* @throws DirectoryException
* If an error occurs during the schema update
*/
- Schema update(SchemaBuilder builder) throws DirectoryException;
+ void update(SchemaBuilder builder) throws DirectoryException;
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/AciSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/AciSyntax.java
index af3d996..8eee19a 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/AciSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/AciSyntax.java
@@ -24,9 +24,9 @@
import org.forgerock.opendj.ldap.schema.Syntax;
import org.forgerock.opendj.server.config.server.AttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
+import org.opends.server.core.SchemaHandler.SchemaUpdater;
import org.opends.server.core.ServerContext;
import org.opends.server.types.DirectoryException;
-import org.opends.server.types.Schema.SchemaUpdater;
/**
* This class implements the access control information (aci) attribute syntax.
@@ -50,12 +50,12 @@
throws ConfigException, DirectoryException
{
// Add the Aci syntax to the "new" schema
- serverContext.getSchema().updateSchema(new SchemaUpdater()
+ serverContext.getSchemaHandler().updateSchema(new SchemaUpdater()
{
@Override
- public Schema update(SchemaBuilder builder)
+ public void update(SchemaBuilder builder)
{
- return addAciSyntax(builder).toSchema();
+ addAciSyntax(builder);
}
});
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java
index b5dde3b..a37e3a1 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/CollationMatchingRuleFactory.java
@@ -42,9 +42,10 @@
import org.forgerock.opendj.server.config.server.CollationMatchingRuleCfg;
import org.opends.server.api.MatchingRuleFactory;
import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.SchemaHandler;
+import org.opends.server.core.SchemaHandler.SchemaUpdater;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
-import org.opends.server.types.Schema.SchemaUpdater;
import org.opends.server.util.CollectionUtils;
/**
@@ -83,14 +84,14 @@
{
// The core schema contains all supported collation matching rules so read it for initialization.
// The server's schemaNG may have different things configured slightly differently
- org.opends.server.types.Schema schema = DirectoryServer.getSchema();
+ SchemaHandler schemaHandler = DirectoryServer.getInstance().getServerContext().getSchemaHandler();
Schema coreSchema = CoreSchema.getInstance();
// on startup, the SDK already has existing matching rules
// remove them all before letting the server set them all up
// according to what this factory decides must be setup
final Set<MatchingRule> defaultMatchingRules = getCollationMatchingRules(coreSchema.getMatchingRules());
- unregisterMatchingRules(schema, defaultMatchingRules);
+ unregisterMatchingRules(schemaHandler, defaultMatchingRules);
matchingRules.putAll(collectConfiguredMatchingRules(configuration, coreSchema));
// Save this configuration.
@@ -100,21 +101,20 @@
currentConfig.addCollationChangeListener(this);
}
- private void unregisterMatchingRules(org.opends.server.types.Schema schema,
- final Collection<MatchingRule> matchingRules) throws ConfigException
+ private void unregisterMatchingRules(SchemaHandler schemaHandler, final Collection<MatchingRule> matchingRules)
+ throws ConfigException
{
try
{
- schema.updateSchema(new SchemaUpdater()
+ schemaHandler.updateSchema(new SchemaUpdater()
{
@Override
- public Schema update(SchemaBuilder builder)
+ public void update(SchemaBuilder builder)
{
for (final MatchingRule rule : matchingRules)
{
builder.removeMatchingRule(rule.getNameOrOID());
}
- return builder.toSchema();
}
});
}
@@ -200,8 +200,9 @@
// Since we have come here it means that this Factory is enabled
// and there is a change in the CollationMatchingRuleFactory's configuration.
- final org.opends.server.types.Schema serverSchema = DirectoryServer.getSchema();
- final Collection<MatchingRule> existingCollationRules = getCollationMatchingRules(serverSchema.getMatchingRules());
+ SchemaHandler schemaHandler = DirectoryServer.getInstance().getServerContext().getSchemaHandler();
+ final Collection<MatchingRule> existingCollationRules =
+ getCollationMatchingRules(schemaHandler.getSchema().getMatchingRules());
matchingRules.clear();
final Map<String, MatchingRule> configuredMatchingRules =
@@ -219,10 +220,10 @@
}
try
{
- serverSchema.updateSchema(new SchemaUpdater()
+ schemaHandler.updateSchema(new SchemaUpdater()
{
@Override
- public Schema update(SchemaBuilder builder)
+ public void update(SchemaBuilder builder)
{
Collection<MatchingRule> defaultMatchingRules = CoreSchema.getInstance().getMatchingRules();
for (MatchingRule rule : defaultMatchingRules)
@@ -246,7 +247,6 @@
// removed
builder.removeMatchingRule(ruleToRemove.getOID());
}
- return builder.toSchema();
}
});
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/CoreSchemaProvider.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/CoreSchemaProvider.java
index d287c7b..f12d59f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/CoreSchemaProvider.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/CoreSchemaProvider.java
@@ -23,14 +23,13 @@
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.config.server.ConfigurationChangeListener;
-import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.server.config.server.CoreSchemaCfg;
import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.SchemaHandler.SchemaUpdater;
import org.opends.server.core.ServerContext;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
-import org.opends.server.types.Schema.SchemaUpdater;
/** Provides the core schema, which includes core matching rules and syntaxes. */
public class CoreSchemaProvider implements SchemaProvider<CoreSchemaCfg>,
@@ -123,17 +122,14 @@
public ConfigChangeResult applyConfigurationChange(final CoreSchemaCfg configuration)
{
final ConfigChangeResult ccr = new ConfigChangeResult();
- // TODO : the server schema should probably be renamed to something like ServerSchema
- // Even after migration to SDK schema, it will be probably be kept
try
{
- serverContext.getSchema().updateSchema(new SchemaUpdater()
+ serverContext.getSchemaHandler().updateSchema(new SchemaUpdater()
{
@Override
- public Schema update(SchemaBuilder builder)
+ public void update(SchemaBuilder builder)
{
updateSchemaFromConfiguration(builder, configuration);
- return builder.toSchema();
}
});
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/SubtreeSpecificationSyntax.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/SubtreeSpecificationSyntax.java
index c099a84..0642fdf 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/SubtreeSpecificationSyntax.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/SubtreeSpecificationSyntax.java
@@ -27,10 +27,10 @@
import org.forgerock.opendj.ldap.schema.Syntax;
import org.forgerock.opendj.server.config.server.AttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
+import org.opends.server.core.SchemaHandler.SchemaUpdater;
import org.opends.server.core.ServerContext;
import org.forgerock.opendj.ldap.DN;
import org.opends.server.types.DirectoryException;
-import org.opends.server.types.Schema.SchemaUpdater;
import org.opends.server.types.SubtreeSpecification;
/**
@@ -58,12 +58,12 @@
throws ConfigException, DirectoryException
{
// Add the subtree specification syntax to the "new" schema
- serverContext.getSchema().updateSchema(new SchemaUpdater()
+ serverContext.getSchemaHandler().updateSchema(new SchemaUpdater()
{
@Override
- public Schema update(SchemaBuilder builder)
+ public void update(SchemaBuilder builder)
{
- return addSubtreeSpecificationSyntax(builder).toSchema();
+ addSubtreeSpecificationSyntax(builder);
}
});
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/DirectoryConfig.java b/opendj-server-legacy/src/main/java/org/opends/server/types/DirectoryConfig.java
index f255a39..15000e6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/DirectoryConfig.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/DirectoryConfig.java
@@ -105,16 +105,6 @@
}
/**
- * Retrieves a reference to the Directory Server schema.
- *
- * @return A reference to the Directory Server schema.
- */
- public static Schema getSchema()
- {
- return DirectoryServer.getSchema();
- }
-
- /**
* Registers the provided alert generator with the Directory Server.
*
* @param alertGenerator The alert generator to register.
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/ServerContextBuilder.java b/opendj-server-legacy/src/test/java/org/opends/server/ServerContextBuilder.java
index 302bd34..c186053 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/ServerContextBuilder.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/ServerContextBuilder.java
@@ -20,7 +20,9 @@
import java.io.File;
import org.forgerock.opendj.config.server.ServerManagementContext;
+import org.forgerock.opendj.ldap.schema.Schema;
import org.opends.server.config.ConfigurationHandler;
+import org.opends.server.core.SchemaHandler;
import org.opends.server.core.ServerContext;
import org.opends.server.types.DirectoryEnvironmentConfig;
import org.opends.server.types.InitializationException;
@@ -60,10 +62,18 @@
return this;
}
- public ServerContextBuilder schema(org.opends.server.types.Schema schema)
+ public ServerContextBuilder schema(Schema schema)
{
when(serverContext.getSchema()).thenReturn(schema);
- when(serverContext.getSchemaNG()).thenReturn(schema.getSchemaNG());
+ when(serverContext.getSchemaNG()).thenReturn(schema);
+ return this;
+ }
+
+ public ServerContextBuilder schemaHandler(SchemaHandler handler)
+ {
+ when(serverContext.getSchemaHandler()).thenReturn(handler);
+ when(serverContext.getSchema()).thenReturn(handler.getSchema());
+ when(serverContext.getSchemaNG()).thenReturn(handler.getSchema());
return this;
}
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
index a12f9ae..aa971b1 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
@@ -46,7 +46,6 @@
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.schema.MatchingRuleUse;
import org.forgerock.opendj.ldap.schema.ObjectClass;
-import org.forgerock.opendj.ldap.schema.Schema;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.server.config.server.SchemaBackendCfg;
import org.forgerock.util.Utils;
@@ -55,6 +54,8 @@
import org.opends.server.core.DeleteOperationBasis;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ModifyDNOperationBasis;
+import org.opends.server.core.SchemaHandler;
+import org.opends.server.core.SchemaHandler.SchemaUpdater;
import org.opends.server.core.ServerContext;
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.internal.InternalSearchOperation;
@@ -1237,23 +1238,47 @@
}
}
- private void deregisterAttributeType(String nameOrOid) throws DirectoryException
+ private void updateSchema(SchemaUpdater updater) throws DirectoryException
{
- org.opends.server.types.Schema schema = DirectoryServer.getSchema();
- schema.deregisterAttributeType(schema.getAttributeType(nameOrOid));
+ SchemaHandler schemaHandler = DirectoryServer.getInstance().getServerContext().getSchemaHandler();
+ schemaHandler.updateSchema(updater);
}
- private void deregisterMatchingRuleUse(MatchingRule matchingRule) throws DirectoryException
+ private void deregisterAttributeType(final String nameOrOid) throws DirectoryException
{
- org.opends.server.types.Schema schema = DirectoryServer.getSchema();
- schema.deregisterMatchingRuleUse(schema.getMatchingRuleUse(matchingRule));
+ updateSchema(new SchemaUpdater()
+ {
+ @Override
+ public void update(SchemaBuilder builder) throws DirectoryException
+ {
+ builder.removeAttributeType(nameOrOid);
+ }
+ });
}
- private void deregisterMatchingRule(MatchingRule matchingRule) throws DirectoryException
+ private void deregisterMatchingRuleUse(final MatchingRule matchingRule) throws DirectoryException
{
- DirectoryServer.getSchema().deregisterMatchingRule(matchingRule);
+ updateSchema(new SchemaUpdater()
+ {
+ @Override
+ public void update(SchemaBuilder builder) throws DirectoryException
+ {
+ builder.removeMatchingRuleUse(matchingRule.getOID());
+ }
+ });
}
+ private void deregisterMatchingRule(final MatchingRule matchingRule) throws DirectoryException
+ {
+ updateSchema(new SchemaUpdater()
+ {
+ @Override
+ public void update(SchemaBuilder builder) throws DirectoryException
+ {
+ builder.removeMatchingRule(matchingRule.getOID());
+ }
+ });
+ }
/**
* Tests the behavior of the schema backend when attempting to add a new
@@ -3233,7 +3258,7 @@
private void assertSchemaHasDITStructureRule(int ruleID, boolean expected)
{
- boolean hasDITStructureRule = DirectoryServer.getSchema().getSchemaNG().hasDITStructureRule(ruleID);
+ boolean hasDITStructureRule = DirectoryServer.getSchema().hasDITStructureRule(ruleID);
assertEquals(hasDITStructureRule, expected, "Expected to find a DITStructureRule with ruleID " + ruleID);
}
@@ -3677,19 +3702,6 @@
assertSchemaHasDITStructureRule(ruleID, false);
}
- private MatchingRule getMatchingRule(String name, String oid, boolean isObsolete)
- {
- Schema schema =
- new SchemaBuilder(Schema.getCoreSchema())
- .buildMatchingRule(oid)
- .syntaxOID(SchemaConstants.SYNTAX_DIRECTORY_STRING_OID)
- .names(name)
- .implementation(new SchemaTestMatchingRuleImpl())
- .obsolete(isObsolete)
- .addToSchema().toSchema();
- return schema.getMatchingRule(oid);
- }
-
/**
* Tests the behavior of the schema backend when attempting to add a new
* matching rule use that doesn't already exist.
@@ -4074,11 +4086,27 @@
}
}
- private MatchingRule registerNewMatchingRule(String name, String oid, boolean obsolete) throws DirectoryException
+ private MatchingRule registerNewMatchingRule(final String name, final String oid, final boolean obsolete)
+ throws DirectoryException
{
- MatchingRule matchingRule = getMatchingRule(name, oid, obsolete);
- DirectoryServer.getSchema().registerMatchingRules(Arrays.asList(matchingRule), false);
- return matchingRule;
+ updateSchema(new SchemaUpdater()
+ {
+
+ @Override
+ public void update(SchemaBuilder builder) throws DirectoryException
+ {
+ builder
+ .buildMatchingRule(oid)
+ .syntaxOID(SchemaConstants.SYNTAX_DIRECTORY_STRING_OID)
+ .names(name)
+ .implementation(new SchemaTestMatchingRuleImpl())
+ .obsolete(obsolete)
+ .addToSchema();
+ }
+ });
+ SchemaHandler schemaHandler = DirectoryServer.getInstance().getServerContext().getSchemaHandler();
+ return schemaHandler.getSchema().getMatchingRule(oid);
+
}
private void runModify(String[] args, String ldifContent, ResultCode expectedRC)
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/core/SchemaHandlerTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/core/SchemaHandlerTestCase.java
index ae91483..2cbb84f 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/core/SchemaHandlerTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/core/SchemaHandlerTestCase.java
@@ -31,8 +31,8 @@
@Test
public void testSchemaInitialization() throws Exception
{
- org.opends.server.types.Schema schema = new org.opends.server.types.Schema(Schema.getCoreSchema());
- initializeSchemaHandler(schema);
+ SchemaHandler handler = initializeSchemaHandler();
+ Schema schema = handler.getSchema();
assertThat(schema.getMatchingRules()).isNotEmpty(); // some matching rules defined
schema.getSyntax(SchemaConstants.SYNTAX_DIRECTORY_STRING_OID);
@@ -41,17 +41,18 @@
schema.getObjectClass("changeLogEntry"); // from file 03-changelog.ldif
}
- private void initializeSchemaHandler(org.opends.server.types.Schema schema) throws Exception
+ private SchemaHandler initializeSchemaHandler() throws Exception
{
+ SchemaHandler schemaHandler = new SchemaHandler();
final ServerContext serverContext = aServerContext()
.schemaDirectory(new File(TestCaseUtils.getBuildRoot(), "resource/schema"))
.configFile(TestCaseUtils.getTestResource("configForTests/config-small.ldif"))
.withConfigurationBootstrapped()
- .schema(schema)
+ .schemaHandler(schemaHandler)
.build();
- SchemaHandler schemaHandler = new SchemaHandler();
schemaHandler.initialize(serverContext);
+ return schemaHandler;
}
}
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeTypeSyntaxTest.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeTypeSyntaxTest.java
index 911c828..1257214 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeTypeSyntaxTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/AttributeTypeSyntaxTest.java
@@ -112,7 +112,7 @@
@Test
public void testXAPPROXExtension() throws Exception
{
- org.opends.server.types.Schema schema = DirectoryServer.getSchema();
+ Schema schema = DirectoryServer.getInstance().getServerContext().getSchema();
Syntax attrTypeSyntax = schema.getSyntax("1.3.6.1.4.1.1466.115.121.1.3");
assertNotNull(attrTypeSyntax);
@@ -126,7 +126,7 @@
// Verify that we can decode the attribute type and that it has the
// correct approximate matching rule.
- Schema newSchema = new SchemaBuilder(schema.getSchemaNG())
+ Schema newSchema = new SchemaBuilder(schema)
.addAttributeType(definition.toString(), false)
.toSchema();
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/CertificateSyntaxTest.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/CertificateSyntaxTest.java
index 147caed..39b041f 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/CertificateSyntaxTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/CertificateSyntaxTest.java
@@ -17,12 +17,12 @@
package org.opends.server.schema;
import org.forgerock.opendj.ldap.ByteString;
-import org.forgerock.opendj.ldap.schema.Schema;
import org.opends.server.ServerContextBuilder;
import org.forgerock.opendj.config.server.ConfigurationChangeListener;
import org.forgerock.opendj.server.config.server.AttributeSyntaxCfg;
import org.forgerock.opendj.server.config.server.CertificateAttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
+import org.opends.server.core.SchemaHandler;
import org.opends.server.core.ServerContext;
import org.forgerock.opendj.ldap.DN;
import org.opends.server.util.Base64;
@@ -119,7 +119,7 @@
};
ServerContext serverContext = ServerContextBuilder.aServerContext()
- .schema(new org.opends.server.types.Schema(Schema.getCoreSchema()))
+ .schemaHandler(new SchemaHandler()) // provides core schema
.build();
syntax.initializeSyntax(cfg, serverContext);
return syntax;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/CoreSchemaProviderTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/CoreSchemaProviderTestCase.java
index 26fbea8..0477b8d 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/CoreSchemaProviderTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/CoreSchemaProviderTestCase.java
@@ -21,6 +21,7 @@
import org.forgerock.opendj.config.ConfigurationMock;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.CoreTestCase;
+import org.opends.server.core.SchemaHandler;
import org.opends.server.core.ServerContext;
import org.testng.annotations.Test;
@@ -44,20 +45,18 @@
CoreSchemaCfg coreSchemaCfg = ConfigurationMock.mockCfg(CoreSchemaCfg.class);
CoreSchemaProvider provider = new CoreSchemaProvider();
-
- org.opends.server.types.Schema schema = new org.opends.server.types.Schema( Schema.getCoreSchema());
- provider.initialize(getServerContext(schema), coreSchemaCfg, new SchemaBuilder());
+ provider.initialize(getServerContext(), coreSchemaCfg, new SchemaBuilder());
verify(coreSchemaCfg).addCoreSchemaChangeListener(provider);
}
- private ServerContext getServerContext(org.opends.server.types.Schema schema) throws Exception
+ private ServerContext getServerContext() throws Exception
{
return aServerContext()
.schemaDirectory(new File(TestCaseUtils.getBuildRoot(), "resource/schema"))
.configFile(TestCaseUtils.getTestResource("configForTests/config-small.ldif"))
.withConfigurationBootstrapped()
- .schema(schema)
+ .schemaHandler(new SchemaHandler())
.build();
}
@@ -69,8 +68,7 @@
SchemaBuilder schemaBuilder = new SchemaBuilder();
CoreSchemaProvider provider = new CoreSchemaProvider();
- org.opends.server.types.Schema schema = new org.opends.server.types.Schema( Schema.getCoreSchema());
- provider.initialize(getServerContext(schema), coreSchemaCfg, schemaBuilder);
+ provider.initialize(getServerContext(), coreSchemaCfg, schemaBuilder);
assertThat(schemaBuilder.toSchema().getOption(ALLOW_ZERO_LENGTH_DIRECTORY_STRINGS)).isTrue();
}
@@ -83,8 +81,7 @@
SchemaBuilder schemaBuilder = new SchemaBuilder(Schema.getCoreSchema());
CoreSchemaProvider provider = new CoreSchemaProvider();
- org.opends.server.types.Schema schema = new org.opends.server.types.Schema( Schema.getCoreSchema());
- provider.initialize(getServerContext(schema), coreSchemaCfg, schemaBuilder);
+ provider.initialize(getServerContext(), coreSchemaCfg, schemaBuilder);
assertThat(schemaBuilder.toSchema().hasSyntax(DIRECTORY_STRING_SYNTAX_OID)).isFalse();
}
@@ -97,8 +94,7 @@
SchemaBuilder schemaBuilder = new SchemaBuilder(Schema.getCoreSchema());
CoreSchemaProvider provider = new CoreSchemaProvider();
- org.opends.server.types.Schema schema = new org.opends.server.types.Schema( Schema.getCoreSchema());
- provider.initialize(getServerContext(schema), coreSchemaCfg, schemaBuilder);
+ provider.initialize(getServerContext(), coreSchemaCfg, schemaBuilder);
assertThat(schemaBuilder.toSchema().hasMatchingRule(DIRECTORY_STRING_SYNTAX_OID)).isFalse();
}
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/CountryStringSyntaxTest.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/CountryStringSyntaxTest.java
index 362a701..51f66d5 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/CountryStringSyntaxTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/CountryStringSyntaxTest.java
@@ -18,12 +18,12 @@
package org.opends.server.schema;
import org.forgerock.opendj.ldap.DN;
-import org.forgerock.opendj.ldap.schema.Schema;
import org.opends.server.ServerContextBuilder;
import org.opends.server.api.AttributeSyntax;
import org.forgerock.opendj.config.server.ConfigurationChangeListener;
import org.forgerock.opendj.server.config.server.AttributeSyntaxCfg;
import org.forgerock.opendj.server.config.server.CountryStringAttributeSyntaxCfg;
+import org.opends.server.core.SchemaHandler;
import org.opends.server.core.ServerContext;
import org.opends.server.util.RemoveOnceSDKSchemaIsUsed;
import org.testng.annotations.DataProvider;
@@ -119,7 +119,7 @@
};
ServerContext serverContext = ServerContextBuilder.aServerContext()
- .schema(new org.opends.server.types.Schema(Schema.getCoreSchema()))
+ .schemaHandler(new SchemaHandler()) // provides core schema
.build();
syntax.initializeSyntax(cfg, serverContext);
return syntax;
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java
index 0888784..195e27c 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/tasks/AddSchemaFileTaskTestCase.java
@@ -32,6 +32,8 @@
import org.opends.server.TestCaseUtils;
import org.opends.server.backends.SchemaTestMatchingRuleImpl;
import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.SchemaHandler;
+import org.opends.server.core.SchemaHandler.SchemaUpdater;
import org.opends.server.types.DirectoryException;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
@@ -46,7 +48,7 @@
@SuppressWarnings("javadoc")
public class AddSchemaFileTaskTestCase extends TasksTestCase
{
- private static List<MatchingRule> matchingRulesToRemove = new ArrayList<>();
+ private static List<String> matchingRulesToRemove = new ArrayList<>();
/**
* Make sure that the Directory Server is running.
@@ -59,29 +61,49 @@
TestCaseUtils.startServer();
}
+ private SchemaHandler getSchemaHandler()
+ {
+ return DirectoryServer.getInstance().getServerContext().getSchemaHandler();
+ }
+
@AfterClass
public void deregisterMatchingRules() throws Exception
{
- for (MatchingRule matchingRule : matchingRulesToRemove)
+ getSchemaHandler().updateSchema(new SchemaUpdater()
{
- org.opends.server.types.Schema schema = DirectoryServer.getSchema();
- schema.deregisterMatchingRuleUse(schema.getMatchingRuleUse(matchingRule));
- schema.deregisterMatchingRule(matchingRule);
- }
+ @Override
+ public void update(SchemaBuilder builder) throws DirectoryException
+ {
+ for (String mrOid : matchingRulesToRemove)
+ {
+ builder.removeMatchingRule(mrOid);
+ builder.removeMatchingRuleUse(mrOid);
+ }
+ }
+ });
}
- private void registerNewMatchingRule(String name, String oid) throws DirectoryException
+ private void registerNewMatchingRule(final String name, final String oid) throws DirectoryException
{
- MatchingRule matchingRule = new SchemaBuilder(Schema.getCoreSchema())
- .buildMatchingRule(oid)
- .syntaxOID(CoreSchema.getDirectoryStringSyntax().getOID())
- .names(name)
- .implementation(new SchemaTestMatchingRuleImpl())
- .addToSchema()
- .toSchema()
- .getMatchingRule(oid);
- DirectoryServer.getSchema().registerMatchingRules(Arrays.asList(matchingRule), false);
- matchingRulesToRemove.add(matchingRule);
+ getSchemaHandler().updateSchema(new SchemaUpdater()
+ {
+ @Override
+ public void update(SchemaBuilder builder) throws DirectoryException
+ {
+ builder
+ .buildMatchingRule(oid)
+ .syntaxOID(CoreSchema.getDirectoryStringSyntax().getOID())
+ .names(name)
+ .implementation(new SchemaTestMatchingRuleImpl())
+ .addToSchema();
+ }
+ });
+ matchingRulesToRemove.add(oid);
+ }
+
+ private String getSchemaDirectory()
+ {
+ return DirectoryServer.getEnvironmentConfig().getSchemaDirectory().getPath();
}
/**
@@ -98,14 +120,11 @@
// milliseconds to make sure that any potential updates to the last
// modification time that it won't have any chance of happening in the same
// millisecond as the last update.
- long beforeModifyTimestamp =
- DirectoryServer.getSchema().getYoungestModificationTime();
+ long beforeModifyTimestamp = getSchemaHandler().getYoungestModificationTime();
Thread.sleep(2);
-
registerNewMatchingRule("testAddValidSchemaFileMatch", "1.3.6.1.4.1.26027.1.999.23");
-
String schemaDirectory = getSchemaDirectory();
String[] fileLines =
@@ -147,8 +166,7 @@
assertEquals(resultCode, 0);
waitTaskCompletedSuccessfully(DN.valueOf(taskDNStr));
- assertFalse(DirectoryServer.getSchema().getYoungestModificationTime() ==
- beforeModifyTimestamp);
+ assertFalse(getSchemaHandler().getYoungestModificationTime() == beforeModifyTimestamp);
}
/**
@@ -165,8 +183,7 @@
// milliseconds to make sure that any potential updates to the last
// modification time that it won't have any chance of happening in the same
// millisecond as the last update.
- long beforeModifyTimestamp =
- DirectoryServer.getSchema().getYoungestModificationTime();
+ long beforeModifyTimestamp = getSchemaHandler().getYoungestModificationTime();
Thread.sleep(2);
registerNewMatchingRule("testAddMultipleValidSchemaFiles1Match", "1.3.6.1.4.1.26027.1.999.24");
@@ -246,8 +263,7 @@
assertEquals(resultCode, 0);
waitTaskCompletedSuccessfully(DN.valueOf(taskDNStr));
- assertFalse(DirectoryServer.getSchema().getYoungestModificationTime() ==
- beforeModifyTimestamp);
+ assertFalse(getSchemaHandler().getYoungestModificationTime() == beforeModifyTimestamp);
}
private void writeLines(File file, String[] lines) throws IOException
@@ -326,8 +342,7 @@
// milliseconds to make sure that any potential updates to the last
// modification time that it won't have any chance of happening in the same
// millisecond as the last update.
- long beforeModifyTimestamp =
- DirectoryServer.getSchema().getYoungestModificationTime();
+ long beforeModifyTimestamp = getSchemaHandler().getYoungestModificationTime();
Thread.sleep(2);
@@ -349,8 +364,7 @@
assertEquals(resultCode, 0);
waitTaskCompletedSuccessfully(DN.valueOf(taskDNStr));
- assertFalse(DirectoryServer.getSchema().getYoungestModificationTime() ==
- beforeModifyTimestamp);
+ assertFalse(getSchemaHandler().getYoungestModificationTime() == beforeModifyTimestamp);
}
/**
@@ -385,9 +399,4 @@
assertFalse(resultCode == 0);
invalidFile.delete();
}
-
- private String getSchemaDirectory()
- {
- return DirectoryServer.getEnvironmentConfig().getSchemaDirectory().getPath();
- }
}
--
Gitblit v1.10.0