opends/src/messages/messages/tools.properties
@@ -2684,6 +2684,8 @@ INFO_UPGRADE_TASK_ADD_CONFIG_FILE_1853=Adding '%s' configuration file SEVERE_ERR_UPGRADE_ADD_CONFIG_FILE_FAILS_1854=An error occurred while adding \ configuration file '%s': %s INFO_OPTION_ACCEPT_LICENSE_1855=Automatically accepts the product license \ (if present) # Upgrade tasks INFO_UPGRADE_TASK_6869_SUMMARY_10000=Fixing de-DE collation matching rule OID opends/src/server/org/opends/server/tools/ToolConstants.java
@@ -798,8 +798,9 @@ public static final String OPTION_LONG_RESTORE_UPGRADE = "restore"; /** * The value for the long option for backup all. * The value for the long option to automatically * accept the license if present. */ public static final String OPTION_LONG_BACKUP_ALL = "backupAll"; public static final String OPTION_LONG_ACCEPT_LICENSE = "acceptLicense"; } opends/src/server/org/opends/server/tools/upgrade/Upgrade.java
@@ -396,7 +396,7 @@ if (context.checkCLIUserOption(handler, IGNORE_ERRORS_MODE) == ConfirmationCallback.YES) { context = new UpgradeContext(fromVersion, toVersion, true); context.setIgnoreErrorsMode(true); } /* @@ -580,7 +580,7 @@ throw new ClientException(EXIT_CODE_SUCCESS, message); } // TODO The upgrade only supports version >= 2.4.5. // The upgrade only supports version >= 2.4.5. if (context.getFromVersion().compareTo(UPGRADESUPPORTSVERSIONFROM) < 0) { throw new ClientException(EXIT_CODE_ERROR, @@ -647,29 +647,39 @@ // and force to accept it. context.notify(handler, INFO_LICENSE_DETAILS_CLI_LABEL.get()); final int answer = context.confirmYN(handler, INFO_LICENSE_ACCEPT.get(), ConfirmationCallback.NO); if (context.checkCLIUserOption(handler, ACCEPT_LICENSE_MODE) == ConfirmationCallback.NO) { if (answer == ConfirmationCallback.NO) { System.exit(EXIT_CODE_SUCCESS); } else if (answer == ConfirmationCallback.YES) { // Creates the file LicenseFile.setApproval(true); LicenseFile.createFileLicenseApproved(); final int answer = context.confirmYN(handler, INFO_LICENSE_ACCEPT.get(), ConfirmationCallback.NO); if (answer == ConfirmationCallback.NO) { System.exit(EXIT_CODE_SUCCESS); } else if (answer == ConfirmationCallback.YES) { createLicenseApproval(); } } else { context.notify(handler, INFO_LICENSE_CLI_ACCEPT_INVALID_RESPONSE.get()); context.notify(handler, INFO_LICENSE_ACCEPT.get()); context.notify(handler, INFO_PROMPT_YES_COMPLETE_ANSWER.get()); createLicenseApproval(); } } } } private static void createLicenseApproval() { // Creates the file LicenseFile.setApproval(true); LicenseFile.createFileLicenseApproved(); } // Prevent instantiation. private Upgrade() opends/src/server/org/opends/server/tools/upgrade/UpgradeCli.java
@@ -95,6 +95,7 @@ private BooleanArgument force; private BooleanArgument quietMode; private BooleanArgument verbose; private BooleanArgument acceptLicense; // The argument which should be used to request usage information. @@ -197,7 +198,7 @@ } /** * Force the upgrade. All answers will be forced to 'yes'. * Force the upgrade. All critical questions will be forced to 'yes'. * * @return {@code true} if the upgrade process is forced. */ @@ -208,6 +209,7 @@ /** * Force to ignore the errors during the upgrade process. * Continues rather than fails. * * @return {@code true} if the errors are forced to be ignored. */ @@ -216,6 +218,16 @@ return ignoreErrors.isPresent(); } /** * Automatically accepts the license if it's present. * * @return {@code true} if license is accepted by default. */ public boolean isAcceptLicense() { return acceptLicense.isPresent(); } // Displays the provided message followed by a help usage reference. private void displayMessageAndUsageReference(final Message message) { @@ -263,10 +275,14 @@ OPTION_LONG_FORCE_UPGRADE, INFO_UPGRADE_OPTION_FORCE.get(OPTION_LONG_NO_PROMPT)); acceptLicense = new BooleanArgument(OPTION_LONG_ACCEPT_LICENSE, null, OPTION_LONG_ACCEPT_LICENSE, INFO_OPTION_ACCEPT_LICENSE.get()); showUsageArgument = new BooleanArgument("help", OPTION_SHORT_HELP, OPTION_LONG_HELP, INFO_DESCRIPTION_USAGE.get()); // Register the global arguments. parser.addGlobalArgument(showUsageArgument); parser.setUsageArgument(showUsageArgument, this.getOutputStream()); @@ -277,6 +293,7 @@ parser.addGlobalArgument(quietMode); parser.addGlobalArgument(force); parser.addGlobalArgument(ignoreErrors); parser.addGlobalArgument(acceptLicense); globalArgumentsInitialized = true; } @@ -352,14 +369,15 @@ catch (ClientException ex) { LOG.log(SEVERE, ex.getMessage()); println(ERROR, ex.getMessageObject(), 0); println(Style.ERROR, ex.getMessageObject(), 0); return ex.getExitCode(); } catch (Exception ex) { LOG.log(SEVERE, ex.getMessage()); println(ERROR, ERR_UPGRADE_MAIN_UPGRADE_PROCESS.get(ex.getMessage()), 0); println(Style.ERROR, ERR_UPGRADE_MAIN_UPGRADE_PROCESS.get(ex .getMessage()), 0); return EXIT_CODE_ERROR; } @@ -391,13 +409,14 @@ switch (fnc.getMessageSubType()) { case TITLE_CALLBACK: println(TITLE, Message.raw(fnc.getMessage()), 0); println(Style.TITLE, Message.raw(fnc.getMessage()), 0); break; case SUBTITLE_CALLBACK: println(SUBTITLE, Message.raw(fnc.getMessage()), 4); println(Style.SUBTITLE, Message.raw(fnc.getMessage()), 4); break; case NOTICE_CALLBACK: println(NOTICE, Message.raw(fnc.getMessage()), 0); println(Style.NOTICE, Message.raw(fnc.getMessage()), 0); break; default: LOG.log(SEVERE, "Unsupported message type: " @@ -439,8 +458,8 @@ { if (!isInteractive() && !isForceUpgrade()) { println(ERROR, ERR_UPGRADE_USER_INTERACTION_REQUIRED.get( OPTION_LONG_NO_PROMPT, OPTION_LONG_FORCE_UPGRADE), 0); println(Style.ERROR, ERR_UPGRADE_USER_INTERACTION_REQUIRED .get(OPTION_LONG_NO_PROMPT, OPTION_LONG_FORCE_UPGRADE), 0); cc.setSelectedIndex(ConfirmationCallback.NO); return; } @@ -455,15 +474,15 @@ { if (!isInteractive() && !isForceUpgrade()) { println(ERROR, ERR_UPGRADE_USER_INTERACTION_REQUIRED.get( OPTION_LONG_NO_PROMPT, OPTION_LONG_FORCE_UPGRADE), 0); println(Style.ERROR, ERR_UPGRADE_USER_INTERACTION_REQUIRED .get(OPTION_LONG_NO_PROMPT, OPTION_LONG_FORCE_UPGRADE), 0); cc.setSelectedIndex(ConfirmationCallback.NO); return; } } // Does the user specify the ignore errors mode ? if(opt == IGNORE_ERRORS_MODE) { if (opt == IGNORE_ERRORS_MODE) { if (!isIgnoreErrors()) { cc.setSelectedIndex(ConfirmationCallback.NO); @@ -471,6 +490,15 @@ } cc.setSelectedIndex(ConfirmationCallback.YES); } if (opt == ACCEPT_LICENSE_MODE) { if (!isAcceptLicense()) { cc.setSelectedIndex(ConfirmationCallback.NO); return; } cc.setSelectedIndex(ConfirmationCallback.YES); } } return; } @@ -531,7 +559,9 @@ String value = null; try { value = readInput(Message.raw(prompt), defaultOption, SUBTITLE); value = readInput(Message.raw(prompt), defaultOption, Style.SUBTITLE); } catch (CLIException e) { @@ -581,7 +611,7 @@ // Displays the prompt prompt.append(" ").append( UpgradeContext.getDefaultOption(cc.getSelectedIndex())); println(SUBTITLE, Message.raw(prompt), 0); println(Style.SUBTITLE, Message.raw(prompt), 0); LOG.log(INFO, UpgradeContext.getDefaultOption(cc.getSelectedIndex())); } } opends/src/server/org/opends/server/tools/upgrade/UpgradeContext.java
@@ -66,7 +66,7 @@ /** * If ignore errors is enabled. */ private final boolean isIgnoreErrorsMode; private boolean isIgnoreErrorsMode; /** * Constructor for the upgrade context. @@ -84,24 +84,6 @@ } /** * Constructor for the upgrade context. * * @param fromVersion * The version number from we upgrade from. * @param toVersion * The version number we want to upgrade to. * @param isIgnoreErrorsMode * If ignore error mode is enabled. */ UpgradeContext(final BuildVersion fromVersion, final BuildVersion toVersion, final boolean isIgnoreErrorsMode) { this.fromVersion = fromVersion; this.toVersion = toVersion; this.isIgnoreErrorsMode = isIgnoreErrorsMode; } /** * Returns the old version. * * @return The old version. @@ -132,6 +114,16 @@ } /** * Sets the ignore errors mode. * * @param isIgnoreErrorsMode {@true} if ignore error mode is activated. */ public void setIgnoreErrorsMode(boolean isIgnoreErrorsMode) { this.isIgnoreErrorsMode = isIgnoreErrorsMode; } /** * Sends notification message to the application via the call-back handler. * * @param handler opends/src/server/org/opends/server/tools/upgrade/VerificationCallback.java
@@ -57,6 +57,11 @@ public static final int CANNOT_BE_REVERTED = 2; /** * An identifier of the accept license mode. */ public static final int ACCEPT_LICENSE_MODE = 3; /** * The identifier of ignore errors mode. */ public static final int IGNORE_ERRORS_MODE = 5; @@ -66,6 +71,7 @@ */ public static final int MANDATORY_USER_INTERACTION = 6; // The required options for the verification callback. private int[] requiredOptions; opends/src/server/org/opends/server/util/cli/ConsoleApplication.java
@@ -68,6 +68,7 @@ import org.opends.server.util.PasswordReader; import org.opends.server.util.SetupUtils; /** * This class provides an abstract base class which can be used as the basis of * a console-based application. @@ -101,31 +102,34 @@ } /** * Defines a title in the console application. * Defines the different line styles for output. */ public final static int TITLE = 0; /** * Defines a subtitle in the console application. */ public final static int SUBTITLE = 1; /** * Defines a notice in the console application. */ public final static int NOTICE = 2; /** * Defines a normal line in the console application. */ public final static int NORMAL = 3; /** * Defines an error line in the console application. */ public final static int ERROR = 4; /** * Defines a break line in the console application. */ public final static int BREAKLINE = 5; public enum Style { /** * Defines a title. */ TITLE, /** * Defines a subtitle. */ SUBTITLE, /** * Defines a notice. */ NOTICE, /** * Defines a normal line. */ NORMAL, /** * Defines an error. */ ERROR, /** * Defines a breakline. */ BREAKLINE, } // The error stream which this application should use. private final PrintStream err; @@ -435,51 +439,48 @@ */ public final void println(final Message msg, final int indent) { println(0, msg, indent); println(Style.NORMAL, msg, indent); } /** * Print a line with EOL in the output stream. * * @param typeMessage * @param msgStyle * The type of formatted output desired. * @param msg * The message to display in normal mode. * @param indent * The indentation. */ public final void println(final int typeMessage, final Message msg, public final void println(final Style msgStyle, final Message msg, final int indent) { if (!isQuiet()) { if (typeMessage == TITLE) switch (msgStyle) { case TITLE: out.println(); out.println(">>>> " + wrapText(msg, MAX_LINE_WIDTH, indent)); out.println(); } else if (typeMessage == SUBTITLE) { break; case SUBTITLE: out.println(wrapText(msg, MAX_LINE_WIDTH, indent)); out.println(); } else if (typeMessage == NOTICE) { break; case NOTICE: out.println(wrapText(" * " + msg, MAX_LINE_WIDTH, indent)); } else if (typeMessage == ERROR) { break; case ERROR: out.println(); out.println(wrapText("** " + msg, MAX_LINE_WIDTH, indent)); } else if (typeMessage == BREAKLINE) { break; case BREAKLINE: out.println(); } else { break; default: out.println(wrapText(msg, MAX_LINE_WIDTH, indent)); break; } } } @@ -663,19 +664,20 @@ * The message to display. * @param defaultValue * The default answer by default. * @param formattedOutput * @param msgStyle * The formatted style chosen. * @return The user's input as a string. * @throws CLIException * If an Exception occurs during the process. */ public final String readInput(final Message prompt, final String defaultValue, final int formattedOutput) throws CLIException final String defaultValue, final Style msgStyle) throws CLIException { String answer = null; final Message messageToDisplay = INFO_PROMPT_SINGLE_DEFAULT.get(prompt.toString(), defaultValue); if (formattedOutput == TITLE) if (msgStyle == Style.TITLE) { println(); } @@ -692,7 +694,8 @@ throw CLIException.adaptInputException(e); } if (formattedOutput == TITLE || formattedOutput == SUBTITLE) if (msgStyle == Style.TITLE || msgStyle == Style.SUBTITLE) { println(); }