From 5c9fb43a3f4f03726fc732812244755b96ace134 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Fri, 09 Sep 2016 09:45:22 +0000
Subject: [PATCH] OPENDJ-3089 Fix comments and localized messages in SchemaHandler class

---
 opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java |   68 +++++++++++++++-------------------
 opendj-server-legacy/src/messages/org/opends/messages/config.properties      |   10 +++++
 2 files changed, 40 insertions(+), 38 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 813923e..28b89b2 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
@@ -15,6 +15,7 @@
  */
 package org.opends.server.core;
 
+import static org.opends.messages.ConfigMessages.WARN_CONFIG_SCHEMA_CANNOT_OPEN_FILE;
 import static org.opends.server.util.ServerConstants.SCHEMA_PROPERTY_FILENAME;
 import static org.opends.messages.ConfigMessages.WARN_CONFIG_CONFLICTING_DEFINITIONS_IN_SCHEMA_FILE;
 import static org.opends.messages.ConfigMessages.WARN_CONFIG_SCHEMA_CANNOT_PARSE_DEFINITIONS_IN_SCHEMA_FILE;
@@ -24,6 +25,7 @@
 import static org.opends.server.util.StaticUtils.*;
 
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.FilenameFilter;
 import java.io.IOException;
@@ -66,6 +68,7 @@
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.InitializationException;
 import org.opends.server.util.ActivateOnceSDKSchemaIsUsed;
