From dc0e2b558a3a3a9832e5065b8c10daa04f9c6203 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 21 Oct 2009 22:00:15 +0000
Subject: [PATCH] Fix for issue 4310 (dsreplication status - Unexpected error reading replica ID: NumberFormatException)

---
 opends/src/server/org/opends/server/tools/dsreplication/ReplicationCliMain.java |   87 +++++++++++++++++++++++++++++++------------
 1 files changed, 63 insertions(+), 24 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/dsreplication/ReplicationCliMain.java b/opends/src/server/org/opends/server/tools/dsreplication/ReplicationCliMain.java
index 4c132f6..9bacced 100644
--- a/opends/src/server/org/opends/server/tools/dsreplication/ReplicationCliMain.java
+++ b/opends/src/server/org/opends/server/tools/dsreplication/ReplicationCliMain.java
@@ -90,11 +90,11 @@
 import org.opends.admin.ads.util.ConnectionUtils;
 import org.opends.admin.ads.util.PreferredConnection;
 import org.opends.admin.ads.util.ServerLoader;
+import org.opends.guitools.controlpanel.util.ControlPanelLog;
 import org.opends.messages.Message;
 import org.opends.messages.MessageBuilder;
 import org.opends.quicksetup.ApplicationException;
 import org.opends.quicksetup.Constants;
-import org.opends.quicksetup.QuickSetupLog;
 import org.opends.quicksetup.ReturnCode;
 import org.opends.quicksetup.event.ProgressUpdateEvent;
 import org.opends.quicksetup.event.ProgressUpdateListener;
@@ -306,16 +306,14 @@
       err = new PrintStream(errStream);
     }
 
-    try {
-      QuickSetupLog.initLogFileHandler(
-              File.createTempFile(LOG_FILE_PREFIX, LOG_FILE_SUFFIX),
-              ReplicationCliMain.class.getPackage().getName());
-      QuickSetupLog.disableConsoleLogging();
+    try
+    {
+      ControlPanelLog.initLogFileHandler(
+          File.createTempFile(LOG_FILE_PREFIX, LOG_FILE_SUFFIX));
     } catch (Throwable t) {
       System.err.println("Unable to initialize log");
       t.printStackTrace();
     }
-
     ReplicationCliMain replicationCli = new ReplicationCliMain(out, err,
         inStream);
     return replicationCli.execute(args, initializeServer);
@@ -444,39 +442,53 @@
       if (returnValue == SUCCESSFUL_NOP)
       {
         boolean subcommandLaunched = true;
+        String subCommand = null;
         if (argParser.isEnableReplicationSubcommand())
         {
           returnValue = enableReplication();
+          subCommand =
+            ReplicationCliArgumentParser.ENABLE_REPLICATION_SUBCMD_NAME;
         }
         else if (argParser.isDisableReplicationSubcommand())
         {
           returnValue = disableReplication();
+          subCommand =
+            ReplicationCliArgumentParser.DISABLE_REPLICATION_SUBCMD_NAME;
         }
         else if (argParser.isInitializeReplicationSubcommand())
         {
           returnValue = initializeReplication();
+          subCommand =
+            ReplicationCliArgumentParser.INITIALIZE_REPLICATION_SUBCMD_NAME;
         }
         else if (argParser.isInitializeAllReplicationSubcommand())
         {
           returnValue = initializeAllReplication();
+          subCommand =
+            ReplicationCliArgumentParser.INITIALIZE_ALL_REPLICATION_SUBCMD_NAME;
         }
         else if (argParser.isPreExternalInitializationSubcommand())
         {
           returnValue = preExternalInitialization();
+          subCommand =
+           ReplicationCliArgumentParser.PRE_EXTERNAL_INITIALIZATION_SUBCMD_NAME;
         }
         else if (argParser.isPostExternalInitializationSubcommand())
         {
           returnValue = postExternalInitialization();
+          subCommand =
+          ReplicationCliArgumentParser.POST_EXTERNAL_INITIALIZATION_SUBCMD_NAME;
         }
         else if (argParser.isStatusReplicationSubcommand())
         {
           returnValue = statusReplication();
+          subCommand =
+            ReplicationCliArgumentParser.STATUS_REPLICATION_SUBCMD_NAME;
         }
         else
         {
           if (argParser.isInteractive())
           {
-            String subCommand = null;
             switch (promptForSubcommand())
             {
             case ENABLE:
@@ -516,7 +528,7 @@
               break;
 
             default:
-              // User cancelled
+              // User canceled
               returnValue = USER_CANCELLED;
             }
 
@@ -542,11 +554,13 @@
           }
         }
 
+
         // Display the log file only if the operation is successful (when there
         // is a critical error this is already displayed).
-        if (subcommandLaunched && (returnValue == SUCCESSFUL_NOP))
+        if (subcommandLaunched && (returnValue == SUCCESSFUL) &&
+            displayLogFileAtEnd(subCommand))
         {
-          File logFile = QuickSetupLog.getLogFile();
+          File logFile = ControlPanelLog.getLogFile();
           if (logFile != null)
           {
             println();
@@ -556,6 +570,7 @@
         }
       }
     }
+
     return returnValue.getReturnCode();
   }
 
