From 68f86e3be364e0974c328d6b50f5f4c932abb0aa Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 26 Mar 2008 17:23:37 +0000
Subject: [PATCH] Fix for issues 3086 and 3087 (Command uninstall --cli should not uninstall when the user have not answer "yes")
---
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/Launcher.java | 4 ++
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/QuickSetupCli.java | 3 -
opendj-sdk/opends/src/server/org/opends/server/util/cli/ConsoleApplication.java | 10 ++--
opendj-sdk/opends/src/server/org/opends/server/util/cli/MenuBuilder.java | 37 ++++++++++++++++--
opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallCliHelper.java | 11 ++++-
5 files changed, 51 insertions(+), 14 deletions(-)
diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallCliHelper.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallCliHelper.java
index f0d94c4..f10cad0 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallCliHelper.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallCliHelper.java
@@ -43,6 +43,7 @@
import static org.opends.messages.AdminToolMessages.*;
import static org.opends.messages.QuickSetupMessages.*;
+import static org.opends.messages.UtilityMessages.*;
import org.opends.quicksetup.*;
import org.opends.quicksetup.event.ProgressUpdateEvent;
@@ -255,7 +256,6 @@
println();
}
-
return userData;
}
@@ -297,6 +297,8 @@
builder.setDefault(Message.raw(String.valueOf(REMOVE_ALL)),
MenuResult.success(REMOVE_ALL));
+ builder.setMaxTries(CONFIRMATION_MAX_TRIES);
+
Menu<Integer> menu = builder.toMenu();
int choice;
try
@@ -320,7 +322,12 @@
catch (CLIException ce)
{
choice = REMOVE_ALL;
+ cancelled = true;
LOG.log(Level.WARNING, "Error reading input: "+ce, ce);
+ if (ce.getMessageObject().getDescriptor().equals(ERR_TRIES_LIMIT_REACHED))
+ {
+ println(ce.getMessageObject());
+ }
}
if (cancelled)
@@ -634,7 +641,7 @@
{
println(ce.getMessageObject());
println();
- cancelled = false;
+ cancelled = true;
}
}
else
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/Launcher.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/Launcher.java
index 9538646..0f84e48 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/Launcher.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/Launcher.java
@@ -296,6 +296,10 @@
printUsage(true);
System.exit(ReturnCode.USER_DATA_ERROR.getReturnCode());
}
+ else if (returnValue.equals(ReturnCode.CANCELLED))
+ {
+ System.exit(ReturnCode.CANCELLED.getReturnCode());
+ }
return returnValue.getReturnCode();
}
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/QuickSetupCli.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/QuickSetupCli.java
index 3fac433..dc60f7c 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/QuickSetupCli.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/QuickSetupCli.java
@@ -36,8 +36,7 @@
import org.opends.messages.Message;
/**
- * This enum contains the different type of ApplicationException that we can
- * have.
+ * Class used by Launcher to start a CLI application.
*
*/
public class QuickSetupCli {
diff --git a/opendj-sdk/opends/src/server/org/opends/server/util/cli/ConsoleApplication.java b/opendj-sdk/opends/src/server/org/opends/server/util/cli/ConsoleApplication.java
index b16b533..7395140 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/util/cli/ConsoleApplication.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/util/cli/ConsoleApplication.java
@@ -685,8 +685,7 @@
}
nTries++;
}
- throw new CLIException(ERR_CONFIRMATION_TRIES_LIMIT_REACHED.get(
- maxTries));
+ throw new CLIException(ERR_TRIES_LIMIT_REACHED.get(maxTries));
}
/**
@@ -726,9 +725,10 @@
}
catch (CLIException ce)
{
- if (ce.getMessageObject().equals(
- ERR_CONFIRMATION_TRIES_LIMIT_REACHED.get(
- CONFIRMATION_MAX_TRIES)))
+ if (ce.getMessageObject().getDescriptor().equals(
+ ERR_CONFIRMATION_TRIES_LIMIT_REACHED) ||
+ ce.getMessageObject().getDescriptor().equals(
+ ERR_TRIES_LIMIT_REACHED))
{
throw ce;
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/util/cli/MenuBuilder.java b/opendj-sdk/opends/src/server/org/opends/server/util/cli/MenuBuilder.java
index e6c6865..033db6d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/util/cli/MenuBuilder.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/util/cli/MenuBuilder.java
@@ -145,13 +145,16 @@
// The menu title.
private final Message title;
-
+ // The maximum number of times we display the menu if the user provides
+ // bad input (-1 for unlimited).
+ private int nMaxTries;
// Private constructor.
private MenuImpl(ConsoleApplication app, Message title, Message prompt,
TableBuilder ntable, TableBuilder ctable, TablePrinter printer,
Map<String, MenuCallback<T>> callbacks, boolean allowMultiSelect,
- MenuCallback<T> defaultCallback, Message defaultDescription) {
+ MenuCallback<T> defaultCallback, Message defaultDescription,
+ int nMaxTries) {
this.app = app;
this.title = title;
this.prompt = prompt;
@@ -162,6 +165,7 @@
this.allowMultiSelect = allowMultiSelect;
this.defaultCallback = defaultCallback;
this.defaultDescription = defaultDescription;
+ this.nMaxTries = nMaxTries;
}
@@ -276,7 +280,16 @@
}
// Get the user's choice.
- MenuCallback<T> choice = app.readValidatedInput(promptMsg, validator);
+ MenuCallback<T> choice;
+
+ if (nMaxTries != -1)
+ {
+ choice = app.readValidatedInput(promptMsg, validator, nMaxTries);
+ }
+ else
+ {
+ choice = app.readValidatedInput(promptMsg, validator);
+ }
// Invoke the user's selected choice.
MenuResult<T> result = choice.invoke(app);
@@ -371,7 +384,9 @@
// The menu prompt.
private Message prompt = null;
-
+ // The maximum number of times that we allow the user to provide an invalid
+ // answer (-1 if unlimited).
+ private int nMaxTries = -1;
/**
* Creates a new menu.
@@ -805,6 +820,18 @@
}
return new MenuImpl<T>(app, title, prompt, nbuilder, cbuilder, printer,
- callbacks, allowMultiSelect, defaultCallback, defaultDescription);
+ callbacks, allowMultiSelect, defaultCallback, defaultDescription,
+ nMaxTries);
+ }
+
+ /**
+ * Sets the maximum number of tries that the user can provide an invalid
+ * value in the menu. -1 for unlimited tries (the default). If this limit is
+ * reached a CLIException will be thrown.
+ * @param nTries the maximum number of tries.
+ */
+ public void setMaxTries(int nTries)
+ {
+ nMaxTries = nTries;
}
}
--
Gitblit v1.10.0