+import org.opends.server.util.StaticUtils;
 
 /**
  * Responsible for loading the server schema.
@@ -129,7 +132,7 @@
     exclusiveLock.lock();
     try
     {
-      // Start from the core schema (TODO: or start with empty schema and add core schema in core schema provider ?)
+      // Start from the core schema
       final SchemaBuilder schemaBuilder = new SchemaBuilder(Schema.getCoreSchema());
 
       // Take providers into account.
@@ -140,9 +143,7 @@
 
       try
       {
-        // see RemoteSchemaLoader.readSchema() ==> why ??
-
-        // Add server specific syntaxes and matching rules
+        // Add server specific syntaxes and matching rules not provided by the SDK
         AciSyntax.addAciSyntax(schemaBuilder);
         SubtreeSpecificationSyntax.addSubtreeSpecificationSyntax(schemaBuilder);
         HistoricalCsnOrderingMatchingRuleImpl.addHistoricalCsnOrderingMatchingRule(schemaBuilder);
@@ -244,8 +245,7 @@
       }
       else if (name.equals(CORE_SCHEMA_PROVIDER_NAME))
       {
-        // TODO : use correct message ERR_CORE_SCHEMA_NOT_ENABLED
-        throw new ConfigException(LocalizableMessage.raw("Core Schema can't be disabled"));
+        throw new ConfigException(ERR_CONFIG_CORE_SCHEMA_PROVIDER_DISABLED.get(config.dn()));
       }
     }
   }
@@ -276,16 +276,14 @@
         if (!provider.isConfigurationAcceptable(config, unacceptableReasons))
         {
           final String reasons = Utils.joinAsString(".  ", unacceptableReasons);
-          // TODO : fix message, eg CONFIG SCHEMA PROVIDER CONFIG NOT ACCEPTABLE
-          throw new InitializationException(ERR_CONFIG_ALERTHANDLER_CONFIG_NOT_ACCEPTABLE.get(config.dn(), reasons));
+          throw new InitializationException(ERR_CONFIG_SCHEMA_PROVIDER_CONFIG_NOT_ACCEPTABLE.get(config.dn(), reasons));
         }
       }
       return provider;
     }
     catch (Exception e)
     {
-      // TODO : fix message
-      throw new InitializationException(ERR_CONFIG_SCHEMA_SYNTAX_CANNOT_INITIALIZE.get(
+      throw new InitializationException(ERR_CONFIG_SCHEMA_PROVIDER_CANT_BE_INITIALIZED.get(
           className, config.dn(), stackTraceToSingleLineString(e)), e);
     }
   }
@@ -324,10 +322,10 @@
       reader.setSchemaValidationPolicy(SchemaValidationPolicy.ignoreAll());
       return reader;
     }
-    catch (Exception e)
+    catch (FileNotFoundException e)
     {
-      // TODO : fix message
-      throw new InitializationException(ERR_CONFIG_FILE_CANNOT_OPEN_FOR_READ.get(ldifFile.getAbsolutePath(), e), e);
+      throw new InitializationException(WARN_CONFIG_SCHEMA_CANNOT_OPEN_FILE.get(ldifFile.getPath(),
+          ldifFile.getParent(), StaticUtils.getExceptionMessage(e)));
     }
   }
 
@@ -402,33 +400,26 @@
     }
   }
 
-  /** Returns the schema entry from the provided reader. */
+  /** Returns the schema entry from the provided reader, which may be {@code null} if file is empty. */
   private Entry readSchemaEntry(final EntryReader reader, final File schemaFile) throws InitializationException {
     try
     {
-      Entry entry = null;
+      if (!reader.hasNext())
+      {
+        // empty file, just skip it
+        return null;
+      }
+      Entry entry = reader.readEntry();
       if (reader.hasNext())
       {
-        entry = reader.readEntry();
-        if (reader.hasNext())
-        {
-          // TODO : fix message
-          logger.warn(WARN_CONFIG_SCHEMA_MULTIPLE_ENTRIES_IN_FILE, schemaFile, "");
-        }
-        return entry;
+        logger.warn(WARN_CONFIG_SCHEMA_MULTIPLE_ENTRIES_IN_FILE, schemaFile.getPath(), schemaFile.getParent());
       }
-      else
-      {
-        // TODO : fix message - should be SCHEMA NO LDIF ENTRY
-        throw new InitializationException(WARN_CONFIG_SCHEMA_CANNOT_READ_LDIF_ENTRY.get(
-            schemaFile, "", ""));
-      }
+      return entry;
     }
     catch (IOException e)
     {
-      // TODO : fix message
       throw new InitializationException(WARN_CONFIG_SCHEMA_CANNOT_READ_LDIF_ENTRY.get(
-              schemaFile, "", getExceptionMessage(e)), e);
+              schemaFile.getPath(), schemaFile.getParent(), getExceptionMessage(e)), e);
     }
     finally
     {
@@ -458,8 +449,11 @@
     {
       reader = getLDIFReader(schemaFile, readSchema);
       final Entry entry = readSchemaEntry(reader, schemaFile);
-      boolean failOnError = true;
-      updateSchemaBuilderWithEntry(schemaBuilder, entry, schemaFile.getName(), failOnError);
+      if (entry != null)
+      {
+        boolean failOnError = true;
+        updateSchemaBuilderWithEntry(schemaBuilder, entry, schemaFile.getName(), failOnError);
+      }
     }
     finally {
       Utils.closeSilently(reader);
@@ -482,22 +476,20 @@
     {
       if (!overwriteCoreSchemaDefinitions)
       {
-        // TODO: use correct message = warnings for schema file
-        logger.warn(WARN_CONFIG_CONFLICTING_DEFINITIONS_IN_SCHEMA_FILE, schemaFile, warnings);
+        logger.warn(WARN_CONFIG_SCHEMA_FILE_HAS_SCHEMA_WARNING, schemaFile, warnings);
         // try to update again with overwriting
         updateSchemaBuilderWithEntry0(schemaBuilder, schemaEntry, schemaFile, true);
         warnings = schemaBuilder.toSchema().getWarnings();
         if (!warnings.isEmpty())
         {
-          // TODO: use correct message: warnings for schema file with overwrite=true
-          reportSchemaWarnings(WARN_CONFIG_CONFLICTING_DEFINITIONS_IN_SCHEMA_FILE.get(schemaFile, warnings),
+          reportSchemaWarnings(WARN_CONFIG_SCHEMA_FILE_HAS_SCHEMA_WARNING_WITH_OVERWRITE.get(schemaFile, warnings),
               failOnError);
         }
       }
       else
       {
-        // TODO: use correct message: warnings for schema file with overwrite=true
-        reportSchemaWarnings(WARN_CONFIG_CONFLICTING_DEFINITIONS_IN_SCHEMA_FILE.get(schemaFile, warnings), failOnError);
+        reportSchemaWarnings(WARN_CONFIG_SCHEMA_FILE_HAS_SCHEMA_WARNING_WITH_OVERWRITE.get(schemaFile, warnings),
+            failOnError);
       }
     }
   }
diff --git a/opendj-server-legacy/src/messages/org/opends/messages/config.properties b/opendj-server-legacy/src/messages/org/opends/messages/config.properties
index dda7699..da5360a 100644
--- a/opendj-server-legacy/src/messages/org/opends/messages/config.properties
+++ b/opendj-server-legacy/src/messages/org/opends/messages/config.properties
@@ -853,3 +853,13 @@
  in %s: %s
 ERR_BAD_ADMIN_API_RESOURCE_VERSION_757=The requested admin API version '%s' is unsupported. This endpoint only \
   supports the following admin API version(s): %s
+ERR_CONFIG_SCHEMA_PROVIDER_CONFIG_NOT_ACCEPTABLE_758=The configuration of schema provider '%s' \
+ is not acceptable for the following reasons: %s
+ERR_CONFIG_SCHEMA_PROVIDER_CANT_BE_INITIALIZED_759=The schema provider class '%s' could not be \
+ instanciated or initialized with the configuration '%s' : %s
+ERR_CONFIG_CORE_SCHEMA_PROVIDER_DISABLED_760=The core schema provider defined by '%s' \
+ has been disabled. The core schema must alwasy be enabled.
+WARN_CONFIG_SCHEMA_FILE_HAS_SCHEMA_WARNING_761=The config schema file '%s' generates warning when \
+ trying to update schema with its content: %s
+WARN_CONFIG_SCHEMA_FILE_HAS_SCHEMA_WARNING_WITH_OVERWRITE_762=The config schema file '%s' generates warning when \
+ trying to update schema with its content, despite allowing to overwrite definitions: %s
\ No newline at end of file

--
Gitblit v1.10.0