opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java
@@ -33,7 +33,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.Comparator; @@ -48,6 +47,7 @@ import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.LocalizableMessageBuilder; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.forgerock.util.Utils; /** @@ -61,6 +61,8 @@ * on the command-line. */ public class ArgumentParser { private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass(); /** * The name of the OpenDJ configuration direction in the user home * directory. @@ -655,27 +657,17 @@ return buffer.toString(); } private void writeUsageToOutputStream() { try { getUsage(usageOutputStream); } catch (final Exception e) { // Ignored. } } /** * Writes usage information based on the defined arguments to the provided * output stream. * Writes message to the usage output stream. * * @param outputStream * The output stream to which the usage information should be * written. * @throws IOException * If a problem occurs while attempting to write the usage * information to the provided output stream. * @param message the message to write */ void getUsage(final OutputStream outputStream) throws IOException { outputStream.write(getBytes(getUsage())); void writeToUsageOutputStream(CharSequence message) { try { usageOutputStream.write(getBytes(message.toString())); } catch (final Exception e) { logger.traceException(e); } } /** @@ -777,6 +769,15 @@ } /** * Returns the usage argument. * * @return the usageArgument */ Argument getUsageArgument() { return usageArgument; } /** * Retrieves a message containing usage information based on the defined * arguments. * @@ -789,6 +790,22 @@ } /** * Returns the version handler. * * @return the version handler */ VersionHandler getVersionHandler() { return versionHandler; } /** Prints the version. */ void printVersion() { versionPresent = true; usageOrVersionDisplayed = true; versionHandler.printVersion(); } /** * Returns whether the usage argument was provided or not. This method * should be called after a call to parseArguments. * @@ -811,6 +828,16 @@ } /** * Indicates whether subcommand names and long argument strings should be treated in a case-sensitive manner. * * @return <CODE>true</CODE> if subcommand names and long argument strings should be treated in a case-sensitive * manner, or <CODE>false</CODE> if they should not. */ boolean longArgumentsCaseSensitive() { return longArgumentsCaseSensitive; } /** * Parses the provided set of arguments and updates the information * associated with this parser accordingly. * @@ -901,14 +928,12 @@ if (OPTION_LONG_HELP.equals(argName)) { // "--help" will always be interpreted as requesting // usage information. writeUsageToOutputStream(); writeToUsageOutputStream(getUsage()); return; } else if (versionHandler != null && OPTION_LONG_PRODUCT_VERSION.equals(argName)) { // "--version" will always be interpreted as requesting // version information. usageOrVersionDisplayed = true; versionPresent = true; versionHandler.printVersion(); printVersion(); return; } else { // There is no such argument registered. @@ -921,7 +946,7 @@ // If this is the usage argument, then immediately stop and // print usage information. if (usageArgument != null && usageArgument.getName().equals(a.getName())) { writeUsageToOutputStream(); writeToUsageOutputStream(getUsage()); return; } } @@ -979,16 +1004,11 @@ final Argument a = shortIDMap.get(argCharacter); if (a == null) { if (argCharacter == '?') { writeUsageToOutputStream(); writeToUsageOutputStream(getUsage()); return; } else if (versionHandler != null && argCharacter == OPTION_SHORT_PRODUCT_VERSION && !shortIDMap.containsKey(OPTION_SHORT_PRODUCT_VERSION)) { // "-V" will always be interpreted as requesting // version information except if it's already defined // (e.g in ldap tools). usageOrVersionDisplayed = true; versionPresent = true; versionHandler.printVersion(); printVersion(); return; } else { // There is no such argument registered. @@ -1000,7 +1020,7 @@ // If this is the usage argument, then immediately stop and // print usage information. if (usageArgument != null && usageArgument.getName().equals(a.getName())) { writeUsageToOutputStream(); writeToUsageOutputStream(getUsage()); return; } } @@ -1055,7 +1075,7 @@ // If this is the usage argument, // then immediately stop and print usage information. if (usageArgument != null && usageArgument.getName().equals(b.getName())) { writeUsageToOutputStream(); writeToUsageOutputStream(getUsage()); return; } } @@ -1260,6 +1280,15 @@ } /** * Sets whether the usage or version displayed. * * @param usageOrVersionDisplayed the usageOrVersionDisplayed to set */ public void setUsageOrVersionDisplayed(boolean usageOrVersionDisplayed) { this.usageOrVersionDisplayed = usageOrVersionDisplayed; } /** * Sets the version handler which will be used to display the product version. * * @param handler opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java
@@ -31,7 +31,6 @@ import static com.forgerock.opendj.cli.Utils.*; import static com.forgerock.opendj.util.StaticUtils.*; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.Collection; @@ -61,17 +60,11 @@ private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass(); private static final String INDENT = " "; /** The argument that will be used to trigger the display of usage information. */ private Argument usageArgument; /** The arguments that will be used to trigger the display of usage information for groups of sub-commands. */ private final Map<Argument, Collection<SubCommand>> usageGroupArguments = new HashMap<Argument, Collection<SubCommand>>(); /** The set of unnamed trailing arguments that were provided for this parser. */ private final ArrayList<String> trailingArguments = new ArrayList<String>(); /** Indicates whether subcommand and long argument names should be treated in a case-sensitive manner. */ private final boolean longArgumentsCaseSensitive; /** Indicates whether the usage information has been displayed. */ private boolean usageOrVersionDisplayed; /** The set of global arguments defined for this parser, referenced by short ID. */ private final Map<Character, Argument> globalShortIDMap = new HashMap<Character, Argument>(); @@ -84,26 +77,11 @@ /** The set of subcommands defined for this parser, referenced by subcommand name. */ private final SortedMap<String, SubCommand> subCommands = new TreeMap<String, SubCommand>(); /** The output stream to which usage information should be printed. */ private OutputStream usageOutputStream; /** * The fully-qualified name of the Java class that should be invoked to launch the program with which this argument * parser is associated. */ private final String mainClassName; /**A human-readable description for the tool, which will be included when displaying usage information. */ private final LocalizableMessage toolDescription; /** The raw set of command-line arguments that were provided. */ private String[] rawArguments; /**The subcommand requested by the user as part of the command-line arguments. */ private SubCommand subCommand; /** Indicates whether the version argument was provided. */ private boolean versionPresent; /** * Creates a new instance of this subcommand argument parser with no arguments. * @@ -118,42 +96,6 @@ public SubCommandArgumentParser(String mainClassName, LocalizableMessage toolDescription, boolean longArgumentsCaseSensitive) { super(mainClassName, toolDescription, longArgumentsCaseSensitive); this.mainClassName = mainClassName; this.toolDescription = toolDescription; this.longArgumentsCaseSensitive = longArgumentsCaseSensitive; } /** * Retrieves the fully-qualified name of the Java class that should be invoked to launch the program with which this * argument parser is associated. * * @return The fully-qualified name of the Java class that should be invoked to launch the program with which this * argument parser is associated. */ @Override public String getMainClassName() { return mainClassName; } /** * Retrieves a human-readable description for this tool, which should be included at the top of the command-line * usage information. * * @return A human-readable description for this tool, or {@code null} if none is available. */ @Override public LocalizableMessage getToolDescription() { return toolDescription; } /** * Indicates whether subcommand names and long argument strings should be treated in a case-sensitive manner. * * @return <CODE>true</CODE> if subcommand names and long argument strings should be treated in a case-sensitive * manner, or <CODE>false</CODE> if they should not. */ public boolean longArgumentsCaseSensitive() { return longArgumentsCaseSensitive; } /** @@ -380,7 +322,7 @@ String longID = argument.getLongIdentifier(); if (longID != null) { if (!longArgumentsCaseSensitive) { if (!longArgumentsCaseSensitive()) { longID = toLowerCase(longID); } @@ -436,7 +378,7 @@ String longID = argument.getLongIdentifier(); if (longID != null) { if (!longArgumentsCaseSensitive) { if (!longArgumentsCaseSensitive()) { longID = toLowerCase(longID); } @@ -466,9 +408,7 @@ */ @Override public void setUsageArgument(Argument argument, OutputStream outputStream) { usageArgument = argument; usageOutputStream = outputStream; super.setUsageArgument(argument, outputStream); usageGroupArguments.put(argument, Collections.<SubCommand> emptySet()); } @@ -523,7 +463,7 @@ this.rawArguments = rawArguments; this.subCommand = null; this.trailingArguments.clear(); this.usageOrVersionDisplayed = false; setUsageOrVersionDisplayed(false); boolean inTrailingArgs = false; @@ -572,7 +512,7 @@ // If we're not case-sensitive, then convert the name to lowercase. String origArgName = argName; if (!longArgumentsCaseSensitive) { if (!longArgumentsCaseSensitive()) { argName = toLowerCase(argName); } @@ -587,13 +527,11 @@ if (OPTION_LONG_HELP.equals(argName)) { // "--help" will always be interpreted as requesting usage // information. getUsage(usageOutputStream); writeToUsageOutputStream(getUsage()); return; } else if (OPTION_LONG_PRODUCT_VERSION.equals(argName)) { } else if (OPTION_LONG_PRODUCT_VERSION.equals(argName) && getVersionHandler() != null) { // "--version" will always be interpreted as requesting usage // information. versionPresent = true; usageOrVersionDisplayed = true; printVersion(); return; } else if (subCommand != null) { @@ -612,7 +550,7 @@ // If this is a usage argument, then immediately stop and print // usage information. if (usageGroupArguments.containsKey(a)) { getUsage(a, usageOutputStream); getUsage(a); return; } @@ -670,17 +608,15 @@ if (subCommand == null) { if (argCharacter == '?') { // "-?" will always be interpreted as requesting usage. getUsage(usageOutputStream); if (usageArgument != null) { usageArgument.setPresent(true); writeToUsageOutputStream(getUsage()); if (getUsageArgument() != null) { getUsageArgument().setPresent(true); } return; } else if (argCharacter == OPTION_SHORT_PRODUCT_VERSION) { } else if (argCharacter == OPTION_SHORT_PRODUCT_VERSION && getVersionHandler() != null) { // "-V" will always be interpreted as requesting // version information except if it's already defined. if (dashVAccepted()) { usageOrVersionDisplayed = true; versionPresent = true; printVersion(); return; } else { @@ -699,12 +635,10 @@ if (a == null) { if (argCharacter == '?') { // "-?" will always be interpreted as requesting usage. getUsage(usageOutputStream); writeToUsageOutputStream(getUsage()); return; } else if (argCharacter == OPTION_SHORT_PRODUCT_VERSION) { } else if (argCharacter == OPTION_SHORT_PRODUCT_VERSION && getVersionHandler() != null) { if (dashVAccepted()) { usageOrVersionDisplayed = true; versionPresent = true; printVersion(); return; } @@ -722,7 +656,7 @@ // If this is the usage argument, then immediately stop and print // usage information. if (usageGroupArguments.containsKey(a)) { getUsage(a, usageOutputStream); getUsage(a); return; } @@ -784,7 +718,7 @@ // If this is the usage argument, then immediately stop and // print usage information. if (usageGroupArguments.containsKey(b)) { getUsage(b, usageOutputStream); getUsage(b); return; } } @@ -802,7 +736,7 @@ } else { // It must be the sub-command. String nameToCheck = arg; if (!longArgumentsCaseSensitive) { if (!longArgumentsCaseSensitive()) { nameToCheck = toLowerCase(arg); } @@ -861,10 +795,10 @@ * The subcommand for which to display the usage information. */ public void getSubCommandUsage(LocalizableMessageBuilder buffer, SubCommand subCommand) { usageOrVersionDisplayed = true; setUsageOrVersionDisplayed(true); String scriptName = System.getProperty(PROPERTY_SCRIPT_NAME); if (scriptName == null || scriptName.length() == 0) { scriptName = "java " + mainClassName; scriptName = "java " + getMainClassName(); } buffer.append(INFO_ARGPARSER_USAGE_JAVA_SCRIPTNAME.get(scriptName)); buffer.append(" "); @@ -895,6 +829,8 @@ buffer.append(INFO_SUBCMD_OPTIONS.get()); buffer.append(EOL); } final Argument usageArgument = getUsageArgument(); for (Argument a : subCommand.getArguments()) { // If this argument is hidden, then skip it. if (a.isHidden()) { @@ -1007,10 +943,10 @@ * @return A string describing how the user can get more help. */ public LocalizableMessage getHelpUsageReference() { usageOrVersionDisplayed = true; setUsageOrVersionDisplayed(true); String scriptName = System.getProperty(PROPERTY_SCRIPT_NAME); if (scriptName == null || scriptName.length() == 0) { scriptName = "java " + mainClassName; scriptName = "java " + getMainClassName(); } LocalizableMessageBuilder buffer = new LocalizableMessageBuilder(); @@ -1030,17 +966,6 @@ } /** * Indicates whether the usage information has been displayed to the end user either by an explicit argument like * "-H" or "--help", or by a built-in argument like "-?". * * @return {@code true} if the usage information has been displayed, or {@code false} if not. */ @Override public boolean usageOrVersionDisplayed() { return usageOrVersionDisplayed; } /** * Adds the provided subcommand to this argument parser. This is only intended for use by the * <CODE>SubCommand</CODE> constructor and does not do any validation of its own to ensure that there are no * conflicts with the subcommand or any of its arguments. @@ -1053,9 +978,10 @@ } /** Get usage for a specific usage argument. */ private void getUsage(Argument a, OutputStream outputStream) { private void getUsage(Argument a) { LocalizableMessageBuilder buffer = new LocalizableMessageBuilder(); final Argument usageArgument = getUsageArgument(); if (a.equals(usageArgument) && subCommand != null) { getSubCommandUsage(buffer, subCommand); } else if (a.equals(usageArgument) && usageGroupArguments.size() <= 1) { @@ -1065,33 +991,20 @@ // Using groups - so display all sub-commands group help. getFullUsage(Collections.<SubCommand> emptySet(), true, buffer); } else { // Requested help on specific group - don't display global // options. // Requested help on specific group - don't display global options. getFullUsage(usageGroupArguments.get(a), false, buffer); } try { outputStream.write(buffer.toString().getBytes()); } catch (Exception e) { logger.traceException(e); } } /** {@inheritDoc} */ @Override public void getUsage(OutputStream outputStream) { try { outputStream.write(getUsage().getBytes()); } catch (IOException e) { logger.traceException(e); } writeToUsageOutputStream(buffer); } /** * Appends complete usage information for the specified set of sub-commands. */ private void getFullUsage(Collection<SubCommand> c, boolean showGlobalOptions, LocalizableMessageBuilder buffer) { usageOrVersionDisplayed = true; setUsageOrVersionDisplayed(true); final LocalizableMessage toolDescription = getToolDescription(); if (toolDescription != null && toolDescription.length() > 0) { buffer.append(wrapText(toolDescription, MAX_LINE_WIDTH - 1)); buffer.append(EOL).append(EOL); @@ -1099,7 +1012,7 @@ String scriptName = System.getProperty(PROPERTY_SCRIPT_NAME); if (scriptName == null || scriptName.length() == 0) { scriptName = "java " + mainClassName; scriptName = "java " + getMainClassName(); } buffer.append(INFO_ARGPARSER_USAGE.get()); buffer.append(" "); @@ -1122,6 +1035,7 @@ buffer.append(EOL); } final Argument usageArgument = getUsageArgument(); if (c.isEmpty()) { // Display usage arguments (except the default one). for (Argument a : globalArgumentList) { @@ -1216,6 +1130,7 @@ value = ""; } final Argument usageArgument = getUsageArgument(); Character shortIDChar = a.getShortIdentifier(); if (shortIDChar != null) { if (a.equals(usageArgument)) { @@ -1292,28 +1207,6 @@ } /** * Returns whether the usage argument was provided or not. This method should be called after a call to * parseArguments. * * @return <CODE>true</CODE> if the usage argument was provided and <CODE>false</CODE> otherwise. */ @Override public boolean isUsageArgumentPresent() { return usageArgument != null && usageArgument.isPresent(); } /** * Returns whether the version argument was provided or not. This method should be called after a call to * parseArguments. * * @return <CODE>true</CODE> if the version argument was provided and <CODE>false</CODE> otherwise. */ @Override public boolean isVersionArgumentPresent() { return super.isVersionArgumentPresent() && !versionPresent; } /** * Generate reference documentation for dsconfig subcommands in DocBook 5 XML format. As the number of categories is * large, the subcommand entries are sorted here by name for inclusion in a <refsect1> covering all dsconfig * Subcommands as part of the <refentry> for dsconfig (in man-dsconfig.xml). @@ -1401,9 +1294,4 @@ return "<refsect2 xml:id=\"dsconfig-" + sc.getName() + "\">" + EOL + " <title>dsconfig " + sc.getName() + "</title>" + EOL + " <para>" + sc.getDescription() + "</para>" + EOL + options + "</refsect2>" + EOL; } void printVersion() { // TODO // DirectoryServer.printVersion(usageOutputStream); } } opendj-config/src/main/java/org/forgerock/opendj/config/dsconfig/DSConfig.java
@@ -28,17 +28,12 @@ import static com.forgerock.opendj.cli.ArgumentConstants.*; import static com.forgerock.opendj.cli.CliMessages.*; import static com.forgerock.opendj.cli.Utils.*; import static com.forgerock.opendj.dsconfig.DsconfigMessages.*; import static com.forgerock.opendj.cli.Utils.SHELL_COMMENT_SEPARATOR; import static com.forgerock.opendj.cli.Utils.canWrite; import static com.forgerock.opendj.cli.Utils.filterExitCode; import static com.forgerock.opendj.cli.Utils.formatDateTimeStringForEquivalentCommand; import static com.forgerock.opendj.cli.Utils.getCurrentOperationDateMessage; import static com.forgerock.opendj.util.StaticUtils.stackTraceToSingleLineString; import static org.forgerock.opendj.config.dsconfig.ArgumentExceptionFactory.displayManagedObjectDecodingException; import static org.forgerock.opendj.config.dsconfig.ArgumentExceptionFactory.displayMissingMandatoryPropertyException; import static org.forgerock.opendj.config.dsconfig.ArgumentExceptionFactory.displayOperationRejectedException; import static org.forgerock.util.Utils.closeSilently; import static com.forgerock.opendj.util.StaticUtils.*; import static org.forgerock.opendj.config.dsconfig.ArgumentExceptionFactory.*; import static org.forgerock.util.Utils.*; import java.io.BufferedReader; import java.io.BufferedWriter; @@ -49,13 +44,16 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.PrintStream; import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.SortedSet; import java.util.TreeMap; @@ -71,6 +69,7 @@ import org.forgerock.opendj.config.client.MissingMandatoryPropertiesException; import org.forgerock.opendj.config.client.OperationRejectedException; import org.forgerock.opendj.config.server.ConfigException; import com.forgerock.opendj.cli.ArgumentException; import com.forgerock.opendj.cli.ArgumentGroup; import com.forgerock.opendj.cli.BooleanArgument; @@ -88,6 +87,7 @@ import com.forgerock.opendj.cli.StringArgument; import com.forgerock.opendj.cli.SubCommand; import com.forgerock.opendj.cli.SubCommandArgumentParser; import com.forgerock.opendj.cli.VersionHandler; /** * This class provides a command-line tool which enables administrators to configure the Directory Server. @@ -97,14 +97,10 @@ /** The name of this tool. */ static final String DSCONFIGTOOLNAME = "dsconfig"; /** * The name of a command-line script used to launch an administrative tool. */ /** The name of a command-line script used to launch an administrative tool. */ static final String PROPERTY_SCRIPT_NAME = "org.opends.server.scriptName"; /** * A menu call-back which runs a sub-command interactively. */ /** A menu call-back which runs a sub-command interactively. */ private class SubCommandHandlerMenuCallback implements MenuCallback<Integer> { /** The sub-command handler. */ @@ -406,6 +402,27 @@ super(new PrintStream(out), new PrintStream(err)); this.parser = new SubCommandArgumentParser(getClass().getName(), INFO_DSCFG_TOOL_DESCRIPTION.get(), false); this.parser.setVersionHandler(new VersionHandler() { @Override public void printVersion() { System.out.println(getVersionString()); } private String getVersionString() { try { final Enumeration<URL> resources = getClass().getClassLoader().getResources( "META-INF/maven/org.forgerock.opendj/opendj-config/pom.properties"); while (resources.hasMoreElements()) { final Properties props = new Properties(); props.load(resources.nextElement().openStream()); return (String) props.get("version"); } } catch (IOException e) { errPrintln(LocalizableMessage.raw(e.getMessage())); } return ""; } }); } /** {@inheritDoc} */ opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/ControlPanelArgumentParser.java
@@ -22,9 +22,8 @@ * * * Copyright 2009-2010 Sun Microsystems, Inc. * Portions Copyright 2011-2014 ForgeRock AS * Portions Copyright 2011-2015 ForgeRock AS */ package org.opends.guitools.controlpanel; import static org.opends.messages.ToolMessages.*; @@ -36,6 +35,7 @@ import org.opends.quicksetup.UserData; import org.opends.quicksetup.util.Utils; import org.opends.server.admin.AdministrationConnector; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import com.forgerock.opendj.cli.ArgumentException; import com.forgerock.opendj.cli.ArgumentParser; @@ -50,46 +50,24 @@ */ public class ControlPanelArgumentParser extends ArgumentParser { /** * The 'hostName' global argument. */ private StringArgument hostNameArg = null; /** The 'hostName' global argument. */ private StringArgument hostNameArg; /** The 'port' global argument. */ private IntegerArgument portArg; /** * The 'port' global argument. */ private IntegerArgument portArg = null; /** The 'bindDN' global argument. */ private StringArgument bindDnArg; /** The 'bindPasswordFile' global argument. */ private FileBasedArgument bindPasswordFileArg; /** The 'bindPassword' global argument. */ private StringArgument bindPasswordArg; /** * The 'bindDN' global argument. */ private StringArgument bindDnArg = null; /** * The 'bindPasswordFile' global argument. */ private FileBasedArgument bindPasswordFileArg = null; /** * The 'bindPassword' global argument. */ private StringArgument bindPasswordArg = null; /** * The 'trustAllArg' global argument. */ private BooleanArgument trustAllArg = null; /** * The 'remoteArg' global argument. */ private BooleanArgument remoteArg = null; /** * Argument to specify the connect timeout. */ private IntegerArgument connectTimeoutArg = null; /** The 'trustAllArg' global argument. */ private BooleanArgument trustAllArg; /** The 'remoteArg' global argument. */ private BooleanArgument remoteArg; /** Argument to specify the connect timeout. */ private IntegerArgument connectTimeoutArg; private BooleanArgument showUsageArg; /** @@ -102,6 +80,7 @@ LocalizableMessage msg) { super(mainClassName, msg, false); setVersionHandler(new DirectoryServerVersionHandler()); } /** @@ -161,10 +140,8 @@ setUsageArgument(showUsageArg); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void parseArguments(String[] args) throws ArgumentException { LinkedHashSet<LocalizableMessage> errorMessages = new LinkedHashSet<LocalizableMessage>(); @@ -295,5 +272,4 @@ { return remoteArg.isPresent(); } } opendj3-server-dev/src/guitools/org/opends/guitools/uninstaller/UninstallerArgumentParser.java
@@ -22,15 +22,13 @@ * * * Copyright 2008-2010 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS * Portions Copyright 2014-2015 ForgeRock AS */ package org.opends.guitools.uninstaller; import static com.forgerock.opendj.cli.ArgumentConstants.OPTION_LONG_REFERENCED_HOST_NAME; import static com.forgerock.opendj.cli.ArgumentConstants.OPTION_SHORT_HOST; import static com.forgerock.opendj.cli.Utils.LINE_SEPARATOR; import static com.forgerock.opendj.cli.ArgumentConstants.*; import static com.forgerock.opendj.cli.CliMessages.*; import static com.forgerock.opendj.cli.Utils.*; import java.io.OutputStream; import java.util.ArrayList; @@ -41,6 +39,7 @@ import org.opends.quicksetup.UserData; import org.opends.server.admin.client.cli.SecureConnectionCliArgs; import org.opends.server.admin.client.cli.SecureConnectionCliParser; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import com.forgerock.opendj.cli.Argument; import com.forgerock.opendj.cli.ArgumentException; @@ -49,10 +48,7 @@ import com.forgerock.opendj.cli.ReturnCode; import com.forgerock.opendj.cli.StringArgument; /** * Class used to parse and populate the arguments of the Uninstaller. * */ /** Class used to parse and populate the arguments of the Uninstaller. */ public class UninstallerArgumentParser extends SecureConnectionCliParser { private BooleanArgument cliArg; @@ -90,6 +86,7 @@ LocalizableMessage toolDescription, boolean longArgumentsCaseSensitive) { super(mainClassName, toolDescription, longArgumentsCaseSensitive); setVersionHandler(new DirectoryServerVersionHandler()); } /** @@ -343,12 +340,11 @@ */ public String getReferencedHostName() { String hostName = null; if (referencedHostNameArg.isPresent()) { hostName = referencedHostNameArg.getValue(); return referencedHostNameArg.getValue(); } return hostName; return null; } /** opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
@@ -22,10 +22,19 @@ * * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions Copyright 2010-2014 ForgeRock AS. * Portions Copyright 2010-2015 ForgeRock AS. */ package org.opends.server.core; import static org.forgerock.util.Reject.*; import static org.opends.messages.CoreMessages.*; import static org.opends.messages.ToolMessages.*; import static org.opends.server.config.ConfigConstants.*; import static org.opends.server.schema.SchemaConstants.*; import static org.opends.server.util.DynamicConstants.*; import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.*; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -220,15 +229,6 @@ import com.forgerock.opendj.cli.VersionHandler; import com.forgerock.opendj.util.OperatingSystem; import static org.forgerock.util.Reject.*; import static org.opends.messages.CoreMessages.*; import static org.opends.messages.ToolMessages.*; import static org.opends.server.config.ConfigConstants.*; import static org.opends.server.schema.SchemaConstants.*; import static org.opends.server.util.DynamicConstants.*; import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.*; /** * This class defines the core of the Directory Server. It manages the startup * and shutdown processes and coordinates activities between all other @@ -809,6 +809,23 @@ private org.forgerock.opendj.config.server.ServerManagementContext serverManagementContext; /** * Class that prints the version of OpenDJ server to System.out. */ public static final class DirectoryServerVersionHandler implements VersionHandler { /** {@inheritDoc} */ @Override public void printVersion() { try { DirectoryServer.printVersion(System.out); } catch (Exception e){} } } /** * Temporary class to provide instance methods instead of static methods for * server. Once all static methods related to context are removed from the * server then DirectoryServer class can be used directly as implementation of @@ -7781,19 +7798,6 @@ new ArgumentParser("org.opends.server.core.DirectoryServer", theToolDescription, false); final VersionHandler versionHandler = new VersionHandler() { @Override public void printVersion() { try { DirectoryServer.printVersion(System.out); } catch (Exception e){} } }; // Initialize all the command-line argument types and register them with the // parser. try @@ -7871,7 +7875,7 @@ displayUsage = CommonArguments.getShowUsage(); argParser.addArgument(displayUsage); argParser.setUsageArgument(displayUsage); argParser.setVersionHandler(versionHandler); argParser.setVersionHandler(new DirectoryServerVersionHandler()); } catch (ArgumentException ae) { opendj3-server-dev/src/server/org/opends/server/tools/CreateRCScript.java
@@ -22,11 +22,15 @@ * * * Copyright 2008 Sun Microsystems, Inc. * Portions Copyright 2010-2014 ForgeRock AS * Portions Copyright 2010-2015 ForgeRock AS */ package org.opends.server.tools; import static org.opends.messages.ToolMessages.*; import static org.opends.server.config.ConfigConstants.*; import static org.opends.server.util.DynamicConstants.*; import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.*; import java.io.File; import java.io.OutputStream; @@ -35,27 +39,20 @@ import org.forgerock.i18n.LocalizableMessage; import org.opends.server.core.DirectoryServer; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.loggers.JDKLogging; import org.opends.server.types.FilePermission; import org.opends.server.types.NullOutputStream; import org.opends.server.util.EmbeddedUtils; import org.opends.server.util.SetupUtils; import com.forgerock.opendj.cli.ArgumentParser; import com.forgerock.opendj.cli.ArgumentException; import com.forgerock.opendj.cli.ArgumentParser; import com.forgerock.opendj.cli.BooleanArgument; import com.forgerock.opendj.cli.CommonArguments; import com.forgerock.opendj.cli.StringArgument; import com.forgerock.opendj.util.OperatingSystem; import static org.opends.messages.ToolMessages.*; import static org.opends.server.config.ConfigConstants.*; import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.DynamicConstants.*; import static org.opends.server.util.StaticUtils.*; /** * This program provides a tool that may be used to generate an RC script that * can be used to start, stop, and restart the Directory Server, as well as to @@ -122,6 +119,7 @@ LocalizableMessage description = INFO_CREATERC_TOOL_DESCRIPTION.get(); ArgumentParser argParser = new ArgumentParser(CreateRCScript.class.getName(), description, false); argParser.setVersionHandler(new DirectoryServerVersionHandler()); BooleanArgument showUsage; StringArgument javaArgs; opendj3-server-dev/src/server/org/opends/server/tools/DBTest.java
@@ -26,6 +26,12 @@ */ package org.opends.server.tools; import static com.forgerock.opendj.cli.ArgumentConstants.*; import static com.forgerock.opendj.cli.Utils.*; import static org.opends.messages.ToolMessages.*; import static org.opends.server.util.StaticUtils.*; import java.io.OutputStream; import java.io.PrintStream; import java.text.ParseException; @@ -42,6 +48,7 @@ import org.opends.server.backends.jeb.*; import org.opends.server.core.CoreConfigManager; import org.opends.server.core.DirectoryServer; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.core.LockFileManager; import org.opends.server.extensions.ConfigFileHandler; import org.opends.server.loggers.JDKLogging; @@ -70,12 +77,6 @@ import com.sleepycat.je.LockMode; import com.sleepycat.je.OperationStatus; import static com.forgerock.opendj.cli.ArgumentConstants.*; import static com.forgerock.opendj.cli.Utils.*; import static org.opends.messages.ToolMessages.*; import static org.opends.server.util.StaticUtils.*; /** * This program provides a utility that may be used to debug a JE backend. This * tool provides the ability list various containers in the backend as well as @@ -175,6 +176,7 @@ LocalizableMessage toolDescription = INFO_DESCRIPTION_DBTEST_TOOL.get(); this.parser = new SubCommandArgumentParser(getClass().getName(), toolDescription, false); this.parser.setVersionHandler(new DirectoryServerVersionHandler()); } /** Displays the provided message followed by a help usage reference. */ opendj3-server-dev/src/server/org/opends/server/tools/EncodePassword.java
@@ -22,7 +22,7 @@ * * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions Copyright 2011-2014 ForgeRock AS. * Portions Copyright 2011-2015 ForgeRock AS. */ package org.opends.server.tools; @@ -48,6 +48,7 @@ import org.opends.server.core.CoreConfigManager; import org.opends.server.core.DirectoryServer; import org.opends.server.core.PasswordStorageSchemeConfigManager; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.crypto.CryptoManagerSync; import org.opends.server.extensions.ConfigFileHandler; import org.opends.server.loggers.JDKLogging; @@ -156,7 +157,7 @@ ArgumentParser argParser = new ArgumentParser("org.opends.server.tools.EncodePassword", toolDescription, false); argParser.setVersionHandler(new DirectoryServerVersionHandler()); // Initialize all the command-line argument types and register them with the // parser. opendj3-server-dev/src/server/org/opends/server/tools/JavaPropertiesToolArgumentParser.java
@@ -22,13 +22,14 @@ * * * Copyright 2007-2010 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS * Portions Copyright 2014-2015 ForgeRock AS */ package org.opends.server.tools; import static com.forgerock.opendj.cli.Utils.*; import static com.forgerock.opendj.util.OperatingSystem.*; import static org.opends.messages.ToolMessages.*; import static com.forgerock.opendj.cli.Utils.canWrite; import static com.forgerock.opendj.util.OperatingSystem.isWindows; import java.io.File; import java.util.LinkedHashSet; @@ -37,6 +38,7 @@ import org.opends.quicksetup.Constants; import org.opends.quicksetup.Installation; import org.opends.quicksetup.util.Utils; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import com.forgerock.opendj.cli.ArgumentException; import com.forgerock.opendj.cli.ArgumentParser; @@ -49,13 +51,13 @@ */ public class JavaPropertiesToolArgumentParser extends ArgumentParser { // Usage argument /** Usage argument. */ BooleanArgument showUsageArg; // Quiet argument /** Quiet argument. */ BooleanArgument quietArg; // The file containing the properties /** The file containing the properties. */ StringArgument propertiesFileArg; // The file that is generated /** The file that is generated. */ StringArgument destinationFileArg; /** @@ -68,6 +70,7 @@ super(mainClassName, INFO_JAVAPROPERTIES_TOOL_DESCRIPTION.get(getDefaultPropertiesValue()), false); setVersionHandler(new DirectoryServerVersionHandler()); } /** @@ -103,10 +106,8 @@ setUsageArgument(showUsageArg); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void parseArguments(String[] args) throws ArgumentException { LinkedHashSet<LocalizableMessage> errorMessages = new LinkedHashSet<LocalizableMessage>(); @@ -157,41 +158,28 @@ */ private String getDefaultDestinationValue() { String value; // Use this instead of Installation.getLocal() because making that call // starts a new JVM and the command-line becomes less responsive. String installPath = Utils.getInstallPathFromClasspath(); String root = Utils.getInstancePathFromInstallPath(installPath); if (root != null) { String libDir = Utils.getPath(root, Installation.LIBRARIES_PATH_RELATIVE); if (isWindows()) { value = Utils.getPath(libDir, Installation.SET_JAVA_PROPERTIES_FILE_WINDOWS); } else { value = Utils.getPath(libDir, Installation.SET_JAVA_PROPERTIES_FILE_UNIX); } return getPath(Utils.getPath(root, Installation.LIBRARIES_PATH_RELATIVE)); } else { // This can happen when we are not launched using the command-line (for // instance from the WebInstaller). if (isWindows()) { value = Utils.getPath(Installation.LIBRARIES_PATH_RELATIVE, Installation.SET_JAVA_PROPERTIES_FILE_WINDOWS); } else { value = Utils.getPath(Installation.LIBRARIES_PATH_RELATIVE, Installation.SET_JAVA_PROPERTIES_FILE_UNIX); } return getPath(Installation.LIBRARIES_PATH_RELATIVE); } return value; } private String getPath(String libDir) { final String relativePath = isWindows() ? Installation.SET_JAVA_PROPERTIES_FILE_WINDOWS : Installation.SET_JAVA_PROPERTIES_FILE_UNIX; return Utils.getPath(libDir, relativePath); } /** @@ -201,7 +189,6 @@ */ private static String getDefaultPropertiesValue() { String defaultPropertiesValue; // Use this instead of Installation.getLocal() because making that call // starts a new JVM and the command-line becomes less responsive. String installPath = Utils.getInstallPathFromClasspath(); @@ -209,15 +196,13 @@ if (root != null) { String configDir = Utils.getPath(root, Installation.CONFIG_PATH_RELATIVE); defaultPropertiesValue = Utils.getPath(configDir, Installation.DEFAULT_JAVA_PROPERTIES_FILE); return Utils.getPath(configDir, Installation.DEFAULT_JAVA_PROPERTIES_FILE); } else { // This can happen when we are not launched using the command-line (for // instance from the WebInstaller). defaultPropertiesValue = Installation.DEFAULT_JAVA_PROPERTIES_FILE; return Installation.DEFAULT_JAVA_PROPERTIES_FILE; } return defaultPropertiesValue; } } opendj3-server-dev/src/server/org/opends/server/tools/LDAPCompare.java
@@ -22,7 +22,7 @@ * * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions Copyright 2012-2014 ForgeRock AS * Portions Copyright 2012-2015 ForgeRock AS */ package org.opends.server.tools; @@ -42,6 +42,7 @@ import org.forgerock.opendj.ldap.ByteString; import org.forgerock.opendj.ldap.DecodeException; import org.opends.server.controls.LDAPAssertionRequestControl; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.protocols.ldap.CompareRequestProtocolOp; import org.opends.server.protocols.ldap.CompareResponseProtocolOp; import org.opends.server.protocols.ldap.LDAPFilter; @@ -411,6 +412,7 @@ ArgumentParser argParser = new ArgumentParser(CLASS_NAME, toolDescription, false, true, 1, 0, " \'attribute:value\' \"DN\" ..."); argParser.setVersionHandler(new DirectoryServerVersionHandler()); try { opendj3-server-dev/src/server/org/opends/server/tools/LDAPDelete.java
@@ -22,7 +22,7 @@ * * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions Copyright 2012-2014 ForgeRock AS. * Portions Copyright 2012-2015 ForgeRock AS. */ package org.opends.server.tools; @@ -42,6 +42,7 @@ import org.forgerock.opendj.ldap.ByteString; import org.forgerock.opendj.ldap.DecodeException; import org.opends.server.controls.SubtreeDeleteControl; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.protocols.ldap.DeleteRequestProtocolOp; import org.opends.server.protocols.ldap.DeleteResponseProtocolOp; import org.opends.server.protocols.ldap.LDAPMessage; @@ -329,6 +330,7 @@ LocalizableMessage toolDescription = INFO_LDAPDELETE_TOOL_DESCRIPTION.get(); ArgumentParser argParser = new ArgumentParser(CLASS_NAME, toolDescription, false, true, 0, 1, "\"DN\""); argParser.setVersionHandler(new DirectoryServerVersionHandler()); try { propertiesFileArgument = new StringArgument("propertiesFilePath", opendj3-server-dev/src/server/org/opends/server/tools/LDAPModify.java
@@ -23,7 +23,7 @@ * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions Copyright 2012 profiq, s.r.o. * Portions Copyright 2012-2014 ForgeRock AS. * Portions Copyright 2012-2015 ForgeRock AS. */ package org.opends.server.tools; @@ -42,6 +42,7 @@ import org.forgerock.opendj.ldap.DecodeException; import org.forgerock.opendj.ldap.ResultCode; import org.opends.server.controls.*; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.plugins.ChangeNumberControlPlugin; import org.opends.server.protocols.ldap.AddRequestProtocolOp; import org.opends.server.protocols.ldap.AddResponseProtocolOp; @@ -608,6 +609,7 @@ LocalizableMessage toolDescription = INFO_LDAPMODIFY_TOOL_DESCRIPTION.get(); ArgumentParser argParser = new ArgumentParser(CLASS_NAME, toolDescription, false); argParser.setVersionHandler(new DirectoryServerVersionHandler()); try { propertiesFileArgument = new StringArgument("propertiesFilePath", opendj3-server-dev/src/server/org/opends/server/tools/LDAPPasswordModify.java
@@ -22,7 +22,7 @@ * * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions Copyright 2013-2014 ForgeRock AS * Portions Copyright 2013-2015 ForgeRock AS */ package org.opends.server.tools; @@ -36,6 +36,7 @@ import org.opends.server.controls.PasswordPolicyErrorType; import org.opends.server.controls.PasswordPolicyResponseControl; import org.opends.server.controls.PasswordPolicyWarningType; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.forgerock.opendj.io.*; import org.opends.server.protocols.ldap.ExtendedRequestProtocolOp; import org.opends.server.protocols.ldap.ExtendedResponseProtocolOp; @@ -182,6 +183,7 @@ LocalizableMessage toolDescription = INFO_LDAPPWMOD_TOOL_DESCRIPTION.get(); ArgumentParser argParser = new ArgumentParser(CLASS_NAME, toolDescription, false); argParser.setVersionHandler(new DirectoryServerVersionHandler()); try { opendj3-server-dev/src/server/org/opends/server/tools/LDAPSearch.java
@@ -22,7 +22,7 @@ * * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions Copyright 2012-2014 ForgeRock AS * Portions Copyright 2012-2015 ForgeRock AS */ package org.opends.server.tools; @@ -39,6 +39,7 @@ import org.forgerock.opendj.ldap.ByteString; import org.forgerock.opendj.ldap.DecodeException; import org.opends.server.controls.*; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.protocols.ldap.*; import org.opends.server.types.*; import org.opends.server.util.Base64; @@ -692,6 +693,7 @@ ArgumentParser argParser = new ArgumentParser(CLASS_NAME, toolDescription, false, true, 0, 0, "[filter] [attributes ...]"); argParser.setVersionHandler(new DirectoryServerVersionHandler()); try { opendj3-server-dev/src/server/org/opends/server/tools/LDIFDiff.java
@@ -22,7 +22,7 @@ * * * Copyright 2006-2009 Sun Microsystems, Inc. * Portions Copyright 2013-2014 ForgeRock AS. * Portions Copyright 2013-2015 ForgeRock AS. */ package org.opends.server.tools; import java.io.BufferedReader; @@ -41,6 +41,7 @@ import org.forgerock.i18n.LocalizableMessage; import org.opends.server.core.DirectoryServer; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.extensions.ConfigFileHandler; import org.opends.server.loggers.JDKLogging; import org.opends.server.types.Attribute; @@ -168,6 +169,7 @@ LocalizableMessage toolDescription = INFO_LDIFDIFF_TOOL_DESCRIPTION.get(); ArgumentParser argParser = new ArgumentParser(CLASS_NAME, toolDescription, false); argParser.setVersionHandler(new DirectoryServerVersionHandler()); try { sourceLDIF = new StringArgument( opendj3-server-dev/src/server/org/opends/server/tools/LDIFModify.java
@@ -22,7 +22,7 @@ * * * Copyright 2006-2008 Sun Microsystems, Inc. * Portions Copyright 2012-2014 ForgeRock AS * Portions Copyright 2012-2015 ForgeRock AS */ package org.opends.server.tools; @@ -40,6 +40,7 @@ import org.forgerock.i18n.LocalizableMessage; import org.forgerock.opendj.ldap.ByteString; import org.opends.server.core.DirectoryServer; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.extensions.ConfigFileHandler; import org.opends.server.loggers.JDKLogging; import org.opends.server.protocols.ldap.LDAPResultCode; @@ -437,6 +438,7 @@ LocalizableMessage toolDescription = INFO_LDIFMODIFY_TOOL_DESCRIPTION.get(); ArgumentParser argParser = new ArgumentParser(CLASS_NAME, toolDescription, false); argParser.setVersionHandler(new DirectoryServerVersionHandler()); try { opendj3-server-dev/src/server/org/opends/server/tools/LDIFSearch.java
@@ -22,7 +22,7 @@ * * * Copyright 2006-2008 Sun Microsystems, Inc. * Portions Copyright 2013-2014 ForgeRock AS * Portions Copyright 2013-2015 ForgeRock AS */ package org.opends.server.tools; @@ -38,6 +38,7 @@ import org.forgerock.i18n.LocalizableMessage; import org.forgerock.opendj.ldap.SearchScope; import org.opends.server.core.DirectoryServer; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.extensions.ConfigFileHandler; import org.opends.server.loggers.JDKLogging; import org.opends.server.protocols.ldap.LDAPResultCode; @@ -66,41 +67,18 @@ */ public class LDIFSearch { /** * The fully-qualified name of this class. */ /** The fully-qualified name of this class. */ private static final String CLASS_NAME = "org.opends.server.tools.LDIFSearch"; /** * The search scope string that will be used for baseObject searches. */ /** The search scope string that will be used for baseObject searches. */ private static final String SCOPE_STRING_BASE = "base"; /** * The search scope string that will be used for singleLevel searches. */ /** The search scope string that will be used for singleLevel searches. */ private static final String SCOPE_STRING_ONE = "one"; /** * The search scope string that will be used for wholeSubtree searches. */ /** The search scope string that will be used for wholeSubtree searches. */ private static final String SCOPE_STRING_SUB = "sub"; /** * The search scope string that will be used for subordinateSubtree searches. */ /** The search scope string that will be used for subordinateSubtree searches. */ private static final String SCOPE_STRING_SUBORDINATE = "subordinate"; /** * Provides the command line arguments to the <CODE>mainSearch</CODE> method * so that they can be processed. @@ -166,6 +144,7 @@ ArgumentParser argParser = new ArgumentParser(CLASS_NAME, toolDescription, false, true, 0, 0, "[filter] [attributes ...]"); argParser.setVersionHandler(new DirectoryServerVersionHandler()); try { opendj3-server-dev/src/server/org/opends/server/tools/ListBackends.java
@@ -22,14 +22,9 @@ * * * Copyright 2006-2008 Sun Microsystems, Inc. * Portions Copyright 2012-2014 ForgeRock AS * Portions Copyright 2012-2015 ForgeRock AS */ package org.opends.server.tools; import org.forgerock.i18n.LocalizableMessage; import java.io.OutputStream; import java.io.PrintStream; @@ -39,10 +34,12 @@ import java.util.TreeSet; import org.opends.server.config.ConfigEntry; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.opendj.config.server.ConfigException; import org.opends.server.config.DNConfigAttribute; import org.opends.server.config.StringConfigAttribute; import org.opends.server.core.DirectoryServer; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.extensions.ConfigFileHandler; import org.opends.server.loggers.JDKLogging; import org.opends.server.types.DirectoryException; @@ -68,9 +65,6 @@ import static com.forgerock.opendj.cli.Utils.wrapText; import static com.forgerock.opendj.cli.Utils.filterExitCode; /** * This program provides a utility that may be used to list the backends in the * server, as well as to determine which backend holds a given entry. @@ -146,7 +140,7 @@ ArgumentParser argParser = new ArgumentParser("org.opends.server.tools.ListBackends", toolDescription, false); argParser.setVersionHandler(new DirectoryServerVersionHandler()); // Initialize all the command-line argument types and register them with the // parser. opendj3-server-dev/src/server/org/opends/server/tools/ManageAccount.java
@@ -23,30 +23,44 @@ * * * Copyright 2006-2009 Sun Microsystems, Inc. * Portions Copyright 2011-2014 ForgeRock AS * Portions Copyright 2011-2015 ForgeRock AS */ package org.opends.server.tools; import static com.forgerock.opendj.cli.ArgumentConstants.*; import static com.forgerock.opendj.cli.Utils.wrapText; import static com.forgerock.opendj.cli.Utils.filterExitCode; import static org.opends.messages.ToolMessages.*; import static org.opends.server.extensions.PasswordPolicyStateExtendedOperation.*; import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.*; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedList; import java.util.HashSet; import java.util.LinkedList; import java.util.concurrent.atomic.AtomicInteger; import javax.net.ssl.SSLException; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.opendj.io.ASN1; import org.forgerock.opendj.io.ASN1Reader; import org.forgerock.opendj.io.ASN1Writer; import org.forgerock.opendj.ldap.ByteStringBuilder; import org.opends.server.admin.AdministrationConnector; import org.forgerock.opendj.io.*; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.loggers.JDKLogging; import org.opends.server.protocols.ldap.ExtendedRequestProtocolOp; import org.opends.server.protocols.ldap.ExtendedResponseProtocolOp; import org.opends.server.protocols.ldap.LDAPMessage; import org.opends.server.protocols.ldap.LDAPResultCode; import org.opends.server.types.NullOutputStream; import org.forgerock.opendj.ldap.ByteStringBuilder; import org.opends.server.util.EmbeddedUtils; import org.opends.server.util.args.LDAPConnectionArgumentParser; import com.forgerock.opendj.cli.Argument; import com.forgerock.opendj.cli.ArgumentException; @@ -59,31 +73,13 @@ import com.forgerock.opendj.cli.SubCommand; import com.forgerock.opendj.cli.SubCommandArgumentParser; import org.opends.server.util.args.LDAPConnectionArgumentParser; import static org.opends.server.extensions. PasswordPolicyStateExtendedOperation.*; import static org.opends.messages.ToolMessages.*; import static com.forgerock.opendj.cli.ArgumentConstants.*; import org.opends.server.util.EmbeddedUtils; import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.*; import static com.forgerock.opendj.cli.Utils.wrapText; import static com.forgerock.opendj.cli.Utils.filterExitCode; /** * This class provides a tool that can be used to perform various kinds of * account management using the password policy state extended operation. */ public class ManageAccount { /** * The fully-qualified name of this class. */ /** The fully-qualified name of this class. */ private static final String CLASS_NAME = "org.opends.server.tools.ManageAccount"; @@ -832,6 +828,7 @@ argParser = new SubCommandArgumentParser( CLASS_NAME, INFO_PWPSTATE_TOOL_DESCRIPTION.get(), false); argParser.setVersionHandler(new DirectoryServerVersionHandler()); BooleanArgument showUsage; BooleanArgument trustAll; opendj3-server-dev/src/server/org/opends/server/tools/StopDS.java
@@ -22,7 +22,7 @@ * * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions Copyright 2011-2014 ForgeRock AS * Portions Copyright 2011-2015 ForgeRock AS */ package org.opends.server.tools; @@ -46,6 +46,7 @@ import org.opends.server.controls.ProxiedAuthV2Control; import org.opends.server.core.DirectoryServer; import org.opends.server.core.LockFileManager; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.loggers.JDKLogging; import org.opends.server.protocols.ldap.AddRequestProtocolOp; import org.opends.server.protocols.ldap.AddResponseProtocolOp; @@ -83,9 +84,7 @@ */ public class StopDS { /** * The fully-qualified name of this class. */ /** The fully-qualified name of this class. */ private static final String CLASS_NAME = "org.opends.server.tools.StopDS"; /** @@ -94,42 +93,23 @@ * a lot of memory for the JVM (Using -Xms and -Xmx options) as there might * be calls to Runtime.exec. */ /** * The server is already stopped. */ /** The server is already stopped. */ private static int SERVER_ALREADY_STOPPED = 98; /** * The server must be started. */ /** The server must be started. */ private static int START_SERVER = 99; /** * The server must be stopped using a system call. */ /** The server must be stopped using a system call. */ private static int STOP_USING_SYSTEM_CALL = 100; /** * The server must be restarted using system calls. */ /** The server must be restarted using system calls. */ private static int RESTART_USING_SYSTEM_CALL = 101; /** * The server must be stopped using protocol. */ /** The server must be stopped using protocol. */ private static int STOP_USING_PROTOCOL = 102; /** * The server must be stopped as a window service. */ /** The server must be stopped as a window service. */ private static int STOP_AS_WINDOW_SERVICE = 103; /** * The server must be restarted as a window service. */ /** The server must be restarted as a window service. */ private static int RESTART_AS_WINDOW_SERVICE = 104; /** * The server must be started and it should use quiet mode. */ /** The server must be started and it should use quiet mode. */ private static int START_SERVER_QUIET = 105; /** * The server must be restarted using system calls and it should use quiet * mode. */ /** The server must be restarted using system calls and it should use quiet mode. */ private static int RESTART_USING_SYSTEM_CALL_QUIET = 106; /** @@ -193,6 +173,7 @@ LocalizableMessage toolDescription = INFO_STOPDS_TOOL_DESCRIPTION.get(); ArgumentParser argParser = new ArgumentParser(CLASS_NAME, toolDescription, false); argParser.setVersionHandler(new DirectoryServerVersionHandler()); BooleanArgument checkStoppability; BooleanArgument quietMode; BooleanArgument windowsNetStop; opendj3-server-dev/src/server/org/opends/server/tools/VerifyIndex.java
@@ -46,6 +46,7 @@ import org.opends.server.core.CoreConfigManager; import org.opends.server.core.DirectoryServer; import org.opends.server.core.LockFileManager; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.extensions.ConfigFileHandler; import org.opends.server.loggers.JDKLogging; import org.opends.server.types.DN; @@ -119,7 +120,7 @@ ArgumentParser argParser = new ArgumentParser("org.opends.server.tools.VerifyIndex", toolDescription, false); argParser.setVersionHandler(new DirectoryServerVersionHandler()); // Initialize all the command-line argument types and register them with the // parser. opendj3-server-dev/src/server/org/opends/server/tools/dsreplication/ReplicationCliArgumentParser.java
@@ -22,17 +22,15 @@ * * * Copyright 2007-2010 Sun Microsystems, Inc. * Portions Copyright 2012-2014 ForgeRock AS * Portions Copyright 2012-2015 ForgeRock AS */ package org.opends.server.tools.dsreplication; import static com.forgerock.opendj.cli.ArgumentConstants.*; import static com.forgerock.opendj.cli.Utils.*; import static org.opends.messages.AdminToolMessages.*; import static org.opends.messages.ToolMessages.*; import static com.forgerock.opendj.cli.ArgumentConstants.*; import static com.forgerock.opendj.cli.Utils.canWrite; import static com.forgerock.opendj.cli.Utils.LINE_SEPARATOR; import static com.forgerock.opendj.cli.Utils.isDN; import java.io.File; import java.io.OutputStream; @@ -47,6 +45,7 @@ import org.opends.server.admin.client.cli.SecureConnectionCliArgs; import org.opends.server.admin.client.cli.SecureConnectionCliParser; import org.opends.server.admin.client.cli.TaskScheduleArgs; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.extensions.ConfigFileHandler; import org.opends.server.tasks.PurgeConflictsHistoricalTask; @@ -78,256 +77,124 @@ private SubCommand statusReplicationSubCmd; private SubCommand purgeHistoricalSubCmd; int defaultAdminPort = private int defaultAdminPort = AdministrationConnector.DEFAULT_ADMINISTRATION_CONNECTOR_PORT; /** * No-prompt argument. */ /** No-prompt argument. */ BooleanArgument noPromptArg; private String defaultLocalHostValue; /** * The 'hostName' argument for the first server. */ private StringArgument hostName1Arg = null; /** * The 'port' argument for the first server. */ private IntegerArgument port1Arg = null; /** * The 'bindDN' argument for the first server. */ private StringArgument bindDn1Arg = null; /** * The 'bindPasswordFile' argument for the first server. */ FileBasedArgument bindPasswordFile1Arg = null; /** * The 'bindPassword' argument for the first server. */ StringArgument bindPassword1Arg = null; /** * The 'replicationPort' argument for the first server. */ IntegerArgument replicationPort1Arg = null; /** * The 'noReplicationServer' argument for the first server. */ BooleanArgument noReplicationServer1Arg = null; /** * The 'onlyReplicationServer' argument for the first server. */ BooleanArgument onlyReplicationServer1Arg = null; /** * The 'secureReplication' argument for the first server. */ BooleanArgument secureReplication1Arg = null; /** * The 'hostName' argument for the second server. */ private StringArgument hostName2Arg = null; /** * The 'port' argument for the second server. */ private IntegerArgument port2Arg = null; /** * The 'binDN' argument for the second server. */ private StringArgument bindDn2Arg = null; /** * The 'bindPasswordFile' argument for the second server. */ FileBasedArgument bindPasswordFile2Arg = null; /** * The 'bindPassword' argument for the second server. */ StringArgument bindPassword2Arg = null; /** * The 'replicationPort' argument for the second server. */ IntegerArgument replicationPort2Arg = null; /** * The 'noReplicationServer' argument for the second server. */ BooleanArgument noReplicationServer2Arg = null; /** * The 'onlyReplicationServer' argument for the second server. */ BooleanArgument onlyReplicationServer2Arg = null; /** * The 'secureReplication' argument for the second server. */ private BooleanArgument secureReplication2Arg = null; /** * The 'skipPortCheckArg' argument to not check replication ports. */ /** The 'hostName' argument for the first server. */ private StringArgument hostName1Arg; /** The 'port' argument for the first server. */ private IntegerArgument port1Arg; /** The 'bindDN' argument for the first server. */ private StringArgument bindDn1Arg; /** The 'bindPasswordFile' argument for the first server. */ FileBasedArgument bindPasswordFile1Arg; /** The 'bindPassword' argument for the first server. */ StringArgument bindPassword1Arg; /** The 'replicationPort' argument for the first server. */ IntegerArgument replicationPort1Arg; /** The 'noReplicationServer' argument for the first server. */ BooleanArgument noReplicationServer1Arg; /** The 'onlyReplicationServer' argument for the first server. */ BooleanArgument onlyReplicationServer1Arg; /** The 'secureReplication' argument for the first server. */ private BooleanArgument secureReplication1Arg; /** The 'hostName' argument for the second server. */ private StringArgument hostName2Arg; /** The 'port' argument for the second server. */ private IntegerArgument port2Arg; /** The 'binDN' argument for the second server. */ private StringArgument bindDn2Arg; /** The 'bindPasswordFile' argument for the second server. */ FileBasedArgument bindPasswordFile2Arg; /** The 'bindPassword' argument for the second server. */ StringArgument bindPassword2Arg; /** The 'replicationPort' argument for the second server. */ IntegerArgument replicationPort2Arg; /** The 'noReplicationServer' argument for the second server. */ BooleanArgument noReplicationServer2Arg; /** The 'onlyReplicationServer' argument for the second server. */ BooleanArgument onlyReplicationServer2Arg; /** The 'secureReplication' argument for the second server. */ private BooleanArgument secureReplication2Arg; /** The 'skipPortCheckArg' argument to not check replication ports. */ private BooleanArgument skipPortCheckArg; /** * The 'noSchemaReplication' argument to not replicate schema. */ /** The 'noSchemaReplication' argument to not replicate schema. */ BooleanArgument noSchemaReplicationArg; /** * The 'useSecondServerAsSchemaSource' argument to not replicate schema. */ /** The 'useSecondServerAsSchemaSource' argument to not replicate schema. */ private BooleanArgument useSecondServerAsSchemaSourceArg; /** * The 'disableAll' argument to disable all the replication configuration of * server. */ /** The 'disableAll' argument to disable all the replication configuration of server. */ BooleanArgument disableAllArg; /** * The 'disableReplicationServer' argument to disable the replication * server. */ /** The 'disableReplicationServer' argument to disable the replication server. */ BooleanArgument disableReplicationServerArg; /** * The 'hostName' argument for the source server. */ private StringArgument hostNameSourceArg = null; /** * The 'port' argument for the source server. */ private IntegerArgument portSourceArg = null; /** * The 'hostName' argument for the destination server. */ private StringArgument hostNameDestinationArg = null; /** * The 'port' argument for the destination server. */ private IntegerArgument portDestinationArg = null; /** * The 'suffixes' global argument. */ StringArgument baseDNsArg = null; /** * The 'quiet' argument. */ BooleanArgument quietArg; /** * The 'scriptFriendly' argument. */ /** The 'hostName' argument for the source server. */ private StringArgument hostNameSourceArg; /** The 'port' argument for the source server. */ private IntegerArgument portSourceArg; /** The 'hostName' argument for the destination server. */ private StringArgument hostNameDestinationArg; /** The 'port' argument for the destination server. */ private IntegerArgument portDestinationArg; /** The 'suffixes' global argument. */ StringArgument baseDNsArg; /**The 'quiet' argument. */ private BooleanArgument quietArg; /**The 'scriptFriendly' argument. */ BooleanArgument scriptFriendlyArg; /** * Properties file argument. */ /**Properties file argument. */ StringArgument propertiesFileArgument; /** * No-properties file argument. */ /**No-properties file argument. */ BooleanArgument noPropertiesFileArgument; /** * The argument that the user must set to display the equivalent * non-interactive mode argument. */ BooleanArgument displayEquivalentArgument; /** * The argument that allows the user to dump the equivalent non-interactive * command to a file. */ StringArgument equivalentCommandFileArgument; /** * The argument that the user must set to have advanced options in interactive * mode. */ /** The argument that the user must set to have advanced options in interactive mode. */ BooleanArgument advancedArg; // The argument set by the user to specify the configuration class // (useful when dsreplication purge-historical runs locally) /** * The argument set by the user to specify the configuration class * (useful when dsreplication purge-historical runs locally). */ private StringArgument configClassArg; // The argument set by the user to specify the configuration file // (useful when dsreplication purge-historical runs locally) /** * The argument set by the user to specify the configuration file * (useful when dsreplication purge-historical runs locally). */ private StringArgument configFileArg; TaskScheduleArgs taskArgs; /** * The 'maximumDuration' argument for the purge of historical. */ /** The 'maximumDuration' argument for the purge of historical. */ IntegerArgument maximumDurationArg; /** * The text of the enable replication subcommand. */ public static final String ENABLE_REPLICATION_SUBCMD_NAME = "enable"; /** The text of the enable replication subcommand. */ static final String ENABLE_REPLICATION_SUBCMD_NAME = "enable"; /** The text of the disable replication subcommand. */ static final String DISABLE_REPLICATION_SUBCMD_NAME = "disable"; /** The text of the initialize replication subcommand. */ static final String INITIALIZE_REPLICATION_SUBCMD_NAME = "initialize"; /** The text of the initialize all replication subcommand. */ public static final String INITIALIZE_ALL_REPLICATION_SUBCMD_NAME = "initialize-all"; /** The text of the pre external initialization subcommand. */ static final String PRE_EXTERNAL_INITIALIZATION_SUBCMD_NAME = "pre-external-initialization"; /** The text of the initialize all replication subcommand. */ static final String POST_EXTERNAL_INITIALIZATION_SUBCMD_NAME = "post-external-initialization"; /** * The text of the disable replication subcommand. */ public static final String DISABLE_REPLICATION_SUBCMD_NAME = "disable"; /** * The text of the initialize replication subcommand. */ public static final String INITIALIZE_REPLICATION_SUBCMD_NAME = "initialize"; /** * The text of the initialize all replication subcommand. */ public static final String INITIALIZE_ALL_REPLICATION_SUBCMD_NAME = "initialize-all"; /** * The text of the pre external initialization subcommand. */ public static final String PRE_EXTERNAL_INITIALIZATION_SUBCMD_NAME = "pre-external-initialization"; /** * The text of the initialize all replication subcommand. */ public static final String POST_EXTERNAL_INITIALIZATION_SUBCMD_NAME = "post-external-initialization"; /** * The text of the status replication subcommand. */ public static final String STATUS_REPLICATION_SUBCMD_NAME = "status"; /** * The text of the purge historical subcommand. */ public static final String PURGE_HISTORICAL_SUBCMD_NAME = "purge-historical"; // This CLI is always using the administration connector with SSL /** The text of the status replication subcommand. */ static final String STATUS_REPLICATION_SUBCMD_NAME = "status"; /** The text of the purge historical subcommand. */ static final String PURGE_HISTORICAL_SUBCMD_NAME = "purge-historical"; /** This CLI is always using the administration connector with SSL. */ private static final boolean alwaysSSL = true; /** @@ -344,6 +211,7 @@ INFO_REPLICATION_TOOL_DESCRIPTION.get(ENABLE_REPLICATION_SUBCMD_NAME, INITIALIZE_REPLICATION_SUBCMD_NAME), false); setVersionHandler(new DirectoryServerVersionHandler()); } /** @@ -394,9 +262,7 @@ validateSubcommandOptions(buf); } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public int validateGlobalOptions(LocalizableMessageBuilder buf) { @@ -513,9 +379,9 @@ secureArgsList.bindPasswordArg }; for (int i=0; i<argsToRemove.length; i++) for (Argument arg : argsToRemove) { defaultArgs.remove(argsToRemove[i]); defaultArgs.remove(arg); } defaultArgs.remove(super.noPropertiesFileArg); defaultArgs.remove(super.propertiesFileArg); @@ -758,10 +624,10 @@ skipPortCheckArg, noSchemaReplicationArg, useSecondServerAsSchemaSourceArg }; for (int i=0; i<argsToAdd.length; i++) for (Argument arg : argsToAdd) { argsToAdd[i].setPropertyName(argsToAdd[i].getLongIdentifier()); enableReplicationSubCmd.addArgument(argsToAdd[i]); arg.setPropertyName(arg.getLongIdentifier()); enableReplicationSubCmd.addArgument(arg); } } @@ -793,9 +659,9 @@ Argument[] argsToAdd = { secureArgsList.hostNameArg, secureArgsList.portArg, secureArgsList.bindDnArg, disableReplicationServerArg, disableAllArg}; for (int i=0; i<argsToAdd.length; i++) for (Argument arg : argsToAdd) { disableReplicationSubCmd.addArgument(argsToAdd[i]); disableReplicationSubCmd.addArgument(arg); } } @@ -840,10 +706,10 @@ hostNameSourceArg, portSourceArg, hostNameDestinationArg, portDestinationArg }; for (int i=0; i<argsToAdd.length; i++) for (Argument arg : argsToAdd) { argsToAdd[i].setPropertyName(argsToAdd[i].getLongIdentifier()); initializeReplicationSubCmd.addArgument(argsToAdd[i]); arg.setPropertyName(arg.getLongIdentifier()); initializeReplicationSubCmd.addArgument(arg); } } @@ -863,9 +729,9 @@ secureArgsList.hostNameArg.setDefaultValue(getDefaultHostValue()); Argument[] argsToAdd = { secureArgsList.hostNameArg, secureArgsList.portArg }; for (int i=0; i<argsToAdd.length; i++) for (Argument arg : argsToAdd) { initializeAllReplicationSubCmd.addArgument(argsToAdd[i]); initializeAllReplicationSubCmd.addArgument(arg); } } @@ -895,9 +761,9 @@ secureArgsList.portArg, externalInitializationLocalOnlyArg}; for (int i=0; i<argsToAdd.length; i++) for (Argument arg : argsToAdd) { preExternalInitializationSubCmd.addArgument(argsToAdd[i]); preExternalInitializationSubCmd.addArgument(arg); } } @@ -918,9 +784,9 @@ secureArgsList.hostNameArg.setDefaultValue(getDefaultHostValue()); Argument[] argsToAdd = { secureArgsList.hostNameArg, secureArgsList.portArg }; for (int i=0; i<argsToAdd.length; i++) for (Argument arg : argsToAdd) { postExternalInitializationSubCmd.addArgument(argsToAdd[i]); postExternalInitializationSubCmd.addArgument(arg); } } @@ -944,9 +810,9 @@ secureArgsList.hostNameArg.setDefaultValue(getDefaultHostValue()); Argument[] argsToAdd = { secureArgsList.hostNameArg, secureArgsList.portArg, scriptFriendlyArg }; for (int i=0; i<argsToAdd.length; i++) for (Argument arg : argsToAdd) { statusReplicationSubCmd.addArgument(argsToAdd[i]); statusReplicationSubCmd.addArgument(arg); } } @@ -983,10 +849,10 @@ secureArgsList.portArg, maximumDurationArg}; for (int i=0; i<argsToAdd.length; i++) for (Argument arg : argsToAdd) { argsToAdd[i].setPropertyName(argsToAdd[i].getLongIdentifier()); purgeHistoricalSubCmd.addArgument(argsToAdd[i]); arg.setPropertyName(arg.getLongIdentifier()); purgeHistoricalSubCmd.addArgument(arg); } for (Argument arg : taskArgs.getArguments()) { @@ -1071,72 +937,6 @@ } /** * Get the password of the first server which has to be used in the * enable replication subcommand. * * @param dn * The user DN for which to password could be asked. * @param out * The input stream to used if we have to prompt to the * user. * @param err * The error stream to used if we have to prompt to the * user. * @return the password of the first server which has to be used n the * enable replication subcommand. */ public String getBindPassword1( String dn, OutputStream out, OutputStream err) { return getBindPassword(dn, out, err, bindPassword1Arg, bindPasswordFile1Arg); } /** * Get the password of the second server which has to be used in the * enable replication subcommand. * * @param dn * The user DN for which to password could be asked. * @param out * The input stream to used if we have to prompt to the * user. * @param err * The error stream to used if we have to prompt to the * user. * @return the password of the second server which has to be used in the * enable replication subcommand. */ public String getBindPassword2( String dn, OutputStream out, OutputStream err) { return getBindPassword(dn, out, err, bindPassword2Arg, bindPasswordFile2Arg); } /** * Get the password of the global administrator which has to be used for the * command. * * @param dn * The user DN for which to password could be asked. * @param out * The input stream to used if we have to prompt to the * user. * @param err * The error stream to used if we have to prompt to the * user. * @return the password of the global administrator which has to be used for * the command. */ public String getBindPasswordAdmin( String dn, OutputStream out, OutputStream err) { return getBindPassword(dn, out, err, secureArgsList.bindPasswordArg, secureArgsList.bindPasswordFileArg); } /** * Returns the Administrator UID explicitly provided in the command-line. * @return the Administrator UID explicitly provided in the command-line. */ @@ -1752,12 +1552,11 @@ */ private String getValue(StringArgument arg) { String v = null; if (arg.isPresent()) { v = arg.getValue(); return arg.getValue(); } return v; return null; } /** @@ -1779,12 +1578,11 @@ */ private int getValue(IntegerArgument arg) { int v = -1; if (arg.isPresent()) { try { v = arg.getIntValue(); return arg.getIntValue(); } catch (ArgumentException ae) { @@ -1796,7 +1594,7 @@ "parseArguments which should result in an error.", ae); } } return v; return -1; } /** @@ -1806,13 +1604,12 @@ */ private int getDefaultValue(IntegerArgument arg) { int returnValue = -1; String defaultValue = arg.getDefaultValue(); if (defaultValue != null) { returnValue = Integer.parseInt(arg.getDefaultValue()); return Integer.parseInt(arg.getDefaultValue()); } return returnValue; return -1; } /** @@ -1824,7 +1621,7 @@ * @param buf the LocalizableMessageBuilder object where we add the error messages * describing the errors encountered. */ public void validateSubcommandOptions(LocalizableMessageBuilder buf) private void validateSubcommandOptions(LocalizableMessageBuilder buf) { if (isEnableReplicationSubcommand()) { @@ -1858,7 +1655,6 @@ { validatePurgeHistoricalOptions(buf); } else { // This can occur if the user did not provide any subcommand. We assume @@ -1997,13 +1793,12 @@ */ private boolean isSubcommand(String name) { boolean isSubcommand = false; SubCommand subCommand = getSubCommand(); if (subCommand != null) { isSubcommand = subCommand.getName().equalsIgnoreCase(name); return subCommand.getName().equalsIgnoreCase(name); } return isSubcommand; return false; } /** @@ -2029,10 +1824,10 @@ {noSchemaReplicationArg, useSecondServerAsSchemaSourceArg} }; for (int i=0; i< conflictingPairs.length; i++) for (Argument[] conflictingPair : conflictingPairs) { Argument arg1 = conflictingPairs[i][0]; Argument arg2 = conflictingPairs[i][1]; Argument arg1 = conflictingPair[0]; Argument arg2 = conflictingPair[1]; if (arg1.isPresent() && arg2.isPresent()) { LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get( @@ -2041,15 +1836,13 @@ } } if (hostName1Arg.getValue().equalsIgnoreCase(hostName2Arg.getValue()) && !isInteractive()) if (hostName1Arg.getValue().equalsIgnoreCase(hostName2Arg.getValue()) && !isInteractive() && port1Arg.getValue().equals(port2Arg.getValue())) { if (port1Arg.getValue().equals(port2Arg.getValue())) { LocalizableMessage message = ERR_REPLICATION_ENABLE_SAME_SERVER_PORT.get( hostName1Arg.getValue(), port1Arg.getValue()); addMessage(buf, message); } LocalizableMessage message = ERR_REPLICATION_ENABLE_SAME_SERVER_PORT.get( hostName1Arg.getValue(), port1Arg.getValue()); addMessage(buf, message); } } @@ -2072,10 +1865,10 @@ {disableAllArg, baseDNsArg} }; for (int i=0; i< conflictingPairs.length; i++) for (Argument[] conflictingPair : conflictingPairs) { Argument arg1 = conflictingPairs[i][0]; Argument arg2 = conflictingPairs[i][1]; Argument arg1 = conflictingPair[0]; Argument arg2 = conflictingPair[1]; if (arg1.isPresent() && arg2.isPresent()) { LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get( @@ -2161,15 +1954,13 @@ */ private void validateInitializeReplicationOptions(LocalizableMessageBuilder buf) { if (hostNameSourceArg.getValue().equalsIgnoreCase( hostNameDestinationArg.getValue()) && !isInteractive()) if (hostNameSourceArg.getValue().equalsIgnoreCase(hostNameDestinationArg.getValue()) && !isInteractive() && portSourceArg.getValue().equals(portDestinationArg.getValue())) { if (portSourceArg.getValue().equals(portDestinationArg.getValue())) { LocalizableMessage message = ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT.get( hostNameSourceArg.getValue(), portSourceArg.getValue()); addMessage(buf, message); } LocalizableMessage message = ERR_REPLICATION_INITIALIZE_SAME_SERVER_PORT.get( hostNameSourceArg.getValue(), portSourceArg.getValue()); addMessage(buf, message); } } @@ -2250,10 +2041,7 @@ secureArgsList.bindPasswordFileArg.isPresent(); return secureArgsPresent || adminArgsPresent; } else { return true; } return true; } /** opendj3-server-dev/src/server/org/opends/server/tools/makeldif/MakeLDIF.java
@@ -22,7 +22,7 @@ * * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions Copyright 2013-2014 ForgeRock AS * Portions Copyright 2013-2015 ForgeRock AS */ package org.opends.server.tools.makeldif; @@ -35,6 +35,7 @@ import org.forgerock.i18n.LocalizableMessage; import org.opends.server.core.DirectoryServer; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.types.AttributeType; import org.opends.server.types.ExistingFileBehavior; import org.opends.server.types.InitializationException; @@ -134,6 +135,8 @@ LocalizableMessage toolDescription = INFO_MAKELDIF_TOOL_DESCRIPTION.get(); ArgumentParser argParser = new ArgumentParser(CLASS_NAME, toolDescription, false); argParser.setVersionHandler(new DirectoryServerVersionHandler()); BooleanArgument showUsage; IntegerArgument randomSeed; StringArgument configClass; opendj3-server-dev/src/server/org/opends/server/tools/status/StatusCliArgumentParser.java
@@ -22,9 +22,8 @@ * * * Copyright 2008-2009 Sun Microsystems, Inc. * Portions Copyright 2012-2014 ForgeRock AS * Portions Copyright 2012-2015 ForgeRock AS */ package org.opends.server.tools.status; import static org.opends.messages.AdminToolMessages.*; @@ -35,6 +34,7 @@ import org.opends.server.admin.client.cli.SecureConnectionCliArgs; import org.opends.server.admin.client.cli.SecureConnectionCliParser; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import com.forgerock.opendj.cli.Argument; import com.forgerock.opendj.cli.ArgumentException; @@ -46,23 +46,16 @@ /** * The class that is used to parse the arguments provided in the status command * line. * */ public class StatusCliArgumentParser extends SecureConnectionCliParser { private BooleanArgument noPromptArg; // This CLI is always using the administration connector with SSL /** This CLI is always using the administration connector with SSL. */ private static final boolean alwaysSSL = true; /** * The 'refresh' argument. */ /** The 'refresh' argument. */ private IntegerArgument refreshArg; /** * The 'scriptFriendly' argument. */ /** The 'scriptFriendly' argument. */ private BooleanArgument scriptFriendlyArg; /** @@ -76,6 +69,7 @@ public StatusCliArgumentParser(String mainClassName) { super(mainClassName, INFO_STATUS_CLI_USAGE_DESCRIPTION.get(), false); setVersionHandler(new DirectoryServerVersionHandler()); } /** @@ -133,6 +127,7 @@ { return secureArgsList; } /** * Tells whether the user specified to have an interactive status CLI or not. * This method must be called after calling parseArguments. @@ -176,10 +171,7 @@ "should be called after parsing the attributes: "+ae, ae); } } else { return -1; } return -1; } /** @@ -189,12 +181,11 @@ */ public String getExplicitBindDn() { String dn = null; if (secureArgsList.bindDnArg.isPresent()) { dn = secureArgsList.bindDnArg.getValue(); return secureArgsList.bindDnArg.getValue(); } return dn; return null; } /** opendj3-server-dev/src/server/org/opends/server/tools/upgrade/UpgradeCli.java
@@ -21,17 +21,17 @@ * CDDL HEADER END * * * Portions Copyright 2013-2014 ForgeRock AS * Portions Copyright 2013-2015 ForgeRock AS */ package org.opends.server.tools.upgrade; import static org.opends.messages.ToolMessages.*; import static com.forgerock.opendj.cli.Utils.filterExitCode; import static org.opends.server.tools.upgrade.FormattedNotificationCallback.*; import static org.opends.server.tools.upgrade.Upgrade.EXIT_CODE_ERROR; import static org.opends.server.tools.upgrade.Upgrade.EXIT_CODE_SUCCESS; import static com.forgerock.opendj.cli.ArgumentConstants.*; import static com.forgerock.opendj.cli.Utils.wrapText; import static com.forgerock.opendj.cli.Utils.*; import static javax.security.auth.callback.TextOutputCallback.*; import static org.opends.messages.ToolMessages.*; import static org.opends.server.tools.upgrade.FormattedNotificationCallback.*; import static org.opends.server.tools.upgrade.Upgrade.*; import java.io.IOException; import java.io.InputStream; @@ -40,26 +40,26 @@ import java.util.ArrayList; import java.util.List; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.slf4j.LocalizedLogger; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.ConfirmationCallback; import javax.security.auth.callback.TextOutputCallback; import javax.security.auth.callback.UnsupportedCallbackException; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.extensions.ConfigFileHandler; import org.opends.server.util.ServerConstants; import org.opends.server.util.StaticUtils; import com.forgerock.opendj.cli.ArgumentException; import com.forgerock.opendj.cli.BooleanArgument; import com.forgerock.opendj.cli.ClientException; import com.forgerock.opendj.cli.CommonArguments; import com.forgerock.opendj.cli.ConsoleApplication; import com.forgerock.opendj.cli.StringArgument; import com.forgerock.opendj.cli.SubCommandArgumentParser; import com.forgerock.opendj.cli.ClientException; import com.forgerock.opendj.cli.ConsoleApplication; /** * This class provides the CLI used for upgrading the OpenDJ product. @@ -67,21 +67,18 @@ public final class UpgradeCli extends ConsoleApplication implements CallbackHandler { /** * Upgrade's logger. */ /** Upgrade's logger. */ private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass(); // The command-line argument parser. /** The command-line argument parser. */ private final SubCommandArgumentParser parser; // The argument which should be used to specify the config class. /** The argument which should be used to specify the config class. */ private StringArgument configClass; // The argument which should be used to specify the config file. /** The argument which should be used to specify the config file. */ private StringArgument configFile; //The argument which should be used to specify non interactive mode. /** The argument which should be used to specify non interactive mode. */ private BooleanArgument noPrompt; private BooleanArgument ignoreErrors; private BooleanArgument force; @@ -90,20 +87,22 @@ private BooleanArgument acceptLicense; // The argument which should be used to request usage information. /** The argument which should be used to request usage information. */ private BooleanArgument showUsageArgument; // Flag indicating whether or not the global arguments have // already been initialized. private boolean globalArgumentsInitialized = false; /** * Flag indicating whether or not the global arguments have * already been initialized. */ private boolean globalArgumentsInitialized; private UpgradeCli(InputStream in, OutputStream out, OutputStream err) { super(new PrintStream(out), new PrintStream(err)); this.parser = new SubCommandArgumentParser(this.getClass().getName(), new SubCommandArgumentParser(getClass().getName(), INFO_UPGRADE_DESCRIPTION_CLI.get(), false); this.parser.setVersionHandler(new DirectoryServerVersionHandler()); } /** @@ -219,7 +218,7 @@ return acceptLicense.isPresent(); } // Displays the provided message followed by a help usage reference. /** Displays the provided message followed by a help usage reference. */ private void displayMessageAndUsageReference(final LocalizableMessage message) { println(message); @@ -227,20 +226,15 @@ println(parser.getHelpUsageReference()); } // Initialize arguments provided by the command line. /** Initialize arguments provided by the command line. */ private void initializeGlobalArguments() throws ArgumentException { if (!globalArgumentsInitialized) { configClass = CommonArguments.getConfigClass(ConfigFileHandler.class.getName()); configClass = CommonArguments.getConfigClass(ConfigFileHandler.class.getName()); configFile = CommonArguments.getConfigFile(); noPrompt = CommonArguments.getNoPrompt(); verbose = CommonArguments.getVerbose(); quietMode = CommonArguments.getQuiet(); ignoreErrors = @@ -253,13 +247,12 @@ INFO_UPGRADE_OPTION_FORCE.get(OPTION_LONG_NO_PROMPT)); acceptLicense = CommonArguments.getAcceptLicense(); showUsageArgument = CommonArguments.getShowUsage(); // Register the global arguments. parser.addGlobalArgument(showUsageArgument); parser.setUsageArgument(showUsageArgument, this.getOutputStream()); parser.setUsageArgument(showUsageArgument, getOutputStream()); parser.addGlobalArgument(configClass); parser.addGlobalArgument(configFile); parser.addGlobalArgument(noPrompt); @@ -283,7 +276,7 @@ catch (ArgumentException e) { final LocalizableMessage message = ERR_CANNOT_INITIALIZE_ARGS.get(e.getMessage()); this.getOutputStream().print(message); getOutputStream().print(message); return EXIT_CODE_ERROR; } @@ -296,7 +289,7 @@ final LocalizableMessage message = ERR_UPGRADE_INCOMPATIBLE_ARGS.get(OPTION_LONG_QUIET, "interactive mode"); this.getOutputStream().println(message); getOutputStream().println(message); return EXIT_CODE_ERROR; } if (isInteractive() && isForceUpgrade()) @@ -304,7 +297,7 @@ final LocalizableMessage message = ERR_UPGRADE_INCOMPATIBLE_ARGS.get(OPTION_LONG_FORCE_UPGRADE, "interactive mode"); this.getOutputStream().println(message); getOutputStream().println(message); return EXIT_CODE_ERROR; } if (isQuiet() && isVerbose()) @@ -312,7 +305,7 @@ final LocalizableMessage message = ERR_UPGRADE_INCOMPATIBLE_ARGS.get(OPTION_LONG_QUIET, OPTION_LONG_VERBOSE); this.getOutputStream().println(message); getOutputStream().println(message); return EXIT_CODE_ERROR; } } opendj3-server-dev/src/server/org/opends/server/util/Base64.java
@@ -22,11 +22,14 @@ * * * Copyright 2006-2009 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS * Portions Copyright 2014-2015 ForgeRock AS */ package org.opends.server.util; import static org.forgerock.util.Reject.*; import static org.opends.messages.ToolMessages.*; import static org.opends.messages.UtilityMessages.*; import static org.opends.server.util.StaticUtils.*; import java.io.BufferedReader; import java.io.BufferedWriter; @@ -45,9 +48,9 @@ import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.LocalizableMessageBuilder; import org.opends.server.core.DirectoryServer; import org.opends.server.types.NullOutputStream; import org.forgerock.opendj.ldap.ByteSequence; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.types.NullOutputStream; import com.forgerock.opendj.cli.ArgumentException; import com.forgerock.opendj.cli.BooleanArgument; @@ -56,13 +59,6 @@ import com.forgerock.opendj.cli.SubCommand; import com.forgerock.opendj.cli.SubCommandArgumentParser; import static org.opends.messages.UtilityMessages.*; import static org.opends.messages.ToolMessages.*; import static org.opends.server.util.StaticUtils.*; import static org.forgerock.util.Reject.*; /** * This class provides methods for performing base64 encoding and decoding. * Base64 is a mechanism for encoding binary data in ASCII form by converting @@ -76,16 +72,11 @@ mayInvoke=true) public final class Base64 { /** * The set of characters that may be used in base64-encoded values. */ /** The set of characters that may be used in base64-encoded values. */ private static final char[] BASE64_ALPHABET = ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + "0123456789+/").toCharArray(); "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray(); /** * Prevent instance creation. */ /** Prevent instance creation. */ private Base64() { // No implementation required. } @@ -476,6 +467,7 @@ SubCommandArgumentParser argParser = new SubCommandArgumentParser(Base64.class.getName(), description, false); argParser.setVersionHandler(new DirectoryServerVersionHandler()); BooleanArgument showUsage = null; StringArgument encodedData = null; @@ -583,19 +575,8 @@ if (argParser.isVersionArgumentPresent()) { // We have to print the version since we have set a NullOutputStream on // the parser try { DirectoryServer.printVersion(System.out); System.exit(0); } catch (Throwable t) { // Bug System.err.println(ERR_UNEXPECTED.get(t)); System.exit(1); } // version has already been printed System.exit(0); } if (subCommand == null) @@ -785,4 +766,3 @@ } } } opendj3-server-dev/src/server/org/opends/server/util/args/LDAPConnectionArgumentParser.java
@@ -22,11 +22,14 @@ * * * Copyright 2008-2010 Sun Microsystems, Inc. * Portions Copyright 2011-2014 ForgeRock AS * Portions Copyright 2011-2015 ForgeRock AS */ package org.opends.server.util.args; import static com.forgerock.opendj.cli.Utils.*; import static org.opends.messages.ToolMessages.*; import java.io.PrintStream; import java.util.LinkedHashSet; import java.util.LinkedList; @@ -36,28 +39,24 @@ import org.forgerock.i18n.LocalizableMessage; import org.opends.server.admin.client.cli.SecureConnectionCliArgs; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.tools.LDAPConnection; import org.opends.server.tools.LDAPConnectionOptions; import org.opends.server.tools.SSLConnectionFactory; import org.opends.server.tools.SSLConnectionException; import org.opends.server.tools.LDAPConnectionException; import org.opends.server.tools.LDAPConnectionOptions; import org.opends.server.tools.SSLConnectionException; import org.opends.server.tools.SSLConnectionFactory; import org.opends.server.types.OpenDsException; import org.opends.server.util.cli.LDAPConnectionConsoleInteraction; import com.forgerock.opendj.cli.Argument; import com.forgerock.opendj.cli.ArgumentException; import com.forgerock.opendj.cli.ArgumentParser; import com.forgerock.opendj.cli.ArgumentGroup; import com.forgerock.opendj.cli.ArgumentParser; import com.forgerock.opendj.cli.ClientException; import com.forgerock.opendj.cli.ConsoleApplication; import com.forgerock.opendj.cli.FileBasedArgument; import com.forgerock.opendj.cli.StringArgument; import static org.opends.messages.ToolMessages.*; import static org.opends.server.util.ServerConstants.*; import static com.forgerock.opendj.cli.Utils.wrapText; /** * Creates an argument parser pre-populated with arguments for specifying * information for opening and LDAPConnection an LDAP connection. @@ -92,6 +91,7 @@ boolean alwaysSSL) { super(mainClassName, toolDescription, longArgumentsCaseSensitive); addLdapConnectionArguments(argumentGroup, alwaysSSL); setVersionHandler(new DirectoryServerVersionHandler()); } /**