From eebe112fb9a05226379250e0773a43b219be18da Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Wed, 02 May 2007 19:22:13 +0000
Subject: [PATCH] mproves the amount of logging that is done in quicksetup applications.  Much of what was simply relayed to the user as progress messages is not logged also.

---
 opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java |  214 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 126 insertions(+), 88 deletions(-)

diff --git a/opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java b/opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java
index 3a19f43..b6e4ab1 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java
@@ -28,12 +28,15 @@
 package org.opends.quicksetup.util;
 
 import org.opends.quicksetup.*;
+import org.opends.quicksetup.i18n.ResourceProvider;
 import org.opends.quicksetup.installer.InstallerHelper;
 
 import javax.naming.NamingException;
 import java.util.ArrayList;
 import java.util.Map;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.io.IOException;
@@ -43,6 +46,9 @@
  */
 public class ServerController {
 
+  static private final Logger LOG =
+          Logger.getLogger(ServerController.class.getName());
+
   private Application application;
 
   private Installation installation;
@@ -57,15 +63,21 @@
   }
 
   /**
+   * Creates a new instance that will operate on <code>application</code>'s
+   * installation.
+   * @param installation representing the server instance to control
+   */
+  public ServerController(Installation installation) {
+    this(null, installation);
+  }
+
+  /**
    * Creates a new instance that will operate on <code>installation</code>
    * and use <code>application</code> for notifications.
    * @param application to use for notifications
    * @param installation representing the server instance to control
    */
   public ServerController(Application application, Installation installation) {
-    if (application == null) {
-      throw new NullPointerException("application cannot be null");
-    }
     if (installation == null) {
       throw new NullPointerException("installation cannot be null");
     }
@@ -79,10 +91,13 @@
    * @throws org.opends.quicksetup.ApplicationException if something goes wrong.
    */
   public void stopServer() throws ApplicationException {
-    application.notifyListeners(
-            application.getFormattedProgress(
-                    application.getMsg("progress-stopping")) +
-                    application.getLineBreak());
+    if (application != null) {
+      application.notifyListeners(
+              application.getFormattedProgress(
+                      application.getMsg("progress-stopping")) +
+                      application.getLineBreak());
+    }
+    LOG.log(Level.INFO, "stopping server");
 
     ArrayList<String> argList = new ArrayList<String>();
     argList.add(Utils.getPath(installation.getServerStopCommandFile()));
@@ -131,11 +146,15 @@
             stopped = !CurrentInstallStatus.isServerRunning(
                     installation.getLocksDirectory());
             if (!stopped) {
-              String msg =
-                      application.getFormattedLog(
-                        application.getMsg("progress-server-waiting-to-stop")) +
-                        application.getLineBreak();
-              application.notifyListeners(msg);
+              if (application != null) {
+                String msg =
+                        application.getFormattedLog(
+                                application.getMsg(
+                                        "progress-server-waiting-to-stop")) +
+                                application.getLineBreak();
+                application.notifyListeners(msg);
+              }
+              LOG.log(Level.FINE, "waiting for server to stop");
               try {
                 Thread.sleep(5000);
               }
@@ -151,36 +170,38 @@
       }
 
       if (returnValue == clientSideError) {
-        String msg = application.getLineBreak() +
-                application.getFormattedLog(
-                        application.getMsg("progress-server-already-stopped")) +
-                    application.getLineBreak();
-        application.notifyListeners(msg);
+        if (application != null) {
+          String msg = application.getLineBreak() +
+                  application.getFormattedLog(
+                          application.getMsg(
+                                  "progress-server-already-stopped")) +
+                  application.getLineBreak();
+          application.notifyListeners(msg);
+        }
+        LOG.log(Level.INFO, "server already stopped");
 
       } else if (returnValue != 0) {
-        String[] arg = {String.valueOf(returnValue)};
-        String msg = application.getMsg("error-stopping-server-code", arg);
-
         /*
          * The return code is not the one expected, assume the server could
          * not be stopped.
          */
         throw new ApplicationException(ApplicationException.Type.STOP_ERROR,
-                msg,
+                ResourceProvider.getInstance().getMsg(
+                        "error-stopping-server-code",
+                        String.valueOf(returnValue)),
                 null);
       } else {
-        String msg = application.getFormattedLog(
-                application.getMsg("progress-server-stopped"));
-        application.notifyListeners(msg);
+        if (application != null) {
+          String msg = application.getFormattedLog(
+                  application.getMsg("progress-server-stopped"));
+          application.notifyListeners(msg);
+        }
+        LOG.log(Level.INFO, "server stopped");
       }
 
-    } catch (IOException ioe) {
+    } catch (Exception e) {
       throw new ApplicationException(ApplicationException.Type.STOP_ERROR,
-              application.getThrowableMsg("error-stopping-server", ioe), ioe);
-    }
-    catch (InterruptedException ie) {
-      throw new ApplicationException(ApplicationException.Type.BUG,
-              application.getThrowableMsg("error-stopping-server", ie), ie);
+              getThrowableMsg("error-stopping-server", e), e);
     }
   }
 