@@ -566,7 +581,7 @@
    */
   private ReplicationCliReturnCode enableReplication()
   {
-    ReplicationCliReturnCode returnValue = SUCCESSFUL_NOP;
+    ReplicationCliReturnCode returnValue;
     EnableReplicationUserData uData = new EnableReplicationUserData();
     if (argParser.isInteractive())
     {
@@ -604,7 +619,7 @@
    */
   private ReplicationCliReturnCode disableReplication()
   {
-    ReplicationCliReturnCode returnValue = SUCCESSFUL_NOP;
+    ReplicationCliReturnCode returnValue;
     DisableReplicationUserData uData = new DisableReplicationUserData();
     if (argParser.isInteractive())
     {
@@ -642,7 +657,7 @@
    */
   private ReplicationCliReturnCode initializeAllReplication()
   {
-    ReplicationCliReturnCode returnValue = SUCCESSFUL_NOP;
+    ReplicationCliReturnCode returnValue;
     InitializeAllReplicationUserData uData =
       new InitializeAllReplicationUserData();
     if (argParser.isInteractive())
@@ -672,7 +687,7 @@
    */
   private ReplicationCliReturnCode preExternalInitialization()
   {
-    ReplicationCliReturnCode returnValue = SUCCESSFUL_NOP;
+    ReplicationCliReturnCode returnValue;
     PreExternalInitializationUserData uData =
       new PreExternalInitializationUserData();
     if (argParser.isInteractive())
@@ -702,7 +717,7 @@
    */
   private ReplicationCliReturnCode postExternalInitialization()
   {
-    ReplicationCliReturnCode returnValue = SUCCESSFUL_NOP;
+    ReplicationCliReturnCode returnValue;
     PostExternalInitializationUserData uData =
       new PostExternalInitializationUserData();
     if (argParser.isInteractive())
@@ -732,7 +747,7 @@
    */
   private ReplicationCliReturnCode statusReplication()
   {
-    ReplicationCliReturnCode returnValue = SUCCESSFUL_NOP;
+    ReplicationCliReturnCode returnValue;
     StatusReplicationUserData uData = new StatusReplicationUserData();
     if (argParser.isInteractive())
     {
@@ -770,7 +785,7 @@
    */
   private ReplicationCliReturnCode initializeReplication()
   {
-    ReplicationCliReturnCode returnValue = SUCCESSFUL_NOP;
+    ReplicationCliReturnCode returnValue;
     InitializeReplicationUserData uData = new InitializeReplicationUserData();
     if (argParser.isInteractive())
     {
@@ -3049,7 +3064,7 @@
       ADSContext adsContext = new ADSContext(ctx);
       if (adsContext.hasAdminData())
       {
-        Set administrators = adsContext.readAdministratorRegistry();
+        Set<?> administrators = adsContext.readAdministratorRegistry();
         isAdminDefined = administrators.size() > 0;
       }
     }
@@ -3798,6 +3813,7 @@
             printProgress(msg);
             printlnProgress();
             initializeSuffix(baseDN, ctxSource, ctxDestination, true);
+            returnValue = SUCCESSFUL;
           }
           catch (ReplicationCliException rce)
           {
@@ -3904,6 +3920,7 @@
             printProgress(msg);
             println();
             initializeAllSuffix(baseDN, ctx, true);
+            returnValue = SUCCESSFUL;
           }
           catch (ReplicationCliException rce)
           {
@@ -3990,6 +4007,7 @@
                 t);
           }
         }
+        returnValue = SUCCESSFUL;
         for (String baseDN : baseDNs)
         {
           try
@@ -4106,6 +4124,7 @@
                 t);
           }
         }
+        returnValue = SUCCESSFUL;
         for (String baseDN : baseDNs)
         {
           try
@@ -7747,8 +7766,9 @@
       }
       try
       {
-        NamingEnumeration res = ctx.search(dn, filter, searchControls);
-        SearchResult sr = (SearchResult)res.next();
+        NamingEnumeration<SearchResult> res =
+          ctx.search(dn, filter, searchControls);
+        SearchResult sr = res.next();
         String logMsg = getFirstValue(sr, "ds-task-log-message");
         if (logMsg != null)
         {
@@ -7898,8 +7918,9 @@
       }
       try
       {
-        NamingEnumeration res = ctx.search(dn, filter, searchControls);
-        SearchResult sr = (SearchResult)res.next();
+        NamingEnumeration<SearchResult> res =
+          ctx.search(dn, filter, searchControls);
+        SearchResult sr = res.next();
 
         // Get the number of entries that have been handled and
         // a percentage...
@@ -8504,7 +8525,7 @@
   {
     MessageBuilder mb = new MessageBuilder();
     mb.append(rce.getMessageObject());
-    File logFile = QuickSetupLog.getLogFile();
+    File logFile = ControlPanelLog.getLogFile();
     if ((logFile != null) &&
         (rce.getErrorCode() != ReplicationCliReturnCode.USER_CANCELLED))
     {
@@ -10488,6 +10509,24 @@
     }
     return isReplicatedInBoth;
   }
+
+  private boolean displayLogFileAtEnd(String subCommand)
+  {
+    String[] subCommands =
+    {
+      ReplicationCliArgumentParser.ENABLE_REPLICATION_SUBCMD_NAME,
+      ReplicationCliArgumentParser.DISABLE_REPLICATION_SUBCMD_NAME,
+      ReplicationCliArgumentParser.INITIALIZE_ALL_REPLICATION_SUBCMD_NAME,
+      ReplicationCliArgumentParser.INITIALIZE_REPLICATION_SUBCMD_NAME};
+    for (String sub : subCommands)
+    {
+      if (sub.equals(subCommand))
+      {
+        return true;
+      }
+    }
+    return false;
+  }
 }
 
 

--
Gitblit v1.10.0