mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Nicolas Capponi
19.22.2016 50fa8e53262ac5a526c7e8b9c22adc697e5b1a94
OPENDJ-3089 OPENDJ-1237 Refactor SchemaWriter class to remove static calls with strong dependencies
3 files modified
48 ■■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java 2 ●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java 10 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/types/SchemaWriter.java 36 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
@@ -225,7 +225,7 @@
      }
    }
    SchemaWriter.updateConcatenatedSchema();
    new SchemaWriter(serverContext).updateConcatenatedSchema();
    // Register with the Directory Server as a configurable component.
    currentConfig.addSchemaChangeListener(this);
opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
@@ -139,6 +139,9 @@
   */
  private volatile Schema schema;
  /** Writer which persists schema to disk. */
  private SchemaWriter schemaWriter;
  /**
   * A set of extra attributes that are not used directly by the schema but may
   * be used by other component to store information in the schema.
@@ -164,6 +167,7 @@
  {
    oldestModificationTime = System.currentTimeMillis();
    youngestModificationTime = oldestModificationTime;
    // use a default schema
    schema = Schema.getCoreSchema();
  }
@@ -203,6 +207,7 @@
  public void initialize(final ServerContext serverContext) throws InitializationException, ConfigException
  {
    this.serverContext = serverContext;
    this.schemaWriter = new SchemaWriter(serverContext);
    exclusiveLock.lock();
    try
@@ -346,8 +351,7 @@
    {
      switchSchema(newSchema);
      this.extraAttributes = newExtraAttributes;
      new SchemaWriter(serverContext)
        .updateSchemaFiles(schema, newExtraAttributes.values(), modifiedSchemaFileNames, alertGenerator);
      schemaWriter.updateSchemaFiles(schema, newExtraAttributes.values(), modifiedSchemaFileNames, alertGenerator);
      youngestModificationTime = System.currentTimeMillis();
    }
    finally
@@ -370,7 +374,7 @@
    try
    {
      switchSchema(newSchema);
      SchemaWriter.writeConcatenatedSchema();
      schemaWriter.writeConcatenatedSchema();
      youngestModificationTime = System.currentTimeMillis();
    }
    finally
opendj-server-legacy/src/main/java/org/opends/server/types/SchemaWriter.java
@@ -75,7 +75,7 @@
import org.opends.server.util.SchemaUtils;
/**
 * Provides support to write schema files.
 * Provides support to write schema files to disk.
 */
public class SchemaWriter
{
@@ -116,7 +116,7 @@
   * @param mods
   *          The list of modifications into which any identified differences should be written.
   */
  public static void compareConcatenatedSchema(Set<String> oldElements, Set<String> newElements,
  private static void compareConcatenatedSchema(Set<String> oldElements, Set<String> newElements,
      AttributeType elementType, List<Modification> mods)
  {
    AttributeBuilder builder = new AttributeBuilder(elementType);
@@ -147,7 +147,7 @@
   * @throws IOException
   *           If a problem occurs while reading the schema file elements.
   */
  public static void generateConcatenatedSchema(Set<String> attributeTypes, Set<String> objectClasses,
  private void generateConcatenatedSchema(Set<String> attributeTypes, Set<String> objectClasses,
      Set<String> nameForms, Set<String> ditContentRules, Set<String> ditStructureRules, Set<String> matchingRuleUses,
      Set<String> ldapSyntaxes) throws IOException
  {
@@ -184,9 +184,9 @@
    }
  }
  private static String getSchemaDirectoryPath()
  private String getSchemaDirectoryPath()
  {
    File schemaDir = DirectoryServer.getEnvironmentConfig().getSchemaDirectory();
    File schemaDir = serverContext.getEnvironment().getSchemaDirectory();
    return schemaDir != null ? schemaDir.getAbsolutePath() : null;
  }
@@ -216,7 +216,7 @@
   * @throws IOException
   *           If a problem occurs while reading the schema file elements.
   */
  public static void readConcatenatedSchema(File concatSchemaFile, Set<String> attributeTypes,
  private static void readConcatenatedSchema(File concatSchemaFile, Set<String> attributeTypes,
      Set<String> objectClasses, Set<String> nameForms, Set<String> ditContentRules, Set<String> ditStructureRules,
      Set<String> matchingRuleUses, Set<String> ldapSyntaxes) throws IOException
  {
@@ -241,7 +241,7 @@
   * @throws InitializationException
   *            If concatenated schema can't be updated
   */
  public static void updateConcatenatedSchema() throws InitializationException
  public void updateConcatenatedSchema() throws InitializationException
  {
    try
    {
@@ -306,7 +306,7 @@
   * 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.
   */
  public static void writeConcatenatedSchema()
  public void writeConcatenatedSchema()
  {
    String concatFilePath = null;
    try
@@ -321,9 +321,7 @@
      generateConcatenatedSchema(attributeTypes, objectClasses, nameForms, ditContentRules, ditStructureRules,
          matchingRuleUses, ldapSyntaxes);
      File configFile = new File(DirectoryServer.getConfigFile());
      File configDirectory = configFile.getParentFile();
      File upgradeDirectory = new File(configDirectory, "upgrade");
      File upgradeDirectory = getUpgradeDirectory();
      upgradeDirectory.mkdir();
      File concatFile = new File(upgradeDirectory, SCHEMA_CONCAT_FILE_NAME);
      concatFilePath = concatFile.getAbsolutePath();
@@ -362,6 +360,15 @@
    }
  }
  /** Returns the upgrade directory of the server. */
  private File getUpgradeDirectory()
  {
    File configFile = serverContext.getEnvironment().getConfigFile();
    File configDirectory = configFile.getParentFile();
    File upgradeDirectory = new File(configDirectory, "upgrade");
    return upgradeDirectory;
  }
  private static void addModification(List<Modification> mods, ModificationType modType, Set<String> included,
      Set<String> excluded, AttributeBuilder builder)
  {
@@ -385,10 +392,9 @@
    definitions.add(getSchemaDefinition(line.substring(attrName.length()), fileName));
  }
  private static File getConcatenatedSchemaFile() throws InitializationException
  private File getConcatenatedSchemaFile() throws InitializationException
  {
    File configDirectory = new File(DirectoryServer.getConfigFile()).getParentFile();
    File upgradeDirectory = new File(configDirectory, "upgrade");
    File upgradeDirectory = getUpgradeDirectory();
    File concatFile = new File(upgradeDirectory, SCHEMA_CONCAT_FILE_NAME);
    if (concatFile.exists())
    {
@@ -477,7 +483,7 @@
    }
  }
  private static List<StringBuilder> readSchemaElementsFromLdif(File f) throws IOException, FileNotFoundException
  private List<StringBuilder> readSchemaElementsFromLdif(File f) throws IOException, FileNotFoundException
  {
    final LinkedList<StringBuilder> lines = new LinkedList<>();