From 7a6f3dd0c046db02a9cebddd7e635c2189e378ff Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Sat, 21 Jul 2012 20:43:37 +0000
Subject: [PATCH] Fix OPENDJ-522: Add capability to force the upgrade to complete if errors occur during non-interactive mode

---
 opends/src/quicksetup/org/opends/quicksetup/upgrader/UpgradeLauncher.java |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/opends/src/quicksetup/org/opends/quicksetup/upgrader/UpgradeLauncher.java b/opends/src/quicksetup/org/opends/quicksetup/upgrader/UpgradeLauncher.java
index 63d9171..f43d6e7 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/upgrader/UpgradeLauncher.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/upgrader/UpgradeLauncher.java
@@ -23,12 +23,13 @@
  *
  *
  *      Copyright 2007-2010 Sun Microsystems, Inc.
- *      Portions Copyright 2011 ForgeRock AS
+ *      Portions Copyright 2011-2012 ForgeRock AS
  */
 
 package org.opends.quicksetup.upgrader;
 
 import org.opends.messages.Message;
+import static org.opends.messages.AdminToolMessages.*;
 import static org.opends.messages.QuickSetupMessages.*;
 
 import static org.opends.messages.ToolMessages.*;
@@ -106,6 +107,7 @@
   private StringArgument file;
   private BooleanArgument quiet;
   private BooleanArgument noPrompt;
+  private BooleanArgument forceOnError;
   private BooleanArgument verbose;
   private BooleanArgument revertMostRecent;
   private StringArgument reversionArchive;
@@ -211,6 +213,17 @@
   }
 
   /**
+   * Tells whether the user specified to force on non critical error in the non
+   * interactive mode.
+   * @return <CODE>true</CODE> if the user specified to force on
+   * non critical error and <CODE>false</CODE> otherwise.
+   */
+  public boolean isForceOnError()
+  {
+    return forceOnError.isPresent();
+  }
+
+  /**
    * Indicates whether this invocation is intended to upgrade the current
    * build as opposed to revert.
    * @return boolean where true indicates upgrade
@@ -348,6 +361,14 @@
               INFO_UPGRADE_DESCRIPTION_NO_PROMPT.get());
       argParser.addArgument(noPrompt);
 
+      forceOnError = new BooleanArgument(
+          "forceOnError",
+          null,
+          "forceOnError",
+          INFO_UPGRADE_DESCRIPTION_FORCE.get(
+              "--"+noPrompt.getLongIdentifier()));
+      argParser.addArgument(forceOnError);
+
       quiet = new BooleanArgument(
               OPTION_LONG_QUIET,
               OPTION_SHORT_QUIET,
@@ -392,6 +413,16 @@
 
           }
         }
+
+        if (!noPrompt.isPresent() && forceOnError.isPresent())
+        {
+          Message message =
+              ERR_UNINSTALL_FORCE_REQUIRES_NO_PROMPT.get("--"
+                  + forceOnError.getLongIdentifier(), "--"
+                  + noPrompt.getLongIdentifier());
+          System.err.println(message);
+          System.exit(ReturnCode.APPLICATION_ERROR.getReturnCode());
+        }
       } catch (ArgumentException ae) {
         System.err.println(ae.getMessageObject());
         printUsage(false);

--
Gitblit v1.10.0