From 530d5906228862ee2d8a26e451cac47b287073f0 Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Wed, 23 Mar 2016 16:54:44 +0000
Subject: [PATCH] OPENDJ-2765 Make upgrade less verbose

---
 opendj-server-legacy/src/main/java/org/opends/server/tools/RebuildIndex.java   |    4 +-
 opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskTool.java |    3 -
 opendj-server-legacy/src/main/java/org/opends/server/loggers/JDKLogging.java   |   59 +++++++++++++++++++++++++++--
 opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPConnection.java |    5 +-
 opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java    |    3 -
 5 files changed, 60 insertions(+), 14 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/loggers/JDKLogging.java b/opendj-server-legacy/src/main/java/org/opends/server/loggers/JDKLogging.java
index c5fdcdc..e51d838 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/loggers/JDKLogging.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/loggers/JDKLogging.java
@@ -11,10 +11,11 @@
  * Header, with the fields enclosed by brackets [] replaced by your own identifying
  * information: "Portions Copyright [year] [name of copyright owner]".
  *
- * Copyright 2014-2015 ForgeRock AS.
+ * Copyright 2014-2016 ForgeRock AS.
  */
 package org.opends.server.loggers;
 
+import java.io.PrintStream;
 import java.util.logging.ErrorManager;
 import java.util.logging.Formatter;
 import java.util.logging.Handler;
@@ -43,14 +44,53 @@
 
   /**
    * Enable JDK logging to stderr at provided level for OpenDJ classes.
+   * <p>
+   * Error and warning messages will be printed on stderr, other messages will be printed on stdout.
+   */
+  public static void enableVerboseConsoleLoggingForOpenDJ()
+  {
+    enableConsoleLoggingForOpenDJ(Level.ALL, System.out, System.err);
+  }
+
+  /**
+   * Enable JDK logging for OpenDJ tool.
+   * <p>
+   * Error and warning messages will be printed on stderr, other messages will be printed on stdout.
+   * This method should only be used by external tool classes.
+   */
+  public static void enableConsoleLoggingForOpenDJTool()
+  {
+    enableConsoleLoggingForOpenDJ(Level.FINE, System.out, System.err);
+  }
+
+  /**
+   * Enable JDK logging in provided {@link PrintStream} for OpenDJ tool.
+   * <p>
+   * All messages will be printed on the provided {@link PrintStream}.
+   * This method should only be used by external tool classes.
+   *
+   * @param stream
+   *          The stream to use to print messages.
+   */
+  public static void enableLoggingForOpenDJTool(final PrintStream stream)
+  {
+    enableConsoleLoggingForOpenDJ(Level.FINE, stream, stream);
+  }
+
+  /**
+   * Enable JDK logging at provided {@link Level} in provided {@link PrintStream} for OpenDJ classes.
    *
    * @param level
    *          The level to log.
+   * @param out
+   *          The stream to use to print messages from {@link Level#FINEST} and {@link Level#INFO} included.
+   * @param err
+   *          The stream to use to print {@link Level#SEVERE} and {@link Level#WARNING} messages.
    */
-  public static void enableConsoleLoggingForOpenDJ(Level level)
+  private static void enableConsoleLoggingForOpenDJ(final Level level, final PrintStream out, final PrintStream err)
   {
     LogManager.getLogManager().reset();
-    Handler handler = new OpenDJHandler();
+    Handler handler = new OpenDJHandler(out, err);
     handler.setFormatter(getFormatter());
     handler.setLevel(level);
     for (String loggingRoot : LOGGING_ROOTS)
@@ -66,6 +106,15 @@
    */
   private static final class OpenDJHandler extends Handler
   {
+    private final PrintStream out;
+    private final PrintStream err;
+
+    private OpenDJHandler(final PrintStream out, final PrintStream err)
+    {
+      this.out = out;
+      this.err = err;
+    }
+
     @Override
     public void publish(LogRecord record)
     {
@@ -79,11 +128,11 @@
         String message = getFormatter().format(record);
         if (record.getLevel().intValue() >= Level.WARNING.intValue())
         {
-          System.err.write(message.getBytes());
+          err.write(message.getBytes());
         }
         else
         {
-          System.out.write(message.getBytes());
+          out.write(message.getBytes());
         }
       }
       catch (Exception exception)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPConnection.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPConnection.java
index 100b3c8..d30f891 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPConnection.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPConnection.java
@@ -12,7 +12,7 @@
  * information: "Portions Copyright [year] [name of copyright owner]".
  *
  * Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2015 ForgeRock AS.
+ * Portions Copyright 2013-2016 ForgeRock AS.
  */
 package org.opends.server.tools;
 import java.io.IOException;
@@ -24,7 +24,6 @@
 import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.logging.Level;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.opends.server.controls.AuthorizationIdentityResponseControl;
@@ -174,7 +173,7 @@
 
     if (connectionOptions.isVerbose())
     {
-      JDKLogging.enableConsoleLoggingForOpenDJ(Level.ALL);
+      JDKLogging.enableVerboseConsoleLoggingForOpenDJ();
     }
     else
     {
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/RebuildIndex.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/RebuildIndex.java
index 5b59d6f..9b6d17b8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/RebuildIndex.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/RebuildIndex.java
@@ -28,7 +28,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.logging.Level;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageDescriptor.Arg1;
@@ -134,7 +133,7 @@
   {
     final PrintStream out = NullOutputStream.wrapOrNullStream(outStream);
     final PrintStream err = NullOutputStream.wrapOrNullStream(errStream);
-    JDKLogging.enableConsoleLoggingForOpenDJ(Level.FINE);
+    JDKLogging.enableConsoleLoggingForOpenDJTool();
 
     // Initialize all the command-line argument types and register them with the
     // parser.
@@ -648,6 +647,7 @@
   public int rebuildIndexesWithinMultipleBackends(
       final boolean initializeServer, final PrintStream out, final Collection<String> args)
   {
+    JDKLogging.enableLoggingForOpenDJTool(out);
     try
     {
       setErrorAndDebugLogPublisher(out, out);
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java
index 4f14736..8e42c07 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java
@@ -27,7 +27,6 @@
 import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.logging.Level;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.config.server.ConfigException;
@@ -92,7 +91,7 @@
                                     OutputStream errStream)
   {
     PrintStream err = NullOutputStream.wrapOrNullStream(errStream);
-    JDKLogging.enableConsoleLoggingForOpenDJ(Level.FINE);
+    JDKLogging.enableConsoleLoggingForOpenDJTool();
 
     // Define the command-line arguments that may be used with this program.
     StringArgument  configClass             = null;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskTool.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskTool.java
index 87599b8..afddab6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskTool.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskTool.java
@@ -29,7 +29,6 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.logging.Level;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.ldap.DecodeException;
@@ -178,7 +177,7 @@
     else
     {
       // server is offline => output logs to the console
-      JDKLogging.enableConsoleLoggingForOpenDJ(Level.FINE);
+      JDKLogging.enableConsoleLoggingForOpenDJTool();
       taskScheduleArgs.validateArgsIfOffline();
     }
   }

--
Gitblit v1.10.0