From 5d1a7f43aa3104bd4047839897a65066c555f7a9 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Thu, 13 Feb 2014 13:00:25 +0000
Subject: [PATCH] Checkpoint commit for OPENDJ-1288 :    Migrate I18n and logging support to i18n framework and SLF4J

---
 opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java                  |   16 ++--
 opendj3-server-dev/tests/unit-tests-testng/resource/config-changes.ldif                    |    2 
 opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java |    3 
 opendj3-server-dev/src/server/org/opends/server/tools/BackUpDB.java                        |    7 --
 opendj3-server-dev/src/server/org/opends/server/tools/RebuildIndex.java                    |    7 --
 opendj3-server-dev/src/server/org/opends/server/loggers/DebugLogger.java                   |   44 ++++++++++++++
 opendj3-server-dev/src/server/org/opends/server/tools/ExportLDIF.java                      |    8 --
 opendj3-server-dev/src/server/org/opends/server/tools/RestoreDB.java                       |   10 --
 opendj3-server-dev/src/server/org/opends/server/loggers/TextDebugLogPublisher.java         |   60 ++++++++-----------
 9 files changed, 85 insertions(+), 72 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java b/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
index 542e885..37c260e 100644
--- a/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
@@ -74,8 +74,6 @@
 import org.opends.server.extensions.ConfigFileHandler;
 import org.opends.server.extensions.JMXAlertHandler;
 import org.opends.server.loggers.*;
-import org.opends.server.loggers.DebugLogPublisher;
-import org.opends.server.loggers.ErrorLogPublisher;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.opends.server.monitors.BackendMonitor;
 import org.opends.server.monitors.ConnectionHandlerMonitor;
@@ -87,11 +85,13 @@
 import org.opends.server.util.*;
 import org.forgerock.util.Reject;
 import org.forgerock.util.Utils;
+
 import com.forgerock.opendj.cli.ArgumentException;
 import com.forgerock.opendj.cli.ArgumentParser;
 import com.forgerock.opendj.cli.BooleanArgument;
 import com.forgerock.opendj.cli.IntegerArgument;
 import com.forgerock.opendj.cli.StringArgument;
+
 import org.opends.server.workflowelement.WorkflowElement;
 import org.opends.server.workflowelement.WorkflowElementConfigManager;
 import org.opends.server.workflowelement.localbackend.*;
@@ -9188,14 +9188,11 @@
     // Install the default loggers so the startup messages
     // will be printed.
     ErrorLogPublisher startupErrorLogPublisher =
-        TextErrorLogPublisher.getServerStartupTextErrorPublisher(
-            new TextWriter.STDOUT());
+        TextErrorLogPublisher.getServerStartupTextErrorPublisher(new TextWriter.STDOUT());
     ErrorLogger.getInstance().addLogPublisher(startupErrorLogPublisher);
 
     DebugLogPublisher startupDebugLogPublisher =
-        TextDebugLogPublisher.getStartupTextDebugPublisher(new TextWriter.STDOUT());
-    DebugLogger.getInstance().addLogPublisher(startupDebugLogPublisher);
-
+        DebugLogger.getInstance().addPublisherIfRequired(new TextWriter.STDOUT());
 
     // Create an environment configuration for the server and populate a number
     // of appropriate properties.
@@ -9269,7 +9266,10 @@
     }
 
     ErrorLogger.getInstance().removeLogPublisher(startupErrorLogPublisher);
