mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Violette Roche-Montane
18.05.2014 3711cef73dac69815f93c82324ead507ee1cc230
Checkpoint OPENDJ-1343 Migrate dsconfig / OPENDJ-1303 "opendj-cli"
- Added methods to ConsoleApplication which are going to be used by the server.
- Added APPLICATION_ERROR to ReturnCode.
- Added methods to Utils (used by opendj3)
2 files added
5 files modified
965 ■■■■■ changed files
opendj-cli/src/main/java/com/forgerock/opendj/cli/ConsoleApplication.java 341 ●●●●● patch | view | raw | blame | history
opendj-cli/src/main/java/com/forgerock/opendj/cli/ReturnCode.java 4 ●●●● patch | view | raw | blame | history
opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java 107 ●●●● patch | view | raw | blame | history
opendj-cli/src/main/resources/com/forgerock/opendj/cli/cli.properties 32 ●●●●● patch | view | raw | blame | history
opendj-cli/src/test/java/com/forgerock/opendj/cli/ConsoleApplicationTestCase.java 6 ●●●●● patch | view | raw | blame | history
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/package-info.java 30 ●●●●● patch | view | raw | blame | history
opendj-config/src/main/resources/com/forgerock/opendj/dsconfig/dsconfig.properties 445 ●●●●● patch | view | raw | blame | history
opendj-cli/src/main/java/com/forgerock/opendj/cli/ConsoleApplication.java
@@ -27,12 +27,11 @@
 */