@@ -245,10 +266,13 @@
           throws ApplicationException
   {
     OperationOutput output = new OperationOutput();
-    application.notifyListeners(
-            application.getFormattedProgress(
-                    application.getMsg("progress-starting")) +
-        application.getLineBreak());
+    if (application != null) {
+      application.notifyListeners(
+              application.getFormattedProgress(
+                      application.getMsg("progress-starting")) +
+          application.getLineBreak());
+    }
+    LOG.log(Level.INFO, "starting server");
 
     ArrayList<String> argList = new ArrayList<String>();
     argList.add(Utils.getPath(installation.getServerStartCommandFile()));
@@ -331,15 +355,18 @@
          * Try 5 times with an interval of 1 second between try.
          */
         boolean connected = false;
-        Configuration config =
-                application.getInstallation().getCurrentConfiguration();
+        Configuration config = installation.getCurrentConfiguration();
         int port = config.getPort();
         String ldapUrl = "ldap://localhost:" + port;
 
         // See if the application has prompted for credentials.  If
         // not we'll just try to connect anonymously.
-        String userDn = application.getUserData().getDirectoryManagerDn();
-        String userPw = application.getUserData().getDirectoryManagerPwd();
+        String userDn = null;
+        String userPw = null;
+        if (application != null) {
+          userDn = application.getUserData().getDirectoryManagerDn();
+          userPw = application.getUserData().getDirectoryManagerPwd();
+        }
         if (userDn == null || userPw == null) {
           userDn = null;
           userPw = null;
@@ -370,20 +397,21 @@
         }
         if (!connected)
         {
-          String[] arg = {String.valueOf(port)};
           if (Utils.isWindows())
           {
-
             throw new ApplicationException(
                 ApplicationException.Type.START_ERROR,
-                application.getMsg("error-starting-server-in-windows", arg),
+                    getMsg("error-starting-server-in-windows",
+                            String.valueOf(port)),
                     null);
           }
           else
           {
             throw new ApplicationException(
                 ApplicationException.Type.START_ERROR,
-                application.getMsg("error-starting-server-in-unix", arg), null);
+                    getMsg("error-starting-server-in-unix",
+                            String.valueOf(port)),
+                    null);
           }
         }
       }
@@ -391,7 +419,8 @@
     } catch (IOException ioe)
     {
       throw new ApplicationException(ApplicationException.Type.START_ERROR,
-          application.getThrowableMsg("error-starting-server", ioe), ioe);
+              getThrowableMsg("error-starting-server", ioe),
+              ioe);
     }
     return output;
   }
@@ -421,7 +450,7 @@
     directoryServer.bootstrapServer();
     String configClass = "org.opends.server.extensions.ConfigFileHandler";
     String configPath = Utils.getPath(
-            application.getInstallation().getCurrentConfigurationFile());
+            installation.getCurrentConfigurationFile());
     directoryServer.initializeConfiguration(configClass, configPath);
     directoryServer.startServer();
   }
@@ -444,39 +473,40 @@
      * @param isError a boolean indicating whether the BufferedReader
      *        corresponds to the standard error or to the standard output.
      */
