From 60b1359b65d8505c32f0598bf325043b7cedf843 Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Tue, 16 Dec 2014 17:05:29 +0000
Subject: [PATCH] OPENDJ-1655 (CR-5676) Fix display of error message in dsconfig
---
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java | 89 +++++++----
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java | 3
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DeleteSubCommandHandler.java | 32 +---
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/PropertyValueEditor.java | 31 ++--
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java | 78 ++++-------
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ListSubCommandHandler.java | 61 ++------
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SetPropSubCommandHandler.java | 26 +-
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java | 4
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ArgumentExceptionFactory.java | 59 +++-----
9 files changed, 165 insertions(+), 218 deletions(-)
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ArgumentExceptionFactory.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ArgumentExceptionFactory.java
index 19ca82a..a6eadf1 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ArgumentExceptionFactory.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ArgumentExceptionFactory.java
@@ -115,15 +115,10 @@
public static void displayManagedObjectDecodingException(ConsoleApplication app, ManagedObjectDecodingException e) {
AbstractManagedObjectDefinition<?, ?> d = e.getPartialManagedObject().getManagedObjectDefinition();
LocalizableMessage ufn = d.getUserFriendlyName();
- LocalizableMessage msg;
- if (e.getCauses().size() == 1) {
- msg = ERR_GET_HEADING_MODE_SINGLE.get(ufn);
- } else {
- msg = ERR_GET_HEADING_MODE_PLURAL.get(ufn);
- }
-
- app.println(msg);
- app.println();
+ LocalizableMessage msg = e.getCauses().size() == 1 ? ERR_GET_HEADING_MODE_SINGLE.get(ufn)
+ : ERR_GET_HEADING_MODE_PLURAL.get(ufn);
+ app.errPrintln(msg);
+ app.errPrintln();
TableBuilder builder = new TableBuilder();
for (PropertyException pe : e.getCauses()) {
ArgumentException ae = adaptPropertyException(pe, d);
@@ -151,22 +146,17 @@
MissingMandatoryPropertiesException e) {
LocalizableMessage ufn = e.getUserFriendlyName();
LocalizableMessage msg;
+ final boolean onePropertyMissing = e.getCauses().size() == 1;
if (e.isCreate()) {
- if (e.getCauses().size() == 1) {
- msg = ERR_CREATE_HEADING_MMPE_SINGLE.get(ufn);
- } else {
- msg = ERR_CREATE_HEADING_MMPE_PLURAL.get(ufn);
- }
+ msg = onePropertyMissing ? ERR_CREATE_HEADING_MMPE_SINGLE.get(ufn)
+ : ERR_CREATE_HEADING_MMPE_PLURAL.get(ufn);
} else {
- if (e.getCauses().size() == 1) {
- msg = ERR_MODIFY_HEADING_MMPE_SINGLE.get(ufn);
- } else {
- msg = ERR_MODIFY_HEADING_MMPE_PLURAL.get(ufn);
- }
+ msg = onePropertyMissing ? ERR_MODIFY_HEADING_MMPE_SINGLE.get(ufn)
+ : ERR_MODIFY_HEADING_MMPE_PLURAL.get(ufn);
}
- app.println(msg);
- app.println();
+ app.errPrintln(msg);
+ app.errPrintln();
TableBuilder builder = new TableBuilder();
builder.addSortKey(0);
builder.appendHeading(INFO_DSCFG_HEADING_PROPERTY_NAME.get());
@@ -198,32 +188,25 @@
public static void displayOperationRejectedException(ConsoleApplication app, OperationRejectedException e) {
LocalizableMessage ufn = e.getUserFriendlyName();
LocalizableMessage msg;
+ final boolean singleMessage = e.getMessages().size() == 1;
+
switch (e.getOperationType()) {
case CREATE:
- if (e.getMessages().size() == 1) {
- msg = ERR_DSCFG_ERROR_CREATE_ORE_SINGLE.get(ufn);
- } else {
- msg = ERR_DSCFG_ERROR_CREATE_ORE_PLURAL.get(ufn);
- }
+ msg = singleMessage ? ERR_DSCFG_ERROR_CREATE_ORE_SINGLE.get(ufn)
+ : ERR_DSCFG_ERROR_CREATE_ORE_PLURAL.get(ufn);
break;
case DELETE:
- if (e.getMessages().size() == 1) {
- msg = ERR_DSCFG_ERROR_DELETE_ORE_SINGLE.get(ufn);
- } else {
- msg = ERR_DSCFG_ERROR_DELETE_ORE_PLURAL.get(ufn);
- }
+ msg = singleMessage ? ERR_DSCFG_ERROR_DELETE_ORE_SINGLE.get(ufn)
+ : ERR_DSCFG_ERROR_DELETE_ORE_PLURAL.get(ufn);
break;
default:
- if (e.getMessages().size() == 1) {
- msg = ERR_DSCFG_ERROR_MODIFY_ORE_SINGLE.get(ufn);
- } else {
- msg = ERR_DSCFG_ERROR_MODIFY_ORE_PLURAL.get(ufn);
- }
+ msg = singleMessage ? ERR_DSCFG_ERROR_MODIFY_ORE_SINGLE.get(ufn)
+ : ERR_DSCFG_ERROR_MODIFY_ORE_PLURAL.get(ufn);
break;
}
- app.println(msg);
- app.println();
+ app.errPrintln(msg);
+ app.errPrintln();
TableBuilder builder = new TableBuilder();
for (LocalizableMessage reason : e.getMessages()) {
builder.startRow();
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java
index 60a1ef8..5bf2425 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/CreateSubCommandHandler.java
@@ -27,10 +27,12 @@
package org.forgerock.opendj.config.dsconfig;
import static com.forgerock.opendj.cli.CliMessages.*;
+import static com.forgerock.opendj.cli.ReturnCode.*;
import static com.forgerock.opendj.cli.ArgumentConstants.LIST_TABLE_SEPARATOR;
import static com.forgerock.opendj.dsconfig.DsconfigMessages.*;
-import static org.forgerock.opendj.config.dsconfig.ArgumentExceptionFactory.displayMissingMandatoryPropertyException;
-import static org.forgerock.opendj.config.dsconfig.ArgumentExceptionFactory.displayOperationRejectedException;
+
+import static org.forgerock.opendj.config.dsconfig.ArgumentExceptionFactory.*;
+import static org.forgerock.opendj.config.dsconfig.DSConfig.*;
import java.util.Collection;
import java.util.Collections;
@@ -542,9 +544,9 @@
isBadReference = false;
} catch (MissingMandatoryPropertiesException e) {
// Give the user the chance to fix the problems.
- app.println();
+ app.errPrintln();
displayMissingMandatoryPropertyException(app, e);
- app.println();
+ app.errPrintln();
if (app.confirmAction(INFO_DSCFG_PROMPT_EDIT.get(rufn), true)) {
MenuResult<Void> result = SetPropSubCommandHandler.modifyManagedObject(app,
context, ref, handler);
@@ -561,9 +563,9 @@
throw new ClientException(ReturnCode.CONSTRAINT_VIOLATION, msg);
} catch (OperationRejectedException e) {
// Give the user the chance to fix the problems.
- app.println();
+ app.errPrintln();
displayOperationRejectedException(app, e);
- app.println();
+ app.errPrintln();
if (app.confirmAction(INFO_DSCFG_PROMPT_EDIT.get(rufn), true)) {
MenuResult<Void> result = SetPropSubCommandHandler.modifyManagedObject(app,
context, ref, handler);
@@ -599,9 +601,9 @@
// the user refused to modify it, then give the used the
// option of editing the referencing component.
if (isBadReference) {
- app.println();
- app.println(ERR_SET_REFERENCED_COMPONENT_DISABLED.get(ufn, rufn));
- app.println();
+ app.errPrintln();
+ app.errPrintln(ERR_SET_REFERENCED_COMPONENT_DISABLED.get(ufn, rufn));
+ app.errPrintln();
if (app.confirmAction(INFO_DSCFG_PROMPT_EDIT_AGAIN.get(ufn), true)) {
return MenuResult.again();
}
@@ -693,9 +695,9 @@
if (app.isInteractive()) {
// If interactive, give the user the chance to fix the
// problems.
- app.println();
+ app.errPrintln();
displayMissingMandatoryPropertyException(app, e);
- app.println();
+ app.errPrintln();
if (!app.confirmAction(INFO_DSCFG_PROMPT_EDIT_AGAIN.get(ufn), true)) {
return MenuResult.cancel();
}
@@ -710,11 +712,10 @@
throw new ClientException(ReturnCode.CONSTRAINT_VIOLATION, msg);
} catch (OperationRejectedException e) {
if (app.isInteractive()) {
- // If interactive, give the user the chance to fix the
- // problems.
- app.println();
+ // If interactive, give the user the chance to fix the problems.
+ app.errPrintln();
displayOperationRejectedException(app, e);
- app.println();
+ app.errPrintln();
if (!app.confirmAction(INFO_DSCFG_PROMPT_EDIT_AGAIN.get(ufn), true)) {
return MenuResult.cancel();
}
@@ -722,23 +723,11 @@
throw new ClientException(ReturnCode.CONSTRAINT_VIOLATION, e.getMessageObject(), e);
}
} catch (LdapException e) {
- final LocalizableMessage msg = ERR_DSCFG_ERROR_CREATE_CE.get(ufn, e.getMessage());
- if (app.isInteractive()) {
- app.println();
- app.printVerboseMessage(msg);
- return MenuResult.cancel();
- } else {
- throw new ClientException(ReturnCode.CLIENT_SIDE_SERVER_DOWN, msg);
- }
+ LocalizableMessage msg = ERR_DSCFG_ERROR_CREATE_CE.get(ufn, e.getMessage());
+ return interactivePrintOrThrowError(app, msg, CLIENT_SIDE_SERVER_DOWN);
} catch (ManagedObjectAlreadyExistsException e) {
- final LocalizableMessage msg = ERR_DSCFG_ERROR_CREATE_MOAEE.get(ufn);
- if (app.isInteractive()) {
- app.println();
- app.printVerboseMessage(msg);
- return MenuResult.cancel();
- } else {
- throw new ClientException(ReturnCode.ENTRY_ALREADY_EXISTS, msg);
- }
+ LocalizableMessage msg = ERR_DSCFG_ERROR_CREATE_MOAEE.get(ufn);
+ return interactivePrintOrThrowError(app, msg, ENTRY_ALREADY_EXISTS);
}
}
}
@@ -763,10 +752,9 @@
try {
child = parent.createChild(irelation, d, input, exceptions);
} catch (IllegalManagedObjectNameException e) {
- ClientException ae = ArgumentExceptionFactory.adaptIllegalManagedObjectNameException(e, d);
- app.println();
- app.println(ae.getMessageObject());
- app.println();
+ app.errPrintln();
+ app.errPrintln(adaptIllegalManagedObjectNameException(e, d).getMessageObject());
+ app.errPrintln();
return null;
}
@@ -795,11 +783,10 @@
}
// A child with the specified name must already exist.
- LocalizableMessage msg = ERR_DSCFG_ERROR_CREATE_NAME_ALREADY_EXISTS.get(
- irelation.getUserFriendlyName(), input);
- app.println();
- app.println(msg);
- app.println();
+ app.errPrintln();
+ app.errPrintln(
+ ERR_DSCFG_ERROR_CREATE_NAME_ALREADY_EXISTS.get(irelation.getUserFriendlyName(), input));
+ app.errPrintln();
return null;
}
};
@@ -868,8 +855,7 @@
// If there is only one choice then return immediately.
if (filteredTypes.size() == 0) {
- LocalizableMessage msg = ERR_DSCFG_ERROR_NO_AVAILABLE_TYPES.get(d.getUserFriendlyName());
- app.println(msg);
+ app.errPrintln(ERR_DSCFG_ERROR_NO_AVAILABLE_TYPES.get(d.getUserFriendlyName()));
return MenuResult.<ManagedObjectDefinition<? extends C, ? extends S>> cancel();
} else if (filteredTypes.size() == 1) {
ManagedObjectDefinition<? extends C, ? extends S> type = filteredTypes.iterator().next();
@@ -1050,13 +1036,7 @@
} catch (ManagedObjectNotFoundException e) {
LocalizableMessage pufn = path.getManagedObjectDefinition().getUserFriendlyName();
LocalizableMessage msg = ERR_DSCFG_ERROR_GET_PARENT_MONFE.get(pufn);
- if (app.isInteractive()) {
- app.println();
- app.printVerboseMessage(msg);
- return MenuResult.cancel();
- } else {
- throw new ClientException(ReturnCode.NO_SUCH_OBJECT, msg);
- }
+ return interactivePrintOrThrowError(app, msg, NO_SUCH_OBJECT);
} catch (LdapException e) {
throw new ClientException(ReturnCode.OTHER, LocalizableMessage.raw(e.getLocalizedMessage()));
}
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
index 8f6990e..16d6a54 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
@@ -138,10 +138,10 @@
return MenuResult.again();
}
} catch (ArgumentException e) {
- app.println(e.getMessageObject());
+ app.errPrintln(e.getMessageObject());
return MenuResult.success(1);
} catch (ClientException e) {
- app.println(e.getMessageObject());
+ app.errPrintln(e.getMessageObject());
return MenuResult.success(e.getReturnCode());
}
}
@@ -239,7 +239,7 @@
}
return result;
} catch (ClientException e) {
- app.println(e.getMessageObject());
+ app.errPrintln(e.getMessageObject());
return MenuResult.success(1);
}
}
@@ -257,6 +257,32 @@
*/
public static final String GENERIC_TYPE = "generic";
+ /**
+ * Prints the provided error message if the provided application is
+ * interactive, throws a {@link ClientException} with provided error code
+ * and message otherwise.
+ *
+ * @param app
+ * The console application where the message should be printed.
+ * @param msg
+ * The human readable error message.
+ * @param errorCode
+ * The operation error code.
+ * @return A generic cancel menu result if application is interactive.
+ * @throws ClientException
+ * If the application is not interactive.
+ */
+ static <T> MenuResult<T> interactivePrintOrThrowError(ConsoleApplication app,
+ LocalizableMessage msg, ReturnCode errorCode) throws ClientException {
+ if (app.isInteractive()) {
+ app.errPrintln();
+ app.errPrintln(msg);
+ return MenuResult.cancel();
+ } else {
+ throw new ClientException(errorCode, msg);
+ }
+ }
+
private long sessionStartTime;
private boolean sessionStartTimePrinted;
private int sessionEquivalentOperationNumber;
@@ -294,7 +320,7 @@
try {
ConfigurationFramework.getInstance().initialize();
} catch (ConfigException e) {
- app.println(e.getMessageObject());
+ app.errPrintln(e.getMessageObject());
return ReturnCode.ERROR_INITIALIZING_SERVER.get();
}
}
@@ -418,11 +444,11 @@
return verboseArgument.isPresent();
}
- /** Displays the provided message followed by a help usage reference. */
- private void displayMessageAndUsageReference(LocalizableMessage message) {
- println(message);
- println();
- println(parser.getHelpUsageReference());
+ /** Displays the provided error message followed by a help usage reference. */
+ private void displayErrorMessageAndUsageReference(LocalizableMessage message) {
+ errPrintln(message);
+ errPrintln();
+ errPrintln(parser.getHelpUsageReference());
}
/**
@@ -560,7 +586,7 @@
initializeGlobalArguments(args);
initializeSubCommands();
} catch (ArgumentException e) {
- println(ERR_CANNOT_INITIALIZE_ARGS.get(e.getMessage()));
+ errPrintln(ERR_CANNOT_INITIALIZE_ARGS.get(e.getMessage()));
return ReturnCode.ERROR_USER_DATA.get();
}
@@ -574,7 +600,7 @@
parser.parseArguments(args);
checkForConflictingArguments();
} catch (ArgumentException ae) {
- displayMessageAndUsageReference(ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
+ displayErrorMessageAndUsageReference(ERR_ERROR_PARSING_ARGS.get(ae.getMessage()));
return ReturnCode.CONFLICTING_ARGS.get();
}
@@ -589,10 +615,10 @@
if (equivalentCommandFileArgument.isPresent()) {
final String file = equivalentCommandFileArgument.getValue();
if (!canWrite(file)) {
- println(ERR_DSCFG_CANNOT_WRITE_EQUIVALENT_COMMAND_LINE_FILE.get(file));
+ errPrintln(ERR_DSCFG_CANNOT_WRITE_EQUIVALENT_COMMAND_LINE_FILE.get(file));
return ReturnCode.ERROR_UNEXPECTED.get();
} else if (new File(file).isDirectory()) {
- println(ERR_DSCFG_EQUIVALENT_COMMAND_LINE_FILE_DIRECTORY.get(file));
+ errPrintln(ERR_DSCFG_EQUIVALENT_COMMAND_LINE_FILE_DIRECTORY.get(file));
return ReturnCode.ERROR_UNEXPECTED.get();
}
}
@@ -601,35 +627,30 @@
try {
factory = new LDAPManagementContextFactory(cfp);
} catch (ArgumentException e) {
- displayMessageAndUsageReference(ERR_ERROR_PARSING_ARGS.get(e.getMessage()));
+ displayErrorMessageAndUsageReference(ERR_ERROR_PARSING_ARGS.get(e.getMessage()));
return ReturnCode.CONFLICTING_ARGS.get();
}
// Handle batch file if any
if (batchFileArgument.isPresent()) {
handleBatchFile(args);
- // don't need to do anything else
return ReturnCode.SUCCESS.get();
}
int retCode = 0;
- if (parser.getSubCommand() == null) {
- hasSubCommand = false;
-
+ hasSubCommand = parser.getSubCommand() != null;
+ if (!hasSubCommand) {
if (isInteractive()) {
// Top-level interactive mode.
retCode = runInteractiveMode();
} else {
- LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ERR_DSCFG_ERROR_MISSING_SUBCOMMAND.get());
- displayMessageAndUsageReference(message);
+ displayErrorMessageAndUsageReference(
+ ERR_ERROR_PARSING_ARGS.get(ERR_DSCFG_ERROR_MISSING_SUBCOMMAND.get()));
retCode = ReturnCode.ERROR_USER_DATA.get();
}
} else {
- hasSubCommand = true;
-
// Retrieve the sub-command implementation and run it.
- SubCommandHandler handler = handlers.get(parser.getSubCommand());
- retCode = runSubCommand(handler);
+ retCode = runSubCommand(handlers.get(parser.getSubCommand()));
}
factory.close();
@@ -749,10 +770,10 @@
// Force retrieval of management context.
factory.getManagementContext(app);
} catch (ArgumentException e) {
- app.println(e.getMessageObject());
+ app.errPrintln(e.getMessageObject());
return ReturnCode.ERROR_UNEXPECTED.get();
} catch (ClientException e) {
- app.println(e.getMessageObject());
+ app.errPrintln(e.getMessageObject());
return ReturnCode.ERROR_UNEXPECTED.get();
}
@@ -768,7 +789,7 @@
return result.getValue();
}
} catch (ClientException e) {
- app.println(e.getMessageObject());
+ app.errPrintln(e.getMessageObject());
return ReturnCode.ERROR_UNEXPECTED.get();
}
}
@@ -788,11 +809,11 @@
return ReturnCode.ERROR_UNEXPECTED.get();
}
} catch (ArgumentException e) {
- println(e.getMessageObject());
+ errPrintln(e.getMessageObject());
return ReturnCode.ERROR_UNEXPECTED.get();
} catch (ClientException e) {
Throwable cause = e.getCause();
- println();
+ errPrintln();
if (cause instanceof ManagedObjectDecodingException) {
displayManagedObjectDecodingException(this, (ManagedObjectDecodingException) cause);
} else if (cause instanceof MissingMandatoryPropertiesException) {
@@ -801,13 +822,13 @@
displayOperationRejectedException(this, (OperationRejectedException) cause);
} else {
// Just display the default message.
- println(e.getMessageObject());
+ errPrintln(e.getMessageObject());
}
- println();
+ errPrintln();
return ReturnCode.ERROR_UNEXPECTED.get();
} catch (Exception e) {
- println(LocalizableMessage.raw(stackTraceToSingleLineString(e, true)));
+ errPrintln(LocalizableMessage.raw(stackTraceToSingleLineString(e, true)));
return ReturnCode.ERROR_UNEXPECTED.get();
}
}
@@ -901,7 +922,7 @@
writer.flush();
} catch (IOException ioe) {
- println(ERR_DSCFG_ERROR_WRITING_EQUIVALENT_COMMAND_LINE.get(file, ioe));
+ errPrintln(ERR_DSCFG_ERROR_WRITING_EQUIVALENT_COMMAND_LINE.get(file, ioe));
} finally {
closeSilently(writer);
}
@@ -993,7 +1014,7 @@
errPrintln();
}
} catch (IOException ex) {
- println(ERR_DSCFG_ERROR_READING_BATCH_FILE.get(ex));
+ errPrintln(ERR_DSCFG_ERROR_READING_BATCH_FILE.get(ex));
} finally {
closeSilently(bReader);
}
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DeleteSubCommandHandler.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DeleteSubCommandHandler.java
index 31bd8d2..dfbc298 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DeleteSubCommandHandler.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DeleteSubCommandHandler.java
@@ -26,6 +26,7 @@
*/
package org.forgerock.opendj.config.dsconfig;
+import static com.forgerock.opendj.cli.ReturnCode.*;
import static com.forgerock.opendj.dsconfig.DsconfigMessages.*;
import java.util.List;
@@ -60,6 +61,8 @@
import com.forgerock.opendj.cli.TableBuilder;
import com.forgerock.opendj.cli.TextTablePrinter;
+import static org.forgerock.opendj.config.dsconfig.DSConfig.*;
+
/**
* A sub-command handler which is used to delete existing managed objects.
* <p>
@@ -223,13 +226,7 @@
if (!forceArgument.isPresent()) {
LocalizableMessage pufn = path.getManagedObjectDefinition().getUserFriendlyName();
LocalizableMessage msg = ERR_DSCFG_ERROR_GET_PARENT_MONFE.get(pufn);
- if (app.isInteractive()) {
- app.println();
- app.printVerboseMessage(msg);
- return MenuResult.cancel();
- } else {
- throw new ClientException(ReturnCode.NO_SUCH_OBJECT, msg);
- }
+ return interactivePrintOrThrowError(app, msg, NO_SUCH_OBJECT);
} else {
return MenuResult.success(0);
}
@@ -311,18 +308,14 @@
LocalizableMessage msg = ERR_DSCFG_ERROR_DELETE_AUTHZ.get(ufn);
throw new ClientException(ReturnCode.INSUFFICIENT_ACCESS_RIGHTS, msg);
} catch (OperationRejectedException e) {
- LocalizableMessage msg;
- if (e.getMessages().size() == 1) {
- msg = ERR_DSCFG_ERROR_DELETE_ORE_SINGLE.get(ufn);
- } else {
- msg = ERR_DSCFG_ERROR_DELETE_ORE_PLURAL.get(ufn);
- }
+ LocalizableMessage msg = e.getMessages().size() == 1 ? ERR_DSCFG_ERROR_DELETE_ORE_SINGLE.get(ufn)
+ : ERR_DSCFG_ERROR_DELETE_ORE_PLURAL.get(ufn);
if (app.isInteractive()) {
// If interactive, let the user go back to the main menu.
- app.println();
- app.println(msg);
- app.println();
+ app.errPrintln();
+ app.errPrintln(msg);
+ app.errPrintln();
TableBuilder builder = new TableBuilder();
for (LocalizableMessage reason : e.getMessages()) {
builder.startRow();
@@ -369,12 +362,9 @@
/** Confirm deletion. */
private boolean confirmDeletion(ConsoleApplication app) throws ClientException {
if (app.isInteractive()) {
- LocalizableMessage prompt = INFO_DSCFG_CONFIRM_DELETE.get(relation.getUserFriendlyName());
app.println();
- if (!app.confirmAction(prompt, false)) {
- // Output failure message.
- LocalizableMessage msg = INFO_DSCFG_CONFIRM_DELETE_FAIL.get(relation.getUserFriendlyName());
- app.println(msg);
+ if (!app.confirmAction(INFO_DSCFG_CONFIRM_DELETE.get(relation.getUserFriendlyName()), false)) {
+ app.errPrintln(INFO_DSCFG_CONFIRM_DELETE_FAIL.get(relation.getUserFriendlyName()));
return false;
}
}
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java
index 765e4d6..63bbb3c 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/HelpSubCommandHandler.java
@@ -436,11 +436,11 @@
// Display the property synopsis and description.
app.println();
- app.errPrintln(pd.getSynopsis(), 4);
+ app.println(pd.getSynopsis(), 4);
if (pd.getDescription() != null) {
app.println();
- app.errPrintln(pd.getDescription(), 4);
+ app.println(pd.getDescription(), 4);
}
if (pd instanceof AggregationPropertyDefinition) {
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ListSubCommandHandler.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ListSubCommandHandler.java
index 3218083..51ec196 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ListSubCommandHandler.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/ListSubCommandHandler.java
@@ -25,9 +25,6 @@
*/
package org.forgerock.opendj.config.dsconfig;
-import static com.forgerock.opendj.dsconfig.DsconfigMessages.*;
-import static com.forgerock.opendj.cli.ArgumentConstants.LIST_TABLE_SEPARATOR;
-
import java.io.PrintStream;
import java.util.List;
import java.util.Set;
@@ -40,7 +37,6 @@
import org.forgerock.opendj.config.InstantiableRelationDefinition;
import org.forgerock.opendj.config.ManagedObjectDefinition;
import org.forgerock.opendj.config.ManagedObjectNotFoundException;
-import org.forgerock.opendj.config.ManagedObjectOption;
import org.forgerock.opendj.config.ManagedObjectPath;
import org.forgerock.opendj.config.OptionalRelationDefinition;
import org.forgerock.opendj.config.PropertyDefinition;
@@ -65,6 +61,13 @@
import com.forgerock.opendj.cli.TablePrinter;
import com.forgerock.opendj.cli.TextTablePrinter;
+import static org.forgerock.opendj.config.ManagedObjectOption.*;
+import static org.forgerock.opendj.config.dsconfig.DSConfig.*;
+
+import static com.forgerock.opendj.cli.ArgumentConstants.*;
+import static com.forgerock.opendj.cli.ReturnCode.*;
+import static com.forgerock.opendj.dsconfig.DsconfigMessages.*;
+
/**
* A sub-command handler which is used to list existing managed objects.
* <p>
@@ -232,13 +235,7 @@
} catch (ManagedObjectNotFoundException e) {
ufn = path.getManagedObjectDefinition().getUserFriendlyName();
LocalizableMessage msg = ERR_DSCFG_ERROR_GET_PARENT_MONFE.get(ufn);
- if (app.isInteractive()) {
- app.println();
- app.printVerboseMessage(msg);
- return MenuResult.cancel();
- } else {
- throw new ClientException(ReturnCode.NO_SUCH_OBJECT, msg);
- }
+ return interactivePrintOrThrowError(app, msg, NO_SUCH_OBJECT);
} catch (LdapException e) {
throw new ClientException(ReturnCode.OTHER, LocalizableMessage.raw(e.getLocalizedMessage()));
}
@@ -319,14 +316,8 @@
children.put(child.getManagedObjectDefinition().getName(), child);
} else {
// Indicate that the managed object does not exist.
- LocalizableMessage msg = ERR_DSCFG_ERROR_FINDER_NO_CHILDREN.get(ufn);
- if (app.isInteractive()) {
- app.println();
- app.printVerboseMessage(msg);
- return MenuResult.cancel();
- } else {
- throw new ClientException(ReturnCode.NO_SUCH_OBJECT, msg);
- }
+ return interactivePrintOrThrowError(
+ app, ERR_DSCFG_ERROR_FINDER_NO_CHILDREN.get(ufn), NO_SUCH_OBJECT);
}
} catch (AuthorizationException e) {
LocalizableMessage msg = ERR_DSCFG_ERROR_LIST_AUTHZ.get(ufn);
@@ -353,21 +344,10 @@
if (app.isScriptFriendly()) {
// Output just the names of the children.
for (String name : children.keySet()) {
- // Skip advanced and hidden components in non-advanced mode.
- if (!app.isAdvancedMode()) {
- ManagedObject<?> child = children.get(name);
- ManagedObjectDefinition<?, ?> d = child.getManagedObjectDefinition();
-
- if (d.hasOption(ManagedObjectOption.HIDDEN)) {
- continue;
- }
-
- if (d.hasOption(ManagedObjectOption.ADVANCED)) {
- continue;
- }
+ ManagedObjectDefinition<?, ?> d = children.get(name).getManagedObjectDefinition();
+ if (!canDisplay(app, d)) {
+ app.println(LocalizableMessage.raw(name));
}
-
- app.println(LocalizableMessage.raw(name));
}
} else {
// Create a table of their properties containing the name, type (if
@@ -391,15 +371,8 @@
ManagedObject<?> child = children.get(name);
ManagedObjectDefinition<?, ?> d = child.getManagedObjectDefinition();
- // Skip advanced and hidden components in non-advanced mode.
- if (!app.isAdvancedMode()) {
- if (d.hasOption(ManagedObjectOption.HIDDEN)) {
- continue;
- }
-
- if (d.hasOption(ManagedObjectOption.ADVANCED)) {
- continue;
- }
+ if (canDisplay(app, d)) {
+ continue;
}
// First output the name.
@@ -468,6 +441,10 @@
return MenuResult.success(0);
}
+ private boolean canDisplay(ConsoleApplication app, ManagedObjectDefinition<?, ?> d) {
+ return !app.isAdvancedMode() && (d.hasOption(HIDDEN) || d.hasOption(ADVANCED));
+ }
+
/** Display the set of values associated with a property. */
private <T> void displayProperty(ConsoleApplication app, TableBuilder builder, ManagedObject<?> mo,
PropertyDefinition<T> pd, PropertyValuePrinter valuePrinter) {
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/PropertyValueEditor.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/PropertyValueEditor.java
index 7e5fe48..0eccbcf 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/PropertyValueEditor.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/PropertyValueEditor.java
@@ -26,6 +26,7 @@
*/
package org.forgerock.opendj.config.dsconfig;
+import static com.forgerock.opendj.cli.ReturnCode.*;
import static com.forgerock.opendj.dsconfig.DsconfigMessages.*;
import java.util.ArrayList;
@@ -80,6 +81,8 @@
import com.forgerock.opendj.cli.TableBuilder;
import com.forgerock.opendj.cli.TextTablePrinter;
+import static org.forgerock.opendj.config.dsconfig.DSConfig.*;
+
/**
* Common methods used for interactively editing properties.
*/
@@ -131,13 +134,7 @@
} catch (ManagedObjectNotFoundException e) {
LocalizableMessage pufn = path.getManagedObjectDefinition().getUserFriendlyName();
LocalizableMessage msg = ERR_DSCFG_ERROR_GET_PARENT_MONFE.get(pufn);
- if (app.isInteractive()) {
- app.println();
- app.printVerboseMessage(msg);
- return MenuResult.cancel();
- } else {
- throw new ClientException(ReturnCode.NO_SUCH_OBJECT, msg);
- }
+ return interactivePrintOrThrowError(app, msg, NO_SUCH_OBJECT);
}
// Now let the user create the child component.
@@ -148,9 +145,9 @@
// FIXME: should really do something better with the exception
// handling here. For example, if a authz or communications
// exception occurs then the application should exit.
- app.println();
- app.println(e.getMessageObject());
- app.println();
+ app.errPrintln();
+ app.errPrintln(e.getMessageObject());
+ app.errPrintln();
app.pressReturnToContinue();
return MenuResult.cancel();
}
@@ -1710,10 +1707,10 @@
app.println();
app.println(INFO_EDITOR_HEADING_CONFIGURE_PROPERTY.get(pd.getName()));
app.println();
- app.errPrintln(pd.getSynopsis(), 4);
+ app.println(pd.getSynopsis(), 4);
if (pd.getDescription() != null) {
app.println();
- app.errPrintln(pd.getDescription(), 4);
+ app.println(pd.getDescription(), 4);
}
}
@@ -1850,8 +1847,8 @@
break;
} catch (PropertyException e) {
- app.println();
- app.println(ArgumentExceptionFactory.adaptPropertyException(e, d).getMessageObject());
+ app.errPrintln();
+ app.errPrintln(ArgumentExceptionFactory.adaptPropertyException(e, d).getMessageObject());
}
}
}
@@ -1877,9 +1874,9 @@
values.add(value);
}
} catch (PropertyException e) {
- app.println();
- app.println(ArgumentExceptionFactory.adaptPropertyException(e, d).getMessageObject());
- app.println();
+ app.errPrintln();
+ app.errPrintln(ArgumentExceptionFactory.adaptPropertyException(e, d).getMessageObject());
+ app.errPrintln();
}
}
}
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SetPropSubCommandHandler.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SetPropSubCommandHandler.java
index 49462e5..3f87ad9 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SetPropSubCommandHandler.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SetPropSubCommandHandler.java
@@ -308,9 +308,9 @@
if (app.isInteractive()) {
// If interactive, give the user the chance to fix the
// problems.
- app.println();
+ app.errPrintln();
displayMissingMandatoryPropertyException(app, e);
- app.println();
+ app.errPrintln();
if (!app.confirmAction(INFO_DSCFG_PROMPT_EDIT_AGAIN.get(ufn), true)) {
return MenuResult.cancel();
}
@@ -327,9 +327,9 @@
if (app.isInteractive()) {
// If interactive, give the user the chance to fix the
// problems.
- app.println();
+ app.errPrintln();
displayOperationRejectedException(app, e);
- app.println();
+ app.errPrintln();
if (!app.confirmAction(INFO_DSCFG_PROMPT_EDIT_AGAIN.get(ufn), true)) {
return MenuResult.cancel();
}
@@ -442,9 +442,9 @@
isBadReference = false;
} catch (MissingMandatoryPropertiesException e) {
// Give the user the chance to fix the problems.
- app.println();
+ app.errPrintln();
displayMissingMandatoryPropertyException(app, e);
- app.println();
+ app.errPrintln();
if (app.confirmAction(INFO_DSCFG_PROMPT_EDIT.get(rufn), true)) {
MenuResult<Void> result = modifyManagedObject(app, context, ref, handler);
if (result.isQuit()) {
@@ -460,9 +460,9 @@
throw new ClientException(ReturnCode.CONSTRAINT_VIOLATION, msg);
} catch (OperationRejectedException e) {
// Give the user the chance to fix the problems.
- app.println();
+ app.errPrintln();
displayOperationRejectedException(app, e);
- app.println();
+ app.errPrintln();
if (app.confirmAction(INFO_DSCFG_PROMPT_EDIT.get(rufn), true)) {
MenuResult<Void> result = modifyManagedObject(app, context, ref, handler);
if (result.isQuit()) {
@@ -497,9 +497,9 @@
// the user refused to modify it, then give the used the
// option of editing the referencing component.
if (isBadReference) {
- app.println();
- app.println(ERR_SET_REFERENCED_COMPONENT_DISABLED.get(ufn, rufn));
- app.println();
+ app.errPrintln();
+ app.errPrintln(ERR_SET_REFERENCED_COMPONENT_DISABLED.get(ufn, rufn));
+ app.errPrintln();
if (app.confirmAction(INFO_DSCFG_PROMPT_EDIT_AGAIN.get(ufn), true)) {
return MenuResult.again();
} else {
@@ -655,8 +655,8 @@
except = ArgumentExceptionFactory.unknownValueForChildComponent("\"" + objName + "\"");
}
if (app.isInteractive()) {
- app.println();
- app.printVerboseMessage(except.getMessageObject());
+ app.errPrintln();
+ app.errPrintln(except.getMessageObject());
return MenuResult.cancel();
} else {
throw except;
diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java
index 5a9c453..8cc109f 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/SubCommandHandler.java
@@ -1025,8 +1025,7 @@
switch (children.size()) {
case 0: {
// No options available - abort.
- LocalizableMessage msg = ERR_DSCFG_ERROR_FINDER_NO_CHILDREN.get(d.getUserFriendlyPluralName());
- app.println(msg);
+ app.errPrintln(ERR_DSCFG_ERROR_FINDER_NO_CHILDREN.get(d.getUserFriendlyPluralName()));
return MenuResult.cancel();
}
case 1: {
--
Gitblit v1.10.0