package com.forgerock.opendj.cli;
import static com.forgerock.opendj.cli.CliMessages.INFO_ERROR_EMPTY_RESPONSE;
import static com.forgerock.opendj.cli.CliMessages.INFO_MENU_PROMPT_RETURN_TO_CONTINUE;
import static com.forgerock.opendj.cli.CliMessages.INFO_PROMPT_SINGLE_DEFAULT;
import static com.forgerock.opendj.cli.CliMessages.ERR_TRIES_LIMIT_REACHED;
import static com.forgerock.opendj.cli.CliMessages.*;
import static com.forgerock.opendj.cli.Utils.MAX_LINE_WIDTH;
import static com.forgerock.opendj.cli.Utils.CONFIRMATION_MAX_TRIES;
import static com.forgerock.opendj.cli.Utils.wrapText;
import static com.forgerock.opendj.util.StaticUtils.EOL;
import java.io.BufferedReader;
import java.io.Console;
@@ -43,6 +42,7 @@
import java.io.PrintStream;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
/**
 * This class provides an abstract base class which can be used as the basis of a console-based application.
@@ -60,6 +60,36 @@
    private final Console console = System.console();
    /**
     * Defines the different line styles for output.
     */
    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 warning.
         */
        WARNING
    }
    /**
     * Creates a new console application instance.
     */
    public ConsoleApplication() {
@@ -154,6 +184,17 @@
    }
    /**
     * Indicates whether or not this console application is running in its menu-driven mode. This can be used to dictate
     * whether output should go to the error stream or not. In addition, it may also dictate whether or not sub-menus
     * should display a cancel option as well as a quit option.
     *
     * @return Returns <code>true</code> if this console application is running in its menu-driven mode.
     */
    public boolean isMenuDrivenMode() {
        return false;
    }
    /**
     * Interactively prompts the user to press return to continue. This method should be called in situations where a
     * user needs to be given a chance to read some documentation before continuing (continuing may cause the
     * documentation to be scrolled out of view).
@@ -266,6 +307,92 @@
    }
    /**
     * Prints a progress bar on the same output stream line if not in quiet mode.
     *
     * <pre>
     * Like
     *   msg......   50%
     *   if progress is up to 100 :
     *   msg.....................  100%
     *   if progress is < 0 :
     *   msg....  FAIL
     *   msg.....................  FAIL
     * </pre>
     *
     * @param linePos
     *            The progress bar starts at this position on the line.
     * @param progress
     *            The current percentage progress to print.
     */
    public final void printProgressBar(final int linePos, final int progress) {
        if (!isQuiet()) {
            final int spacesLeft = MAX_LINE_WIDTH - linePos - 10;
            StringBuilder bar = new StringBuilder();
            if (progress != 0) {
                for (int i = 0; i < 50; i++) {
                    if ((i < (Math.abs(progress) / 2)) && (bar.length() < spacesLeft)) {
                        bar.append(".");
                    }
                }
            }
            bar.append(".   ");
            if (progress >= 0) {
                bar.append(progress).append("%     ");
            } else {
                bar.append("FAIL");
            }
            final int endBuilder = linePos + bar.length();
            for (int i = 0; i < endBuilder; i++) {
                bar.append("\b");
            }
            if (progress >= 100 || progress < 0) {
                bar.append(EOL);
            }
            out.print(bar.toString());
        }
    }
    /**
     * Print a line with EOL in the output stream.
     *
     * @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 Style msgStyle, final LocalizableMessage msg, final int indent) {
        if (!isQuiet()) {
            switch (msgStyle) {
            case TITLE:
                out.println();
                out.println(">>>> " + wrapText(msg, MAX_LINE_WIDTH, indent));
                out.println();
                break;
            case SUBTITLE:
                out.println(wrapText(msg, MAX_LINE_WIDTH, indent));
                out.println();
                break;
            case NOTICE:
                out.println(wrapText("* " + msg, MAX_LINE_WIDTH, indent));
                break;
            case ERROR:
                out.println();
                out.println(wrapText("** " + msg, MAX_LINE_WIDTH, indent));
                out.println();
                break;
            case WARNING:
                out.println(wrapText("[!] " + msg, MAX_LINE_WIDTH, indent));
                break;
            default:
                out.println(wrapText(msg, MAX_LINE_WIDTH, indent));
                break;
            }
        }
    }
    /**
     * Displays a message to the output stream if verbose mode is enabled.
     *
     * @param msg
@@ -291,12 +418,39 @@
     * @return The string value read from the user.
     */
    public final String readInput(LocalizableMessage prompt, final String defaultValue) throws ClientException {
        return readInput(prompt, defaultValue, null);
    }
    /**
     * Interactively prompts (on error output) the user to provide a string value. Any non-empty string will be allowed
     * (the empty string will indicate that the default should be used, if there is one).
     *
     * @param prompt
     *            The prompt to present to the user.
     * @param defaultValue
     *            The default value to assume if the user presses ENTER without typing anything, or {@code null} if
     *            there should not be a default and the user must explicitly provide a value.
     * @param msgStyle
     *            The formatted style chosen.
     * @throws ClientException
     *             If the line of input could not be retrieved for some reason.
     * @return The string value read from the user.
     */
    public final String readInput(LocalizableMessage prompt, final String defaultValue, final Style msgStyle)
            throws ClientException {
        if (msgStyle != null && msgStyle == Style.TITLE) {
            println();
        }
        while (true) {
            if (defaultValue != null) {
                prompt = INFO_PROMPT_SINGLE_DEFAULT.get(prompt.toString(), defaultValue);
            }
            final String response = readLineOfInput(prompt);
            if (msgStyle != null && (msgStyle == Style.TITLE || msgStyle == Style.SUBTITLE)) {
                println();
            }
            if ("".equals(response)) {
                if (defaultValue == null) {
                    print(INFO_ERROR_EMPTY_RESPONSE.get());
@@ -321,8 +475,8 @@
    public final char[] readPassword(final LocalizableMessage prompt) throws ClientException {
        if (console != null) {
            if (prompt != null) {
                err.print(wrap(prompt));
                err.print(" ");
                out.print(wrap(prompt));
                out.print(" ");
            }
            try {
                final char[] password = console.readPassword();
@@ -348,10 +502,10 @@
     * @throws ClientException
     *             If the line of input could not be retrieved for some reason.
     */
    final String readLineOfInput(final LocalizableMessage prompt) throws ClientException {
    public final String readLineOfInput(final LocalizableMessage prompt) throws ClientException {
        if (prompt != null) {
            err.print(wrap(prompt));
            err.print(" ");
            out.print(wrap(prompt));
            out.print(" ");
        }
        try {
            final String s = reader.readLine();
@@ -366,6 +520,49 @@
    }
    /**
     * Interactively retrieves a port value from the console.
     *
     * @param prompt
     *            The port prompt.
     * @param defaultValue
     *            The port default value.
     * @return Returns the port.
     * @throws ClientException
     *             If the port could not be retrieved for some reason.
     */
    public final int readPort(LocalizableMessage prompt, final int defaultValue) throws ClientException {
        final ValidationCallback<Integer> callback = new ValidationCallback<Integer>() {
            @Override
            public Integer validate(ConsoleApplication app, String input) throws ClientException {
                final String ninput = input.trim();
                if (ninput.length() == 0) {
                    return defaultValue;
                } else {
                    try {
                        int i = Integer.parseInt(ninput);
                        if (i < 1 || i > 65535) {
                            throw new NumberFormatException();
                        }
                        return i;
                    } catch (NumberFormatException e) {
                        // Try again...
                        app.println();
                        app.println(ERR_BAD_PORT_NUMBER.get(ninput));
                        app.println();
                        return null;
                    }
                }
            }
        };
        if (defaultValue != -1) {
            prompt = INFO_PROMPT_SINGLE_DEFAULT.get(prompt, defaultValue);
        }
        return readValidatedInput(prompt, callback, CONFIRMATION_MAX_TRIES);
    }
    /**
     * Interactively prompts for user input and continues until valid input is provided.
     *
     * @param <T>
@@ -402,8 +599,8 @@
     *            The maximum number of tries that we can make.
     * @return Returns the decoded user's response.
     * @throws ClientException
     *             If an unexpected error occurred which prevented validation or
     *             if the maximum number of tries was reached.
     *             If an unexpected error occurred which prevented validation or if the maximum number of tries was
     *             reached.
     */
    public final <T> T readValidatedInput(final LocalizableMessage prompt, final ValidationCallback<T> validator,
            final int maxTries) throws ClientException {
@@ -432,7 +629,7 @@
    /**
     * Returns the error stream. Effectively, when an application is in "interactive mode" all the informations should
     * be written in the stdout.
     * be written in the STDout.
     *
     * @return The error stream that should be used with this application.
     */
@@ -444,4 +641,124 @@
        }
    }
    /**
     * Commodity method that interactively confirms whether a user wishes to perform an action. If
     * the application is non-interactive, then the provided default is returned automatically. If there is an error an
     * error message is logged to the provided Logger and the default value is returned.
     *
     * @param prompt
     *            The prompt describing the action.
     * @param defaultValue
     *            The default value for the confirmation message. This will be returned if the application is
     *            non-interactive or if the user just presses return.
     * @param logger
     *            the Logger to be used to log the error message.
     * @return Returns <code>true</code> if the user wishes the action to be performed, or <code>false</code> if they
     *         refused.
     * @throws ClientException
     *             if the user did not provide valid answer after a certain number of tries
     *             (ConsoleApplication.CONFIRMATION_MAX_TRIES)
     */
    protected final boolean askConfirmation(LocalizableMessage prompt, boolean defaultValue, LocalizedLogger logger)
            throws ClientException {
        boolean v = defaultValue;
        boolean done = false;
        int nTries = 0;
        while (!done && (nTries < CONFIRMATION_MAX_TRIES)) {
            nTries++;
            try {
                v = confirmAction(prompt, defaultValue);
                done = true;
            } catch (ClientException ce) {
                if (ce.getMessageObject().toString().contains(ERR_CONFIRMATION_TRIES_LIMIT_REACHED.get(nTries))) {
                    throw ce;
                }
                logger.warn(LocalizableMessage.raw("Error reading input: " + ce, ce));
                // Try again...
                println();
            }
        }
        if (!done) {
            // This means we reached the maximum number of tries
            throw new ClientException(ReturnCode.ERROR_USER_DATA,
                    ERR_CONFIRMATION_TRIES_LIMIT_REACHED.get(CONFIRMATION_MAX_TRIES));
        }
        return v;
    }
    /**
     * Interactively confirms whether a user wishes to perform an action.
     * If the application is non-interactive, then the provided default is returned automatically.
     *
     * @param prompt
     *            The prompt describing the action.
     * @param defaultValue
     *            The default value for the confirmation message. This will be returned if the application is
     *            non-interactive or if the user just presses return.
     * @return Returns <code>true</code> if the user wishes the action to be performed, or <code>false</code> if they
     *         refused, or if an exception occurred.
     * @throws ClientException
     *             If the user's response could not be read from the console for some reason.
     */
    public final boolean confirmAction(LocalizableMessage prompt, final boolean defaultValue) throws ClientException {
        if (!isInteractive()) {
            return defaultValue;
        }
        final LocalizableMessage yes = INFO_GENERAL_YES.get();
        final LocalizableMessage no = INFO_GENERAL_NO.get();
        final LocalizableMessage errMsg = ERR_CONSOLE_APP_CONFIRM.get(yes, no);
        prompt = INFO_MENU_PROMPT_CONFIRM.get(prompt, yes, no, defaultValue ? yes : no);
        ValidationCallback<Boolean> validator = new ValidationCallback<Boolean>() {
            @Override
            public Boolean validate(ConsoleApplication app, String input) {
                String ninput = input.toLowerCase().trim();
                if (ninput.length() == 0) {
                    return defaultValue;
                } else if (no.toString().toLowerCase().startsWith(ninput)) {
                    return false;
                } else if (yes.toString().toLowerCase().startsWith(ninput)) {
                    return true;
                } else {
                    // Try again...
                    app.println();
                    app.println(errMsg);
                    app.println();
                }
                return null;
            }
        };
        return readValidatedInput(prompt, validator, CONFIRMATION_MAX_TRIES);
    }
    /**
     * Commodity method used to repeatedly ask the user to provide a port value.
     *
     * @param prompt
     *            the prompt message.
     * @param defaultValue
     *            the default value of the port to be proposed to the user.
     * @param logger
     *            the logger where the errors will be written.
     * @return the port value provided by the user.
     */
    protected int askPort(LocalizableMessage prompt, int defaultValue, LocalizedLogger logger) {
        int port = -1;
        while (port == -1) {
            try {
                port = readPort(prompt, defaultValue);
            } catch (ClientException ce) {
                port = -1;
                logger.warn(LocalizableMessage.raw("Error reading input: " + ce, ce));
            }
        }
        return port;
    }
}
opendj-cli/src/main/java/com/forgerock/opendj/cli/ReturnCode.java
@@ -104,6 +104,10 @@
     */
    JAVA_VERSION_INCOMPATIBLE(8),
    /**
     * Application specific error.
     */
    APPLICATION_ERROR(10),
    /**
     * The LDAP result code used for multi-stage SASL bind operations that are not
     * yet complete.
     */
opendj-cli/src/main/java/com/forgerock/opendj/cli/Utils.java
@@ -26,12 +26,10 @@
 */
package com.forgerock.opendj.cli;
import static com.forgerock.opendj.cli.CliMessages.ERR_INCOMPATIBLE_JAVA_VERSION;
import static com.forgerock.opendj.cli.CliMessages.INFO_TIME_IN_DAYS_HOURS_MINUTES_SECONDS;
import static com.forgerock.opendj.cli.CliMessages.INFO_TIME_IN_HOURS_MINUTES_SECONDS;
import static com.forgerock.opendj.cli.CliMessages.INFO_TIME_IN_MINUTES_SECONDS;
import static com.forgerock.opendj.cli.CliMessages.INFO_TIME_IN_SECONDS;
import static com.forgerock.opendj.cli.CliMessages.*;
import com.forgerock.opendj.util.OperatingSystem;
import static com.forgerock.opendj.util.StaticUtils.EOL;
import java.io.File;
@@ -39,11 +37,19 @@
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.security.GeneralSecurityException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
import java.util.TimeZone;
import javax.naming.AuthenticationException;
import javax.naming.CommunicationException;
import javax.naming.NamingException;
import javax.naming.NamingSecurityException;
import javax.naming.NoPermissionException;
import javax.net.ssl.SSLHandshakeException;
import org.forgerock.i18n.LocalizableMessage;
/**
@@ -52,7 +58,7 @@
final public class Utils {
    /** Platform appropriate line separator. */
    static public final String LINE_SEPARATOR = System.getProperty("line.separator");
    public static final String LINE_SEPARATOR = System.getProperty("line.separator");
    /**
     * The value used to display arguments that must be obfuscated (such as passwords). This does not require
@@ -61,11 +67,28 @@
    public final static String OBFUSCATED_VALUE = "******";
    /**
     * The maximum number of times we try to confirm.
     */
    public final static int CONFIRMATION_MAX_TRIES = 5;
    /**
     * The date format string that will be used to construct and parse dates represented using generalized time. It is
     * assumed that the provided date formatter will be set to UTC.
     */
    public static final String DATE_FORMAT_LOCAL_TIME = "dd/MMM/yyyy:HH:mm:ss Z";
    /**
     * Returns the message to be displayed in the file with the equivalent command-line with information about the
     * current time.
     *
     * @return the message to be displayed in the file with the equivalent command-line with information about the
     *         current time.
     */
    public static String getCurrentOperationDateMessage() {
        String date = formatDateTimeStringForEquivalentCommand(new Date());
        return INFO_OPERATION_START_TIME_MESSAGE.get(date).toString();
    }
    private static final String COMMENT_SHELL_UNIX = "# ";
    private static final String COMMENT_BATCH_WINDOWS = "rem ";
@@ -79,8 +102,7 @@
     * The column at which to wrap long lines of output in the command-line
     * tools.
     */
    static public final int MAX_LINE_WIDTH;
    public static final int MAX_LINE_WIDTH;
    static {
        int columns = 80;
        try {
@@ -98,18 +120,18 @@
     * Formats a Date to String representation in "dd/MMM/yyyy:HH:mm:ss Z".
     *
     * @param date
     *            to format; null if <code>date</code> is null
     * @return string representation of the date
     *            The date to format; null if <code>date</code> is null.
     * @return A string representation of the date.
     */
    public String formatDateTimeStringForEquivalentCommand(Date date) {
        String timeStr = null;
    public static String formatDateTimeStringForEquivalentCommand(final Date date) {
        if (date != null) {
            SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT_LOCAL_TIME);
            final SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT_LOCAL_TIME);
            dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
            timeStr = dateFormat.format(date);
            return dateFormat.format(date);
        }
        return timeStr;
        return null;
    }
    /**
     * Filters the provided value to ensure that it is appropriate for use as an
     * exit code. Exit code values are generally only allowed to be between 0
@@ -412,6 +434,61 @@
        return "";
    }
    /**
     * Tells whether the provided Throwable was caused because of a problem with a certificate while trying to establish
     * a connection.
     *
     * @param t
     *            The Throwable to analyze.
     * @return <CODE>true</CODE> if the provided Throwable was caused because of a problem with a certificate while
     *         trying to establish a connection and <CODE>false</CODE> otherwise.
     */
    public static boolean isCertificateException(Throwable t) {
        boolean returnValue = false;
        while (!returnValue && (t != null)) {
            returnValue = (t instanceof SSLHandshakeException) || (t instanceof GeneralSecurityException);
            t = t.getCause();
        }
        return returnValue;
    }
    /**
     * Returns a message object for the given NamingException.
     *
     * @param ne
     *            The NamingException.
     * @param hostPort
     *            The hostPort representation of the server we were contacting when the NamingException occurred.
     * @return A message object for the given NamingException.
     */
    public static LocalizableMessage getMessageForException(NamingException ne, String hostPort) {
        LocalizableMessage msg;
        String arg;
        if (ne.getLocalizedMessage() != null) {
            arg = ne.getLocalizedMessage();
        } else if (ne.getExplanation() != null) {
            arg = ne.getExplanation();
        } else {
            arg = ne.toString(true);
        }
        if (Utils.isCertificateException(ne)) {
            msg = INFO_ERROR_READING_CONFIG_LDAP_CERTIFICATE_SERVER.get(hostPort, arg);
        } else if (ne instanceof AuthenticationException) {
            msg = INFO_CANNOT_CONNECT_TO_REMOTE_AUTHENTICATION.get(hostPort, arg);
        } else if (ne instanceof NoPermissionException) {
            msg = INFO_CANNOT_CONNECT_TO_REMOTE_PERMISSIONS.get(hostPort, arg);
        } else if (ne instanceof NamingSecurityException) {
            msg = INFO_CANNOT_CONNECT_TO_REMOTE_PERMISSIONS.get(hostPort, arg);
        } else if (ne instanceof CommunicationException) {
            msg = ERR_CANNOT_CONNECT_TO_REMOTE_COMMUNICATION.get(hostPort, arg);
        } else {
            msg = INFO_CANNOT_CONNECT_TO_REMOTE_GENERIC.get(hostPort, arg);
        }
        return msg;
    }
    // Prevent instantiation.
    private Utils() {
        // Do nothing.
opendj-cli/src/main/resources/com/forgerock/opendj/cli/cli.properties
@@ -729,6 +729,7 @@
INFO_MENU_PROMPT_MULTI=Enter one or more choices separated by commas:
INFO_MENU_PROMPT_SINGLE_DEFAULT=Enter choice [%s]:
INFO_MENU_PROMPT_SINGLE=Enter choice:
INFO_MENU_PROMPT_CONFIRM=%s (%s / %s) [%s]:
INFO_MENU_OPTION_HELP=help
INFO_MENU_OPTION_HELP_KEY=?
INFO_MENU_OPTION_CANCEL=cancel
@@ -739,4 +740,35 @@
INFO_MENU_CHAR_OPTION=%c)
INFO_MENU_OPTION_BACK=back
INFO_MENU_OPTION_BACK_KEY=b
INFO_GENERAL_NO=no
INFO_GENERAL_YES=yes
ERR_CONSOLE_APP_CONFIRM=Invalid response. Please enter \
 "%s" or "%s"
ERR_TRIES_LIMIT_REACHED=Input tries limit reached (%d)
ERR_BAD_PORT_NUMBER=Invalid port number "%s". Please \
  enter a valid port number between 1 and 65535
INFO_OPERATION_START_TIME_MESSAGE=Operation date: %s
INFO_ERROR_READING_CONFIG_LDAP_CERTIFICATE_SERVER=Error reading data from \
 server %s.  There is an error with the certificate presented by the \
 server.\nDetails: %s
INFO_CANNOT_CONNECT_TO_REMOTE_AUTHENTICATION=The provided credentials are not \
 valid in server %s.  Details: %s
INFO_CANNOT_CONNECT_TO_REMOTE_PERMISSIONS=You do not have enough access \
 rights to read the configuration in %s. %nProvide credentials with enough \
 rights.  Details: %s
ERR_CANNOT_CONNECT_TO_REMOTE_COMMUNICATION=Could not connect to \
 %s. Check that the server is running and that it is accessible \
 from the local machine.  Details: %s
INFO_CANNOT_CONNECT_TO_REMOTE_GENERIC=Could not connect to %s.  Check that the \
 server is running and that the provided credentials are valid.%nError \
 details:%n%s
ERR_CONFIRMATION_TRIES_LIMIT_REACHED=Confirmation tries limit reached \
 (%d)
INFO_ADMINISTRATOR_UID_PROMPT=Global Administrator User ID
INFO_ADMINISTRATOR_PWD_PROMPT=Global Administrator Password:
INFO_ADMINISTRATOR_PWD_CONFIRM_PROMPT=Confirm Password:
ERR_ADMINISTRATOR_PWD_DO_NOT_MATCH=The provided passwords do not match.
ERR_BAD_INTEGER=Invalid integer number "%s". Please \
  enter a valid integer
opendj-cli/src/test/java/com/forgerock/opendj/cli/ConsoleApplicationTestCase.java
@@ -104,6 +104,12 @@
        public void setQuiet(boolean q) {
            quiet = q;
        }
        @Override
        public boolean isMenuDrivenMode() {
            // TODO Auto-generated method stub
            return false;
        }
    }
    @Test()
opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/package-info.java
New file
@@ -0,0 +1,30 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
 * or http://forgerock.org/license/CDDLv1.0.html.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at legal-notices/CDDLv1_0.txt.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Copyright 2014 ForgeRock AS
 */
/**
 * This package contains the DS config.
 */
package org.forgerock.opendj.config.dsconfig;
opendj-config/src/main/resources/com/forgerock/opendj/dsconfig/dsconfig.properties
New file
@@ -0,0 +1,445 @@
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License").  You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
# or http://forgerock.org/license/CDDLv1.0.html.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at legal-notices/CDDLv1_0.txt.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information:
#      Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#      Copyright 2006-2010 Sun Microsystems, Inc.
#      Portions Copyright 2011-2014 ForgeRock AS
#
# Format string definitions
#
# Keys must be formatted as follows:
#
# [SEVERITY]_[DESCRIPTION]_[ORDINAL]
#
# where:
#
# SEVERITY is one of:
# [ERR, WARN, NOTICE, INFO, DEBUG]
#
# DESCRIPTION is an upper case string providing a hint as to the context of
# the message in upper case with the underscore ('_') character serving as
# word separator
#
# ORDINAL is an integer unique among other ordinals in this file
#
ERR_DSCFG_ERROR_CANNOT_READ_CONNECTION_PARAMETERS_1=The connection \
 parameters could not be read due to the following error: %s
ERR_DSCFG_ERROR_LDAP_SIMPLE_BIND_FAILED_2=Unable to authenticate to \
 the server as "%s"
ERR_DSCFG_ERROR_LDAP_FAILED_TO_CONNECT_3=Unable to connect to the \
 server at "%s" on port %s
ERR_DSCFG_ERROR_LDAP_SIMPLE_BIND_NOT_SUPPORTED_4=Unable to \
 authenticate using simple authentication
INFO_DSCFG_DESCRIPTION_SUBCMD_CREATE_5=Creates %s
INFO_DSCFG_DESCRIPTION_SUBCMD_DELETE_6=Deletes %s
INFO_DSCFG_DESCRIPTION_SUBCMD_LIST_7=Lists existing %s
INFO_DSCFG_DESCRIPTION_SUBCMD_GETPROP_8=Shows %s properties
INFO_DSCFG_DESCRIPTION_SUBCMD_SETPROP_9=Modifies %s properties
ERR_DSCFG_ERROR_MISSING_SUBCOMMAND_10=A sub-command must be \
 specified
INFO_DSCFG_DESCRIPTION_TYPE_11=The type of %s which should be created. The \
 value for TYPE can be one of: %s
ERR_DSCFG_ERROR_NO_PASSWORD_12=No password was specified for \
 administrator "%s"
ERR_DSCFG_ERROR_PROPERTY_UNRECOGNIZED_13=The property "%s" is not a \
 recognized property of %s
ERR_DSCFG_ERROR_PROPERTY_INVALID_VALUE_14=The value "%s" is not a \
 valid value for the %s property "%s" which has the following syntax: %s
ERR_DSCFG_ERROR_PROPERTY_READ_ONLY_15=The %s property "%s" is \
 read-only and cannot be modified
ERR_DSCFG_ERROR_PROPERTY_MANDATORY_16=The %s property "%s" is \
 mandatory and must be specified
ERR_DSCFG_ERROR_PROPERTY_SINGLE_VALUED_17=It is not possible to \
 specify multiple values for the %s property "%s" as it is single-valued
INFO_DSCFG_DESCRIPTION_SUBCMD_HELPPROP_18=Describes managed objects and \
 their properties
INFO_DSCFG_HEADING_COMPONENT_NAME_19=Component
INFO_DSCFG_HEADING_PROPERTY_NAME_20=Property
INFO_DSCFG_HEADING_PROPERTY_VALUE_21=Value(s)
INFO_DSCFG_HEADING_PROPERTY_SYNTAX_22=Syntax
INFO_DSCFG_HEADING_PROPERTY_OPTIONS_23=Options
INFO_DSCFG_DESCRIPTION_PROPERTY_SYNTAX_HELP_24=See detailed help
ERR_DSCFG_ERROR_GET_PARENT_DDE_25=The parent %s could not be \
 retrieved because its type could not be determined. This is probably due to \
 the %s having an invalid LDAP entry. Check that the %s has the correct object \
 classes
ERR_DSCFG_ERROR_GET_PARENT_MODE_26=The parent %s could not be \
 retrieved because of the reasons listed below:
ERR_DSCFG_ERROR_GET_PARENT_MONFE_27=The parent %s does not exist
ERR_DSCFG_ERROR_CREATE_MOAEE_28=The %s could not be created because \
 there is already an existing one with the same name
ERR_DSCFG_ERROR_CREATE_AUTHZ_29=The %s could not be created because \
 you do not have the correct authorization
ERR_DSCFG_ERROR_CREATE_CE_30=The %s could not be created due to a \
 communications problem: %s
ERR_DSCFG_ERROR_CREATE_CME_31=The %s could not be created because \
 another client is currently making conflicting configuration changes
ERR_DSCFG_ERROR_DELETE_MONFE_32=The %s could not be deleted because \
 it does not exist
ERR_DSCFG_ERROR_DELETE_AUTHZ_33=The %s could not be deleted because \
 you do not have the correct authorization
ERR_DSCFG_ERROR_DELETE_CE_34=The %s could not be deleted due to a \
 communications problem: %s
ERR_DSCFG_ERROR_DELETE_CME_35=The %s could not be deleted because \
 another client is currently making conflicting configuration changes
ERR_DSCFG_ERROR_GET_CHILD_DDE_36=The %s could not be retrieved \
 because its type could not be determined. This is probably due to the %s \
 having an invalid LDAP entry. Check that the %s object classes are correct
ERR_DSCFG_ERROR_GET_CHILD_MODE_37=The %s could not be retrieved \
 because of the reasons listed below:
ERR_DSCFG_ERROR_GET_CHILD_MONFE_38=The %s does not exist
ERR_DSCFG_ERROR_GET_CHILD_AUTHZ_39=The %s could not be accessed \
 because you do not have the correct authorization
ERR_DSCFG_ERROR_GET_CHILD_CE_40=The %s could not be accessed due to \
 a communications problem: %s
ERR_DSCFG_ERROR_GET_CHILD_CME_41=The %s could not be accessed \
 because another client is currently making conflicting configuration changes
ERR_DSCFG_ERROR_MODIFY_AUTHZ_42=The %s could not be modified because \
 you do not have the correct authorization
ERR_DSCFG_ERROR_MODIFY_CE_43=The %s could not be modified due to a \
 communications problem: %s
ERR_DSCFG_ERROR_MODIFY_CME_44=The %s could not be modified because \
 another client is currently making conflicting configuration changes
ERR_DSCFG_ERROR_LIST_DDE_45=The %s could not be retrieved because \
 its type could not be determined. This is probably due to the %s having an \
 invalid LDAP entry. Check that the %s object classes are correct
ERR_DSCFG_ERROR_LIST_MODE_46=The %s could not be retrieved because \
 of the reasons listed below:
ERR_DSCFG_ERROR_LIST_MONFE_47=The %s does not exist
ERR_DSCFG_ERROR_LIST_AUTHZ_48=The %s could not be listed because you \
 do not have the correct authorization
ERR_DSCFG_ERROR_LIST_CE_49=The %s could not be listed due to a \
 communications problem: %s
ERR_DSCFG_ERROR_LIST_CME_50=The %s could not be listed because \
 another client is currently making conflicting configuration changes
ERR_DSCFG_ERROR_PROPERTY_UNKNOWN_ERROR_51=The value(s) of the %s \
 property "%s" could not be determined due to an unknown error: %s
ERR_DSCFG_ERROR_PROPERTY_DEFAULT_BEHAVIOR_52=The default value(s) of \
 the %s property "%s" could not be determined due to the following reason: %s
ERR_DSCFG_ERROR_NO_SEPARATOR_IN_PROPERTY_VALUE_53=The property \
 argument "%s" does not contain a name/value separator. The argument should \
 have the following syntax: property:value
ERR_DSCFG_ERROR_NO_NAME_IN_PROPERTY_VALUE_54=The property argument \
 "%s" does not contain a property name. The argument should have the following \
 syntax: property:value
ERR_DSCFG_ERROR_NO_VALUE_IN_PROPERTY_VALUE_55=The property argument \
 "%s" does not contain a property value. The argument should have the \
 following syntax: property:value
ERR_DSCFG_ERROR_SUB_TYPE_UNRECOGNIZED_56=The sub-type "%s" is not a \
 recognized type of %s. It should be one of: %s
ERR_DSCFG_ERROR_NO_SEPARATOR_IN_PROPERTY_MOD_57=The property \
 modification "%s" does not contain a name/value separator. The argument \
 should have the following syntax: property[+|-]:value
ERR_DSCFG_ERROR_NO_NAME_IN_PROPERTY_MOD_58=The property modification \
 "%s" does not contain a property name. The argument should have the following \
 syntax: property[+|-]:value
ERR_DSCFG_ERROR_INCOMPATIBLE_PROPERTY_MOD_59=The property \
 modification "%s" is incompatible with another modification to the same \
 property
INFO_DSCFG_DESCRIPTION_TYPE_DEFAULT_60=The type of %s which should be \
 created (Default: %s). The value for TYPE can be one of: %s
INFO_DSCFG_DESCRIPTION_RECORD_61=Modifies the display output to show one \
 property value per line
INFO_DSCFG_DESCRIPTION_UNIT_TIME_62=Display time data using the specified \
 unit. The value for UNIT can be one of ms, s, m, h, d, or w (milliseconds, \
 seconds, minutes, hours, days, or weeks)
INFO_DSCFG_DESCRIPTION_UNIT_SIZE_63=Display size data using the specified \
 unit. The value for UNIT can be one of b, kb, mb, gb, or tb (bytes, \
 kilobytes, megabytes, gigabytes, or terabytes)
INFO_DSCFG_ERROR_TIME_UNIT_UNRECOGNIZED_64=The time unit "%s" is invalid. \
 The valid time units are ms, s, m, h, d, or w (milliseconds, seconds, \
 minutes, hours, days, or weeks)
INFO_DSCFG_ERROR_SIZE_UNIT_UNRECOGNIZED_65=The size unit "%s" is invalid. \
 The valid size units are b, kb, mb, gb, or tb (bytes, kilobytes, megabytes, \
 gigabytes, or terabytes)
INFO_DSCFG_HEADING_COMPONENT_TYPE_66=Type
INFO_DSCFG_DESCRIPTION_SHOW_GROUP_USAGE_67=Display subcommands relating to \
 %s
INFO_DSCFG_DESCRIPTION_SHOW_GROUP_USAGE_ALL_68=Display all subcommands
INFO_DSCFG_DESCRIPTION_SHOW_GROUP_USAGE_SUMMARY_69=Display summary usage \
 information
INFO_DSCFG_DESCRIPTION_NAME_70=The name of the %s
INFO_DSCFG_DESCRIPTION_PROP_71=The name of a property to be displayed
INFO_DSCFG_DESCRIPTION_PROP_VAL_72=Assigns a value to a property where PROP \
 is the name of the property and VALUE is the single value to be assigned. \
 Specify the same property multiple times in order to assign more than one \
 value to it
INFO_DSCFG_DESCRIPTION_ADD_PROP_VAL_73=Adds a single value to a property \
 where PROP is the name of the property and VALUE is the single value to be \
 added
INFO_DSCFG_DESCRIPTION_REMOVE_PROP_VAL_74=Removes a single value from a \
 property where PROP is the name of the property and VALUE is the single value \
 to be removed
INFO_DSCFG_DESCRIPTION_RESET_PROP_75=Resets a property back to its default \
 values where PROP is the name of the property to be reset
INFO_DSCFG_DESCRIPTION_HELP_TYPE_76=The type of components whose properties \
 should be described. The value for TYPE must be one of the component types \
 associated with the CATEGORY specified using the "--category" option
ERR_DSCFG_ERROR_BIND_PASSWORD_NONINTERACTIVE_77=The LDAP bind \
 password was not specified and cannot be read interactively
INFO_DSCFG_DESCRIPTION_FORCE_1196=Ignore non-existent %s
ERR_DSCFG_ERROR_UNABLE_TO_RESET_MANDATORY_PROPERTY_78=The %s \
 property "%s" is mandatory cannot be reset. Use the "%s" option to specify a \
 new value
ERR_DSCFG_ERROR_UNABLE_TO_RESET_PROPERTY_WITH_VALUE_79="--%s %s" : \
 the argument "--%s" \
 reset the property to the default value. It cannot be used to set a property \
 to a given value
ERR_DSCFG_ERROR_ILLEGAL_NAME_SYNTAX_80=The name "%s" is not a valid \
 name for the %s which has the following syntax: %s
ERR_DSCFG_ERROR_ILLEGAL_NAME_EMPTY_81=Empty names are not permitted \
 for %s
ERR_DSCFG_ERROR_ILLEGAL_NAME_BLANK_82=Blank names are not permitted \
 for %s
ERR_DSCFG_ERROR_ILLEGAL_NAME_UNKNOWN_83=The name "%s" is not a valid \
 name for the %s
INFO_DSCFG_DESCRIPTION_NAME_CREATE_84=The name of the new %s
INFO_DSCFG_DESCRIPTION_NAME_CREATE_EXT_85=The name of the new %s which will \
 also be used as the value of the "%s" property: %s
ERR_DSCFG_ERROR_UNABLE_TO_SET_NAMING_PROPERTY_86=The property "%s" \
 cannot be set as it is defined implicitly by the name of the %s
INFO_DSCFG_DESCRIPTION_ADVANCED_87=Allows the configuration of advanced \
 components and properties
ERR_DSCFG_ERROR_MISSING_NON_INTERACTIVE_ARG_88=The argument "--%s" \
 must be specified when this application is used non-interactively
INFO_DSCFG_CREATE_TYPE_PROMPT_89=>>>> Select the type of %s that you want to \
 create:
INFO_DSCFG_CREATE_NAME_PROMPT_90=>>>> Enter a name for the %s that you want to \
 create:
ERR_DSCFG_ERROR_CREATE_NAME_ALREADY_EXISTS_91=There is already \
 another %s with the name "%s"
INFO_DSCFG_DESCRIPTION_CREATE_HELP_HEADING_TYPE_92=Type
INFO_DSCFG_DESCRIPTION_CREATE_HELP_HEADING_DESCR_93=Description
ERR_DSCFG_ERROR_FINDER_NO_CHILDREN_94=Unable to continue since there \
 are no %s currently configured on the server
INFO_DSCFG_FINDER_PROMPT_SINGLE_95=>>>> There is only one %s: "%s". Are you sure \
 that this is the correct one?
INFO_DSCFG_FINDER_PROMPT_MANY_96=>>>> Select the %s from the following list:
ERR_DSCFG_ERROR_FINDER_NO_CHILDREN_NULL_97=Unable to continue since there \
 is no such an object currently configured on the server
INFO_DSCFG_HELP_FIELD_ENUM_98=one of the following values:
INFO_DSCFG_HELP_FIELD_UNDEFINED_99=undefined
INFO_DSCFG_HELP_FIELD_INHERITED_ABS_100=inherits from the property "%s" in \
 the %s
INFO_DSCFG_HELP_FIELD_INHERITED_PARENT_101=inherits from the property "%s" \
 in the parent %s
INFO_DSCFG_HELP_FIELD_INHERITED_THIS_102=inherits from the property "%s" in \
 this %s
INFO_DSCFG_HELP_FIELD_SERVER_RESTART_103=The server must be restarted in \
 order for changes to this property to take effect
INFO_DSCFG_HELP_FIELD_COMPONENT_RESTART_104=The %s must be restarted in \
 order for changes to this property to take effect
INFO_DSCFG_HELP_FIELD_READ_ONLY_105=read-only - this property can only be \
 specified when the %s is created
INFO_DSCFG_HELP_FIELD_MONITORING_106=monitoring - this property is \
 automatically generated by the server
INFO_DSCFG_HELP_HEADING_PROPERTY_107=Property: %s
INFO_DSCFG_HELP_HEADING_COMPONENT_108=Component name: %s
INFO_DSCFG_HELP_HEADING_DEFAULT_109=Default behavior
INFO_DSCFG_HELP_HEADING_MANDATORY_110=Mandatory
INFO_DSCFG_HELP_HEADING_ADVANCED_111=Advanced
INFO_DSCFG_HELP_HEADING_MULTI_VALUED_112=Multi-valued
INFO_DSCFG_HELP_HEADING_READ_ONLY_113=Read-only
INFO_DSCFG_HELP_HEADING_SYNTAX_114=Syntax
INFO_DSCFG_HELP_DESCRIPTION_OPTION_115=Option Types:
INFO_DSCFG_HELP_DESCRIPTION_READ_116=Property value(s) are readable
INFO_DSCFG_HELP_DESCRIPTION_WRITE_117=Property value(s) are writable
INFO_DSCFG_HELP_DESCRIPTION_MANDATORY_118=The property is mandatory
INFO_DSCFG_HELP_DESCRIPTION_SINGLE_VALUED_119=The property is single-valued
INFO_DSCFG_HELP_DESCRIPTION_ADMIN_ACTION_120=Administrative action is \
 required for changes to take effect
INFO_DSCFG_CONFIRM_CREATE_121=Are you sure that you want to create the %s?
INFO_DSCFG_CONFIRM_DELETE_122=Are you sure that you want to delete the %s?
INFO_DSCFG_CONFIRM_MODIFY_123=Are you sure that you want to modify the %s?
INFO_DSCFG_CONFIRM_CREATE_SUCCESS_124=The %s was created successfully
INFO_DSCFG_CONFIRM_DELETE_SUCCESS_125=The %s was deleted successfully
INFO_DSCFG_CONFIRM_MODIFY_SUCCESS_126=The %s was modified successfully
INFO_DSCFG_CONFIRM_CREATE_FAIL_127=The %s was not created
INFO_DSCFG_CONFIRM_DELETE_FAIL_128=The %s was not deleted
INFO_DSCFG_CONFIRM_MODIFY_FAIL_129=The %s was not modified
INFO_DSCFG_DESCRIPTION_HELP_CATEGORY_130=The category of components whose \
 properties should be described
ERR_DSCFG_ERROR_CATEGORY_UNRECOGNIZED_131="%s" is not a recognized \
 component category
ERR_DSCFG_ERROR_CATEGORY_TYPE_UNRECOGNIZED_132="%s" is not a \
 recognized component type in category "%s"
ERR_DSCFG_ERROR_PROPERTY_UNRECOGNIZED_NO_DEFN_133=The property "%s" \
 is not a recognized property
INFO_DSCFG_DESCRIPTION_HELP_INHERITED_134=Modifies the display output to \
 show the inherited properties of components
INFO_VALUE_TRUE_135=true
INFO_VALUE_FALSE_136=false
INFO_VALUE_UNLIMITED_137=unlimited
INFO_EDITOR_PROMPT_SELECT_VALUE_SINGLE_138=Select a value for the "%s" property:
INFO_EDITOR_PROMPT_SELECT_VALUE_MULTI_139=Select one or more values for the "%s" property:
INFO_EDITOR_HEADING_SYNTAX_140=Syntax:
INFO_EDITOR_HEADING_VALUES_SUMMARY_141=The "%s" property has the following values:
INFO_EDITOR_PROMPT_SELECT_VALUES_ADD_142=Select the values you wish to add:
INFO_EDITOR_PROMPT_SELECT_VALUES_REMOVE_143=Select the values you wish to remove:
INFO_EDITOR_PROMPT_MODIFY_MENU_144=Do you want to modify the "%s" property?
INFO_EDITOR_OPTION_ADD_ALL_VALUES_145=Add all values
INFO_EDITOR_OPTION_ADD_ONE_OR_MORE_VALUES_146=Add one or more values
INFO_EDITOR_OPTION_REMOVE_ONE_OR_MORE_VALUES_147=Remove one or more values
INFO_EDITOR_OPTION_REMOVE_ALL_VALUES_148=Remove all values
INFO_EDITOR_OPTION_REVERT_CHANGES_149=Revert changes
INFO_EDITOR_OPTION_LEAVE_UNDEFINED_150=Leave undefined
INFO_EDITOR_OPTION_USE_DEFAULT_ALIAS_151=Use the default behavior: %s
INFO_EDITOR_OPTION_USE_DEFAULT_INHERITED_ALIAS_152=Use the inherited default behavior: %s
INFO_EDITOR_OPTION_USE_DEFAULT_INHERITED_ALIAS_UNDEFINED_153=Use the inherited default behavior: undefined
INFO_EDITOR_OPTION_USE_VALUE_154=Use the value: %s
INFO_EDITOR_OPTION_USE_DEFAULT_VALUE_155=Use the default value: %s
INFO_EDITOR_OPTION_USE_INHERITED_DEFAULT_VALUE_156=Use the inherited default value: %s
INFO_EDITOR_OPTION_USE_VALUES_157=Use these values
INFO_EDITOR_OPTION_USE_DEFAULT_VALUES_158=Use these default values
INFO_EDITOR_OPTION_USE_INHERITED_DEFAULT_VALUES_159=Use these inherited default values
INFO_EDITOR_OPTION_KEEP_DEFAULT_ALIAS_160=Keep the default behavior: %s
INFO_EDITOR_OPTION_KEEP_DEFAULT_INHERITED_ALIAS_161=Keep the inherited default behavior: %s
INFO_EDITOR_OPTION_KEEP_DEFAULT_INHERITED_ALIAS_UNDEFINED_162=Keep the inherited default behavior: undefined
INFO_EDITOR_OPTION_KEEP_VALUE_163=Keep the value: %s
INFO_EDITOR_OPTION_KEEP_DEFAULT_VALUE_164=Keep the default value: %s
INFO_EDITOR_OPTION_KEEP_INHERITED_DEFAULT_VALUE_165=Keep the inherited default value: %s
INFO_EDITOR_OPTION_KEEP_VALUES_166=Keep these values
INFO_EDITOR_OPTION_KEEP_DEFAULT_VALUES_167=Keep these default values
INFO_EDITOR_OPTION_KEEP_INHERITED_DEFAULT_VALUES_168=Keep these inherited default values
INFO_EDITOR_OPTION_RESET_DEFAULT_ALIAS_169=Reset to the default behavior: %s
INFO_EDITOR_OPTION_RESET_DEFAULT_INHERITED_ALIAS_170=Reset to the inherited default behavior: %s
INFO_EDITOR_OPTION_RESET_DEFAULT_INHERITED_ALIAS_UNDEFINED_171=Reset to the inherited default behavior: undefined
INFO_EDITOR_OPTION_RESET_DEFAULT_VALUE_172=Reset to the default value: %s
INFO_EDITOR_OPTION_RESET_INHERITED_DEFAULT_VALUE_173=Reset to the inherited default value: %s
INFO_EDITOR_OPTION_RESET_DEFAULT_VALUES_174=Reset to the default values: %s
INFO_EDITOR_OPTION_RESET_INHERITED_DEFAULT_VALUES_175=Reset to the inherited default values: %s
INFO_EDITOR_HEADING_READ_ONLY_ALIAS_UNDEFINED_176=The "%s" property is undefined
INFO_EDITOR_HEADING_READ_ONLY_ALIAS_177=The "%s" property is undefined: %s
INFO_EDITOR_HEADING_READ_ONLY_VALUE_178=The "%s" property has the following value: %s
INFO_EDITOR_HEADING_READ_ONLY_VALUES_179=The "%s" property has the following values:
INFO_EDITOR_PROMPT_READ_ONLY_180=This property is read-only and cannot be modified. Would you like to view its help documentation?
INFO_EDITOR_OPTION_CHANGE_TO_DEFAULT_VALUE_181=Change it to the default value: %s
INFO_EDITOR_OPTION_CHANGE_TO_VALUE_182=Change it to the value: %s
INFO_EDITOR_OPTION_CHANGE_VALUE_183=Change the value
INFO_EDITOR_HEADING_CONFIGURE_PROPERTY_184=>>>> Configuring the "%s" property
INFO_EDITOR_PROMPT_READ_FIRST_VALUE_185=Enter a value for the "%s" property:
INFO_EDITOR_PROMPT_READ_FIRST_VALUE_OPTIONAL_186=Enter a value for the "%s" property [continue]:
INFO_EDITOR_PROMPT_READ_NEXT_VALUE_187=Enter another value for the "%s" property [continue]:
ERR_EDITOR_READ_FIRST_DUPLICATE_188=This property already contains the value "%s". Please enter a different value
ERR_EDITOR_READ_NEXT_DUPLICATE_189=This property already contains the value "%s". Please enter a different value, or press RETURN to continue
INFO_EDITOR_HEADING_CONFIGURE_COMPONENT_190=>>>> Configure the properties of the %s
INFO_EDITOR_OPTION_FINISH_CREATE_COMPONENT_191=finish - create the new %s
INFO_EDITOR_OPTION_FINISH_MODIFY_COMPONENT_192=finish - apply any changes to the %s
INFO_EDITOR_OPTION_FINISH_KEY_193=f
INFO_EDITOR_HEADING_CONFIGURE_PROPERTY_CONT_194=>>>> Configuring the "%s" property (Continued)
INFO_DSCFG_CREATE_NAME_PROMPT_NAMING_195=>>>> Specify a name for the %s. This name will be used as the value for the "%s" property which has the following description:
INFO_DSCFG_CREATE_NAME_PROMPT_NAMING_CONT_196=Enter a name for the %s that you want to create:
INFO_DSCFG_HEADING_MAIN_MENU_TITLE_197=>>>> OpenDJ configuration console main menu
INFO_DSCFG_HEADING_MAIN_MENU_PROMPT_198=What do you want to configure?
INFO_DSCFG_HEADING_COMPONENT_MENU_TITLE_199=>>>> %s management menu
INFO_DSCFG_HEADING_COMPONENT_MENU_PROMPT_200=What would you like to do?
INFO_DSCFG_OPTION_COMPONENT_MENU_CREATE_201=Create a new %s
INFO_DSCFG_OPTION_COMPONENT_MENU_MODIFY_SINGULAR_202=View and edit the %s
INFO_DSCFG_OPTION_COMPONENT_MENU_MODIFY_PLURAL_203=View and edit an existing %s
INFO_DSCFG_OPTION_COMPONENT_MENU_DELETE_204=Delete an existing %s
INFO_DSCFG_OPTION_COMPONENT_MENU_LIST_PLURAL_205=List existing %s
INFO_DSCFG_OPTION_COMPONENT_MENU_LIST_SINGULAR_206=Show the %s
INFO_DSCFG_GENERIC_TYPE_OPTION_207=Generic %s
ERR_DSCFG_ERROR_CREATE_ORE_SINGLE_208=The %s could not be created because of the following reason:
ERR_DSCFG_ERROR_CREATE_ORE_PLURAL_209=The %s could not be created because of the following reasons:
ERR_DSCFG_ERROR_DELETE_ORE_SINGLE_210=The %s could not be deleted because of the following reason:
ERR_DSCFG_ERROR_DELETE_ORE_PLURAL_211=The %s could not be deleted because of the following reasons:
ERR_DSCFG_ERROR_MODIFY_ORE_SINGLE_212=The %s could not be modified because of the following reason:
ERR_DSCFG_ERROR_MODIFY_ORE_PLURAL_213=The %s could not be modified because of the following reasons:
INFO_DSCFG_PROMPT_EDIT_AGAIN_214=Would you like to edit the properties of the %s again in order to resolve this problem?
ERR_DSCFG_ERROR_TYPE_UNRECOGNIZED_FOR_SUBCOMMAND_215="%s" component \
 type cannot be used with subcommand {%s}
INFO_EDITOR_PROMPT_SELECT_COMPONENT_MULTI_216=Select one or more %s for the "%s" property:
INFO_EDITOR_PROMPT_SELECT_COMPONENT_SINGLE_217=Select a %s for the "%s" property:
INFO_EDITOR_HEADING_COMPONENT_SUMMARY_218=The "%s" property references the following %s:
INFO_EDITOR_PROMPT_SELECT_COMPONENTS_ADD_219=Select the %s you wish to add:
INFO_EDITOR_OPTION_ADD_ALL_COMPONENTS_220=Add all %s
INFO_EDITOR_PROMPT_SELECT_COMPONENTS_REMOVE_221=Select the %s you wish to remove:
INFO_EDITOR_OPTION_CHANGE_TO_DEFAULT_COMPONENT_222=Change it to the default %s: %s
INFO_EDITOR_OPTION_CHANGE_TO_COMPONENT_223=Change it to the %s: %s
INFO_EDITOR_PROMPT_ENABLED_REFERENCED_COMPONENT_224=The referenced %s \
 called "%s" must be enabled so that it can be used with this %s. Do \
 you want to enable it?
ERR_SET_REFERENCED_COMPONENT_DISABLED_225=The modifications to \
 the %s cannot be made because it contains a reference to a \
 disabled %s
ERR_CREATE_HEADING_MMPE_SINGLE_226=The %s could not be created because the following mandatory property was not defined:
ERR_CREATE_HEADING_MMPE_PLURAL_227=The %s could not be created because the following mandatory properties were not defined:
ERR_MODIFY_HEADING_MMPE_SINGLE_228=The %s could not be modified because the following mandatory property was not defined:
ERR_MODIFY_HEADING_MMPE_PLURAL_229=The %s could not be modified because the following mandatory properties were not defined:
INFO_DSCFG_PROMPT_EDIT_230=Would you like to edit the properties of the %s in order to resolve this problem?
ERR_GET_HEADING_MODE_SINGLE_231=The %s could not be decoded due to the following reason:
ERR_GET_HEADING_MODE_PLURAL_232=The %s could not be decoded due to the following reasons:
INFO_EDITOR_OPTION_CREATE_A_NEW_COMPONENT_233=Create a new %s
INFO_DSCFG_PROMPT_EDIT_TO_ENABLE_234=The referenced %s \
 called "%s" must be enabled so that it can be used with this %s. Do \
 you want to edit its properties in order to enable it?
INFO_DSCFG_CUSTOM_TYPE_OPTION_235=Custom %s
INFO_DSCFG_CUSTOM_TYPE_SYNOPSIS_236=A Custom %s with a user-defined \
 implementation class
INFO_DSCFG_GENERIC_TYPE_SYNOPSIS_237=A Generic %s
INFO_DSCFG_CREATE_TYPE_HELP_HEADING_238=Help: %s
INFO_DSCFG_NON_INTERACTIVE_239=The equivalent non-interactive command-line is:\
 %n%s
INFO_DSCFG_DESCRIPTION_DISPLAY_EQUIVALENT_240=Display the equivalent \
 non-interactive argument in the standard output when this command is run in \
 interactive mode
INFO_DSCFG_DESCRIPTION_EQUIVALENT_COMMAND_FILE_PATH_241=The full path to the \
 file where the equivalent non-interactive commands will be written when this \
 command is run in interactive mode
ERR_DSCFG_ERROR_WRITING_EQUIVALENT_COMMAND_LINE_242=An error occurred \
 while attempting to write equivalent non-interactive command line to file \
 %s.  Error details:  %s
ERR_DSCFG_CANNOT_WRITE_EQUIVALENT_COMMAND_LINE_FILE_243=Cannot write \
 to file %s.  Verify that you have access rights to that file and that you \
 provided the full path of the file
ERR_DSCFG_EQUIVALENT_COMMAND_LINE_FILE_DIRECTORY_244=The specified \
 path %s to write the equivalent command is a directory.  You must specify a \
 path to a file
ERR_DSCFG_ERROR_LDAP_FAILED_TO_CONNECT_WRONG_PORT_245=Unable to connect to the \
 server at %s on port %s. Check this port is an administration port
ERR_DSCFG_ERROR_LDAP_FAILED_TO_CONNECT_NOT_TRUSTED_246=Unable to connect to the \
 server at %s on port %s. In non-interactive mode, if the trustStore related parameters are not used, \
 you must use the '--trustAll' option for remote connections
ERR_DSCFG_ERROR_VALUE_DOES_NOT_EXIST_247=The value %s for the %s property does not exist
ERR_DSCFG_ERROR_NO_AVAILABLE_TYPES_248=Unable to continue since there are \
 no available types of %s to choose from
INFO_DSCFG_TYPE_PROMPT_SINGLE_249=>>>> There is only one type of %s available: "%s". \
 Are you sure that this is the correct one?
ERR_DSCFG_ERROR_READING_BATCH_FILE_250=An error occurred \
 while attempting to read the batch file : %s
INFO_DSCFG_SESSION_START_TIME_MESSAGE_251=%s session start date: %s
INFO_DSCFG_EQUIVALENT_COMMAND_LINE_SESSION_OPERATION_NUMBER_252=Session \
 operation number: %d
INFO_DSCFG_DESCRIPTION_OPTIONS_ARGS_253=Configuration Options
ERR_DSCFG_ERROR_BATCH_FILE_AND_INTERACTIVE_INCOMPATIBLE_254=If you specify \
 the {%s} argument you must also specify {%s}
ERR_DSCFG_ERROR_QUIET_AND_INTERACTIVE_INCOMPATIBLE_255=If you specify \
 the {%s} argument you must also specify {%s}
INFO_DSCFG_TOOL_DESCRIPTION_256=This utility can be used to define a base \
 configuration for the Directory Server
INFO_DSCFG_BATCH_FILE_PATH_257=Path to a batch file containing \
a set of dsconfig commands to be executed
INFO_DSCFG_DESCRIPTION_OPTIONS_ARGS_258=Configuration Options
ERR_DSCFG_ERROR_BATCH_FILE_AND_INTERACTIVE_INCOMPATIBLE_259=If you specify \
 the {%s} argument you must also specify {%s}
ERR_DSCFG_ERROR_QUIET_AND_INTERACTIVE_INCOMPATIBLE_260=If you specify \
 the {%s} argument you must also specify {%s}