-    public StopReader(final BufferedReader reader, final boolean isError) {
+    public StopReader(final BufferedReader reader,
+                                      final boolean isError) {
       final String errorTag =
               isError ? "error-reading-erroroutput" : "error-reading-output";
 
       isFirstLine = true;
-
       Thread t = new Thread(new Runnable() {
         public void run() {
           try {
             String line = reader.readLine();
             while (line != null) {
-              StringBuilder buf = new StringBuilder();
-              if (!isFirstLine) {
-                buf.append(application.getProgressMessageFormatter().
-                        getLineBreak());
+              if (application != null) {
+                StringBuilder buf = new StringBuilder();
+                if (!isFirstLine) {
+                  buf.append(application.getProgressMessageFormatter().
+                          getLineBreak());
+                }
+                if (isError) {
+                  buf.append(application.getFormattedLogError(line));
+                } else {
+                  buf.append(application.getFormattedLog(line));
+                }
+                application.notifyListeners(buf.toString());
+                isFirstLine = false;
               }
-              if (isError) {
-                buf.append(application.getFormattedLogError(line));
-              } else {
-                buf.append(application.getFormattedLog(line));
-              }
-              application.notifyListeners(buf.toString());
-              isFirstLine = false;
-
+              LOG.log(Level.INFO, "server: " + line);
               line = reader.readLine();
             }
-          } catch (IOException ioe) {
-            String errorMsg = application.getThrowableMsg(errorTag, ioe);
-            application.notifyListeners(errorMsg);
-
           } catch (Throwable t) {
-            String errorMsg = application.getThrowableMsg(errorTag, t);
-            application.notifyListeners(errorMsg);
+            if (application != null) {
+              String errorMsg = application.getThrowableMsg(errorTag, t);
+              application.notifyListeners(errorMsg);
+            }
+            LOG.log(Level.INFO, "error reading server messages",t);
           }
         }
       });
@@ -537,22 +567,24 @@
             String line = reader.readLine();
             while (line != null)
             {
-              StringBuffer buf = new StringBuffer();
-              if (!isFirstLine)
-              {
-                buf.append(application.getProgressMessageFormatter().
-                        getLineBreak());
+              if (application != null) {
+                StringBuffer buf = new StringBuffer();
+                if (!isFirstLine)
+                {
+                  buf.append(application.getProgressMessageFormatter().
+                          getLineBreak());
+                }
+                if (isError)
+                {
+                  buf.append(application.getFormattedLogError(line));
+                } else
+                {
+                  buf.append(application.getFormattedLog(line));
+                }
+                application.notifyListeners(buf.toString());
+                isFirstLine = false;
               }
-              if (isError)
-              {
-                buf.append(application.getFormattedLogError(line));
-              } else
-              {
-                buf.append(application.getFormattedLog(line));
-              }
-              application.notifyListeners(buf.toString());
-              isFirstLine = false;
-
+              LOG.log(Level.INFO, "server: " + line);
               if (line.indexOf("id=" + startedId) != -1)
               {
                 isFinished = true;
@@ -569,19 +601,12 @@
 
               line = reader.readLine();
             }
-          } catch (IOException ioe)
-          {
-            String errorMsg = application.getThrowableMsg(errorTag, ioe);
-            ex =
-                new ApplicationException(ApplicationException.Type.START_ERROR,
-                    errorMsg, ioe);
-
           } catch (Throwable t)
           {
-            String errorMsg = application.getThrowableMsg(errorTag, t);
             ex =
                 new ApplicationException(ApplicationException.Type.START_ERROR,
-                    errorMsg, t);
+                    getThrowableMsg(errorTag, t), t);
+
           }
           isFinished = true;
         }
@@ -616,4 +641,17 @@
     }
   }
 
+  private String getMsg(String key) {
+    return ResourceProvider.getInstance().getMsg(key);
+  }
+
+  private String getMsg(String key, String... args) {
+    return ResourceProvider.getInstance().getMsg(key, args);
+  }
+
+  private String getThrowableMsg(String key, Throwable t) {
+    return Utils.getThrowableMsg(ResourceProvider.getInstance(),
+            key, null, t);
+  }
+
 }

--
Gitblit v1.10.0