-    DebugLogger.getInstance().removeLogPublisher(startupDebugLogPublisher);
+    if (startupDebugLogPublisher != null)
+    {
+      DebugLogger.getInstance().removeLogPublisher(startupDebugLogPublisher);
+    }
   }
 
   /**
diff --git a/opendj3-server-dev/src/server/org/opends/server/loggers/DebugLogger.java b/opendj3-server-dev/src/server/org/opends/server/loggers/DebugLogger.java
index 4d343df..78311a6 100644
--- a/opendj3-server-dev/src/server/org/opends/server/loggers/DebugLogger.java
+++ b/opendj3-server-dev/src/server/org/opends/server/loggers/DebugLogger.java
@@ -27,8 +27,11 @@
 package org.opends.server.loggers;
 
 import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.ServerConstants.*;
 
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -149,6 +152,47 @@
     return tracer;
   }
 
+  /**
+   * Adds a text debug log publisher that will print all messages to the
+   * provided writer, based on debug target(s) defined through system
+   * properties.
+   * <p>
+   * It is expected that one or more system properties beginning with
+   * {@code PROPERTY_DEBUG_TARGET} are set to define the properties of the debug
+   * targets used by the publisher, otherwise no publisher is added.
+   *
+   * @param writer
+   *          The text writer where the message will be written to.
+   * @return the publisher. It may be {@code null} if no publisher is added.
+   */
+  @SuppressWarnings({ "unchecked", "rawtypes" })
+  public final TextDebugLogPublisher addPublisherIfRequired(TextWriter writer)
+  {
+    final List<String> debugTargets = getDebugTargetsFromSystemProperties();
+    TextDebugLogPublisher publisher = null;
+    if (!debugTargets.isEmpty())
+    {
+      publisher = TextDebugLogPublisher.getStartupTextDebugPublisher(debugTargets, writer);
+      if (publisher != null) {
+        addLogPublisher((DebugLogPublisher) publisher);
+      }
+    }
+    return publisher;
+  }
+
+  private List<String> getDebugTargetsFromSystemProperties()
+  {
+    final List<String> targets = new ArrayList<String>();
+    for (Map.Entry<Object, Object> entry : System.getProperties().entrySet())
+    {
+      if (((String) entry.getKey()).startsWith(PROPERTY_DEBUG_TARGET))
+      {
+        targets.add((String)entry.getValue());
+      }
+    }
+    return targets;
+  }
+
   /** {@inheritDoc} */
   @Override
   public final synchronized void addLogPublisher(
diff --git a/opendj3-server-dev/src/server/org/opends/server/loggers/TextDebugLogPublisher.java b/opendj3-server-dev/src/server/org/opends/server/loggers/TextDebugLogPublisher.java
index bed74b6..d51cebd 100644
--- a/opendj3-server-dev/src/server/org/opends/server/loggers/TextDebugLogPublisher.java
+++ b/opendj3-server-dev/src/server/org/opends/server/loggers/TextDebugLogPublisher.java
@@ -31,7 +31,6 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.opends.server.admin.server.ConfigurationAddListener;
@@ -52,7 +51,6 @@
 import org.opends.server.util.TimeThread;
 
 import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.*;
 
 /**
@@ -73,46 +71,39 @@
   private FileBasedDebugLogPublisherCfg currentConfig;
 
   /**
-   * Returns an instance of the text debug log publisher that will print
-   * all messages to the provided writer. This is used to print the messages
-   * to the console when the server starts up. By default, only error level
-   * messages are printed. Special debug targets are also parsed from
-   * system properties if any are specified.
+   * Returns an instance of the text debug log publisher that will print all
+   * messages to the provided writer, based on the provided debug targets.
    *
-   * @param writer The text writer where the message will be written to.
-   * @return The instance of the text error log publisher that will print
-   * all messages to standard out.
+   * @param debugTargets
+   *          The targets defining which and how debug events are logged.
+   * @param writer
+   *          The text writer where the message will be written to.
+   * @return The instance of the text error log publisher that will print all
+   *         messages to standard out. May be {@code null} if no debug target is
+   *         valid.
    */
-  public static TextDebugLogPublisher
-      getStartupTextDebugPublisher(TextWriter writer)
+  static TextDebugLogPublisher getStartupTextDebugPublisher(List<String> debugTargets, TextWriter writer)
   {
-    TextDebugLogPublisher startupPublisher = new TextDebugLogPublisher();
-    startupPublisher.writer = writer;
-
-    Set<Map.Entry<Object, Object>> propertyEntries =
-        System.getProperties().entrySet();
-    for(Map.Entry<Object, Object> entry : propertyEntries)
+    TextDebugLogPublisher startupPublisher = null;
+    for (String value : debugTargets)
     {
-      if(((String)entry.getKey()).startsWith(PROPERTY_DEBUG_TARGET))
-      {
-        String value = (String)entry.getValue();
-        int settingsStart= value.indexOf(":");
+      int settingsStart = value.indexOf(":");
 
-        //See if the scope and settings exists
-        if(settingsStart > 0)
+      //See if the scope and settings exists
+      if (settingsStart > 0)
+      {
+        String scope = value.substring(0, settingsStart);
+        TraceSettings settings = TraceSettings.parseTraceSettings(value.substring(settingsStart + 1));
+        if (settings != null)
         {
-          String scope = value.substring(0, settingsStart);
-          TraceSettings settings =
-              TraceSettings.parseTraceSettings(
-                  value.substring(settingsStart+1));
-          if(settings != null)
-          {
-            startupPublisher.addTraceSettings(scope, settings);
+          if (startupPublisher == null) {
+            startupPublisher = new TextDebugLogPublisher();
+            startupPublisher.writer = writer;
           }
+          startupPublisher.addTraceSettings(scope, settings);
         }
       }
     }
-
     return startupPublisher;
   }
 
@@ -342,9 +333,8 @@
 
   private TraceSettings getDefaultSettings(FileBasedDebugLogPublisherCfg config)
   {
-    return new TraceSettings(TraceSettings.Level.getLevel(
-        false,
-        config.isDefaultDebugExceptionsOnly()),
+    return new TraceSettings(
+        TraceSettings.Level.getLevel(true, config.isDefaultDebugExceptionsOnly()),
         config.isDefaultOmitMethodEntryArguments(),
         config.isDefaultOmitMethodReturnValue(),
         config.getDefaultThrowableStackFrames(),
diff --git a/opendj3-server-dev/src/server/org/opends/server/tools/BackUpDB.java b/opendj3-server-dev/src/server/org/opends/server/tools/BackUpDB.java
index 3b175df..f256582 100644
--- a/opendj3-server-dev/src/server/org/opends/server/tools/BackUpDB.java
+++ b/opendj3-server-dev/src/server/org/opends/server/tools/BackUpDB.java
@@ -48,12 +48,10 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.LockFileManager;
 import org.opends.server.extensions.ConfigFileHandler;
-import org.opends.server.loggers.DebugLogPublisher;
 import org.opends.server.loggers.DebugLogger;
 import org.opends.server.loggers.ErrorLogPublisher;
 import org.opends.server.loggers.ErrorLogger;
 import org.opends.server.loggers.JDKLogging;
-import org.opends.server.loggers.TextDebugLogPublisher;
 import org.opends.server.loggers.TextErrorLogPublisher;
 import org.opends.server.loggers.TextWriter;
 import org.opends.server.protocols.ldap.LDAPAttribute;
@@ -724,11 +722,8 @@
         ErrorLogPublisher errorLogPublisher =
             TextErrorLogPublisher.getToolStartupTextErrorPublisher(
             new TextWriter.STREAM(out));
-        DebugLogPublisher debugLogPublisher =
-            TextDebugLogPublisher.getStartupTextDebugPublisher(
-            new TextWriter.STREAM(out));
         ErrorLogger.getInstance().addLogPublisher(errorLogPublisher);
-        DebugLogger.getInstance().addLogPublisher(debugLogPublisher);
+        DebugLogger.getInstance().addPublisherIfRequired(new TextWriter.STREAM(out));
       }
       catch(Exception e)
       {
diff --git a/opendj3-server-dev/src/server/org/opends/server/tools/ExportLDIF.java b/opendj3-server-dev/src/server/org/opends/server/tools/ExportLDIF.java
index c2e401e..5e015ce 100644
--- a/opendj3-server-dev/src/server/org/opends/server/tools/ExportLDIF.java
+++ b/opendj3-server-dev/src/server/org/opends/server/tools/ExportLDIF.java
@@ -45,11 +45,9 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.LockFileManager;
 import org.opends.server.extensions.ConfigFileHandler;
-import org.opends.server.loggers.DebugLogPublisher;
 import org.opends.server.loggers.DebugLogger;
 import org.opends.server.loggers.ErrorLogPublisher;
 import org.opends.server.loggers.JDKLogging;
-import org.opends.server.loggers.TextDebugLogPublisher;
 import org.opends.server.loggers.TextWriter;
 import org.opends.server.loggers.TextErrorLogPublisher;
 import org.opends.server.loggers.ErrorLogger;
@@ -639,11 +637,9 @@
         ErrorLogPublisher errorLogPublisher =
             TextErrorLogPublisher.getToolStartupTextErrorPublisher(
             new TextWriter.STREAM(out));
-        DebugLogPublisher debugLogPublisher =
-            TextDebugLogPublisher.getStartupTextDebugPublisher(
-            new TextWriter.STREAM(out));
         ErrorLogger.getInstance().addLogPublisher(errorLogPublisher);
-        DebugLogger.getInstance().addLogPublisher(debugLogPublisher);
+
+        DebugLogger.getInstance().addPublisherIfRequired(new TextWriter.STREAM(out));
       }
       catch(Exception e)
       {
diff --git a/opendj3-server-dev/src/server/org/opends/server/tools/RebuildIndex.java b/opendj3-server-dev/src/server/org/opends/server/tools/RebuildIndex.java
index 8070803..56bbb53 100644
--- a/opendj3-server-dev/src/server/org/opends/server/tools/RebuildIndex.java
+++ b/opendj3-server-dev/src/server/org/opends/server/tools/RebuildIndex.java
@@ -44,11 +44,9 @@
 import org.opends.server.util.args.LDAPConnectionArgumentParser;
 import org.opends.server.extensions.ConfigFileHandler;
 import org.opends.server.config.ConfigException;
-import org.opends.server.loggers.DebugLogPublisher;
 import org.opends.server.loggers.DebugLogger;
 import org.opends.server.loggers.ErrorLogPublisher;
 import org.opends.server.loggers.JDKLogging;
-import org.opends.server.loggers.TextDebugLogPublisher;
 import org.opends.server.loggers.TextWriter;
 import org.opends.server.loggers.ErrorLogger;
 import org.opends.server.loggers.TextErrorLogPublisher;
@@ -407,11 +405,8 @@
       final ErrorLogPublisher errorLogPublisher =
           TextErrorLogPublisher
               .getToolStartupTextErrorPublisher(new TextWriter.STREAM(out));
-      final DebugLogPublisher debugLogPublisher =
-          TextDebugLogPublisher
-              .getStartupTextDebugPublisher(new TextWriter.STREAM(out));
       ErrorLogger.getInstance().addLogPublisher(errorLogPublisher);
-      DebugLogger.getInstance().addLogPublisher(debugLogPublisher);
+      DebugLogger.getInstance().addPublisherIfRequired(new TextWriter.STREAM(out));
     }
     catch (Exception e)
     {
diff --git a/opendj3-server-dev/src/server/org/opends/server/tools/RestoreDB.java b/opendj3-server-dev/src/server/org/opends/server/tools/RestoreDB.java
index be1e307..15fe93f 100644
--- a/opendj3-server-dev/src/server/org/opends/server/tools/RestoreDB.java
+++ b/opendj3-server-dev/src/server/org/opends/server/tools/RestoreDB.java
@@ -47,11 +47,9 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.LockFileManager;
 import org.opends.server.extensions.ConfigFileHandler;
-import org.opends.server.loggers.DebugLogPublisher;
 import org.opends.server.loggers.DebugLogger;
 import org.opends.server.loggers.ErrorLogPublisher;
 import org.opends.server.loggers.JDKLogging;
-import org.opends.server.loggers.TextDebugLogPublisher;
 import org.opends.server.loggers.TextWriter;
 import org.opends.server.loggers.ErrorLogger;
 import org.opends.server.loggers.TextErrorLogPublisher;
@@ -468,13 +466,9 @@
       try
       {
         ErrorLogPublisher errorLogPublisher =
-            TextErrorLogPublisher.getToolStartupTextErrorPublisher(
-            new TextWriter.STREAM(out));
-        DebugLogPublisher debugLogPublisher =
-            TextDebugLogPublisher.getStartupTextDebugPublisher(
-            new TextWriter.STREAM(out));
+            TextErrorLogPublisher.getToolStartupTextErrorPublisher(new TextWriter.STREAM(out));
         ErrorLogger.getInstance().addLogPublisher(errorLogPublisher);
-        DebugLogger.getInstance().addLogPublisher(debugLogPublisher);
+        DebugLogger.getInstance().addPublisherIfRequired(new TextWriter.STREAM(out));
       }
       catch(Exception e)
       {
diff --git a/opendj3-server-dev/tests/unit-tests-testng/resource/config-changes.ldif b/opendj3-server-dev/tests/unit-tests-testng/resource/config-changes.ldif
index 0a8882c..af8798f 100644
--- a/opendj3-server-dev/tests/unit-tests-testng/resource/config-changes.ldif
+++ b/opendj3-server-dev/tests/unit-tests-testng/resource/config-changes.ldif
@@ -1434,7 +1434,7 @@
 dn: cn=File-Based Debug Logger,cn=Loggers,cn=config
 changetype: modify
 replace: ds-cfg-enabled
-ds-cfg-enabled: true
+ds-cfg-enabled: false
 -
 replace: ds-cfg-default-include-throwable-cause
 ds-cfg-default-include-throwable-cause: true
diff --git a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
index b561add..77577c4 100644
--- a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
+++ b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
@@ -475,8 +475,7 @@
       ErrorLogger.getInstance().addLogPublisher(
             (ErrorLogPublisher) TextErrorLogPublisher.getToolStartupTextErrorPublisher(ERROR_TEXT_WRITER));
 
-      DebugLogger.getInstance().addLogPublisher(
-            (DebugLogPublisher) TextDebugLogPublisher.getStartupTextDebugPublisher(DEBUG_TEXT_WRITER));
+      DebugLogger.getInstance().addPublisherIfRequired(DEBUG_TEXT_WRITER);
 
       // Writing the buildinfo with the current version.
       final FileWriter buildInfoWriter = new FileWriter (new File(testConfigDir, "buildinfo"));

--
Gitblit v1.10.0