From c89f3bf8b7afbdc7cd45a1c8dc6c1d132931dacd Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Tue, 13 Nov 2007 17:06:35 +0000
Subject: [PATCH] Fix for issue 2582.
---
opends/src/server/org/opends/server/tools/InstallDS.java | 1
opends/src/server/org/opends/server/tools/InstallDSArgumentParser.java | 105 ++++++++++----
opends/src/guitools/org/opends/guitools/uninstaller/UninstallerArgumentParser.java | 20 ++
opends/src/server/org/opends/server/util/args/ArgumentParser.java | 33 ++++
opends/src/guitools/org/opends/guitools/uninstaller/UninstallLauncher.java | 89 ++++++++++++
opends/src/messages/messages/tools.properties | 3
opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java | 43 ++++++
opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliArgumentParser.java | 12 +
opends/src/quicksetup/org/opends/quicksetup/installer/SetupLauncher.java | 73 ++++++----
opends/src/messages/messages/admin_tool.properties | 4
opends/src/quicksetup/org/opends/quicksetup/QuickSetupLog.java | 2
11 files changed, 318 insertions(+), 67 deletions(-)
diff --git a/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliArgumentParser.java b/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliArgumentParser.java
index e35937b..67382d1 100644
--- a/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliArgumentParser.java
+++ b/opends/src/guitools/org/opends/guitools/replicationcli/ReplicationCliArgumentParser.java
@@ -439,11 +439,18 @@
INFO_DESCRIPTION_NO_PROMPT.get());
defaultArgs.add(index++, noPromptArg);
+ for (int i=0; i<index; i++)
+ {
+ Argument arg = defaultArgs.get(i);
+ arg.setPropertyName(arg.getLongIdentifier());
+ }
+
quietArg = new BooleanArgument(
OPTION_LONG_QUIET,
OPTION_SHORT_QUIET,
OPTION_LONG_QUIET,
INFO_REPLICATION_DESCRIPTION_QUIET.get());
+ quietArg.setPropertyName(OPTION_LONG_QUIET);
defaultArgs.add(quietArg);
StringArgument propertiesFileArgument = new StringArgument(
@@ -575,6 +582,7 @@
};
for (int i=0; i<argsToAdd.length; i++)
{
+ argsToAdd[i].setPropertyName(argsToAdd[i].getLongIdentifier());
enableReplicationSubCmd.addArgument(argsToAdd[i]);
}
}
@@ -594,7 +602,7 @@
secureArgsList.hostNameArg.setDefaultValue(getDefaultHostValue());
secureArgsList.bindDnArg = new StringArgument("bindDN", OPTION_SHORT_BINDDN,
OPTION_LONG_BINDDN, false, false, true, OPTION_VALUE_BINDDN,
- "cn=Directory Manager", null,
+ "cn=Directory Manager", OPTION_LONG_BINDDN,
INFO_DESCRIPTION_DISABLE_REPLICATION_BINDDN.get());
Argument[] argsToAdd = { secureArgsList.hostNameArg,
secureArgsList.portArg, secureArgsList.useSSLArg,
@@ -658,6 +666,7 @@
};
for (int i=0; i<argsToAdd.length; i++)
{
+ argsToAdd[i].setPropertyName(argsToAdd[i].getLongIdentifier());
initializeReplicationSubCmd.addArgument(argsToAdd[i]);
}
}
@@ -701,6 +710,7 @@
's',
"script-friendly",
INFO_DESCRIPTION_SCRIPT_FRIENDLY.get());
+ scriptFriendlyArg.setPropertyName(scriptFriendlyArg.getLongIdentifier());
secureArgsList.hostNameArg.setDefaultValue(getDefaultHostValue());
Argument[] argsToAdd = { secureArgsList.hostNameArg,
secureArgsList.portArg, secureArgsList.useSSLArg,
diff --git a/opends/src/guitools/org/opends/guitools/uninstaller/UninstallLauncher.java b/opends/src/guitools/org/opends/guitools/uninstaller/UninstallLauncher.java
index f9e676c..bff9bca 100644
--- a/opends/src/guitools/org/opends/guitools/uninstaller/UninstallLauncher.java
+++ b/opends/src/guitools/org/opends/guitools/uninstaller/UninstallLauncher.java
@@ -28,6 +28,8 @@
package org.opends.guitools.uninstaller;
import static org.opends.messages.AdminToolMessages.*;
+import static org.opends.messages.ToolMessages.ERR_ERROR_PARSING_ARGS;
+
import org.opends.messages.Message;
import org.opends.messages.ToolMessages;
@@ -37,6 +39,7 @@
import org.opends.quicksetup.Launcher;
import org.opends.quicksetup.Installation;
import org.opends.quicksetup.QuickSetupLog;
+import org.opends.quicksetup.ReturnCode;
import org.opends.quicksetup.util.Utils;
import org.opends.server.util.ServerConstants;
import org.opends.server.util.args.ArgumentException;
@@ -101,6 +104,38 @@
}
/**
+ * {@inheritDoc}
+ */
+ public void launch() {
+ // Validate user provided data
+ try
+ {
+ argParser.parseArguments(args);
+ if (argParser.isVersionArgumentPresent())
+ {
+ System.exit(ReturnCode.PRINT_VERSION.getReturnCode());
+ }
+ else if (argParser.isUsageArgumentPresent())
+ {
+ System.exit(ReturnCode.SUCCESSFUL.getReturnCode());
+ }
+ else
+ {
+ super.launch();
+ }
+ }
+ catch (ArgumentException ae)
+ {
+ Message message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
+ System.err.println(message);
+ System.err.println();
+ System.err.println(argParser.getUsage());
+
+ System.exit(ReturnCode.USER_DATA_ERROR.getReturnCode());
+ }
+ }
+
+ /**
* Initialize the contents of the argument parser.
*/
protected void initializeParser()
@@ -165,4 +200,58 @@
return INFO_FRAME_UNINSTALL_TITLE.get();
}
+ /**
+ * Indicates whether or not the launcher should print a usage
+ * statement based on the content of the arguments passed into
+ * the constructor.
+ * @return boolean where true indicates usage should be printed
+ */
+ protected boolean shouldPrintUsage() {
+ return argParser.isUsageArgumentPresent() &&
+ !argParser.usageOrVersionDisplayed();
+ }
+
+ /**
+ * Indicates whether or not the launcher should print a usage
+ * statement based on the content of the arguments passed into
+ * the constructor.
+ * @return boolean where true indicates usage should be printed
+ */
+ protected boolean isQuiet() {
+ return argParser.isQuiet();
+ }
+
+ /**
+ * Indicates whether or not the launcher should print a usage
+ * statement based on the content of the arguments passed into
+ * the constructor.
+ * @return boolean where true indicates usage should be printed
+ */
+ protected boolean isNoPrompt() {
+ return !argParser.isInteractive();
+ }
+
+ /**
+ * Indicates whether or not the launcher should print a version
+ * statement based on the content of the arguments passed into
+ * the constructor.
+ * @return boolean where true indicates version should be printed
+ */
+ protected boolean shouldPrintVersion() {
+ return argParser.isVersionArgumentPresent() &&
+ !argParser.usageOrVersionDisplayed();
+ }
+
+ /**
+ * Indicates whether the launcher will launch a command line versus
+ * a graphical application based on the contents of the arguments
+ * passed into the constructor.
+ *
+ * @return boolean where true indicates that a CLI application
+ * should be launched
+ */
+ protected boolean isCli() {
+ return argParser.isCli();
+ }
+
}
diff --git a/opends/src/guitools/org/opends/guitools/uninstaller/UninstallerArgumentParser.java b/opends/src/guitools/org/opends/guitools/uninstaller/UninstallerArgumentParser.java
index 48daa75..16939ed 100644
--- a/opends/src/guitools/org/opends/guitools/uninstaller/UninstallerArgumentParser.java
+++ b/opends/src/guitools/org/opends/guitools/uninstaller/UninstallerArgumentParser.java
@@ -175,6 +175,11 @@
INFO_UNINSTALLDS_DESCRIPTION_QUIET.get());
args.add(quietArg);
+ for (Argument arg : args)
+ {
+ arg.setPropertyName(arg.getLongIdentifier());
+ }
+
ArrayList<Argument> defaultArgs =
new ArrayList<Argument>(createGlobalArguments(outStream));
int index = defaultArgs.indexOf(secureArgsList.bindDnArg);
@@ -191,14 +196,13 @@
defaultArgs.remove(secureArgsList.hostNameArg);
defaultArgs.remove(secureArgsList.portArg);
defaultArgs.remove(verboseArg);
- defaultArgs.remove(noPropertiesFileArg);
- defaultArgs.remove(propertiesFileArg);
UserData uData = new UserData();
referencedHostNameArg = new StringArgument("referencedHostName",
ToolConstants.OPTION_SHORT_HOST,
OPTION_LONG_REFERENCED_HOST_NAME, false, false, true,
ToolConstants.OPTION_VALUE_HOST,
- uData.getHostName(), null, INFO_DESCRIPTION_REFERENCED_HOST.get());
+ uData.getHostName(), OPTION_LONG_REFERENCED_HOST_NAME,
+ INFO_DESCRIPTION_REFERENCED_HOST.get());
defaultArgs.add(referencedHostNameArg);
args.addAll(defaultArgs);
@@ -407,6 +411,16 @@
}
/**
+ * Returns whether the command was launched in CLI mode or not.
+ * @return <CODE>true</CODE> if the command was launched to use CLI mode and
+ * <CODE>false</CODE> otherwise.
+ */
+ public boolean isCli()
+ {
+ return cliArg.isPresent();
+ }
+
+ /**
* Returns the SecureConnectionCliArgs object containing the arguments
* of this parser.
* @return the SecureConnectionCliArgs object containing the arguments
diff --git a/opends/src/messages/messages/admin_tool.properties b/opends/src/messages/messages/admin_tool.properties
index 0832225..d79403a 100644
--- a/opends/src/messages/messages/admin_tool.properties
+++ b/opends/src/messages/messages/admin_tool.properties
@@ -363,8 +363,8 @@
install. If not specified the graphical interface will be launched. The \
rest of the options (excluding help and version) will only be taken into \
account if this option is specified
-INFO_UNINSTALLDS_DESCRIPTION_QUIET=Perform a quiet uninstall (no \
- progress information is written to the standard output)
+INFO_UNINSTALLDS_DESCRIPTION_QUIET=Run uninstall in quiet mode. Quiet mode \
+ will not output progress information to standard output
INFO_UNINSTALLDS_DESCRIPTION_REMOVE_ALL=Remove all components of \
OpenDS (this option is not compatible with the rest of remove options)
INFO_UNINSTALLDS_DESCRIPTION_REMOVE_SERVER_LIBRARIES=Remove Server Libraries \
diff --git a/opends/src/messages/messages/tools.properties b/opends/src/messages/messages/tools.properties
index 8dc2f1f..0961b36 100644
--- a/opends/src/messages/messages/tools.properties
+++ b/opends/src/messages/messages/tools.properties
@@ -854,7 +854,8 @@
started properly
INFO_INSTALLDS_DESCRIPTION_PROGNAME_486=The setup command used to invoke this \
program
-INFO_INSTALLDS_DESCRIPTION_SILENT_489=Perform a quiet installation
+INFO_INSTALLDS_DESCRIPTION_SILENT_489=Run setup in quiet mode. Quiet mode \
+ will not output progress information to standard output
INFO_INSTALLDS_DESCRIPTION_BASEDN_490=Specifies the base DN for user \
information in the Directory Server. Multiple base DNs may be provided by \
using this option multiple times
diff --git a/opends/src/quicksetup/org/opends/quicksetup/QuickSetupLog.java b/opends/src/quicksetup/org/opends/quicksetup/QuickSetupLog.java
index 6a0211e..ad4b160 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/QuickSetupLog.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/QuickSetupLog.java
@@ -93,6 +93,8 @@
logger.setUseParentHandlers(false);
logger = Logger.getLogger("org.opends.admin.ads");
logger.setUseParentHandlers(false);
+ logger = Logger.getLogger("org.opends.server.tools");
+ logger.setUseParentHandlers(false);
}
/**
diff --git a/opends/src/quicksetup/org/opends/quicksetup/installer/SetupLauncher.java b/opends/src/quicksetup/org/opends/quicksetup/installer/SetupLauncher.java
index 5dff196..a491ba3 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/installer/SetupLauncher.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/installer/SetupLauncher.java
@@ -76,6 +76,7 @@
QuickSetupLog.initLogFileHandler(
File.createTempFile(LOG_FILE_PREFIX, LOG_FILE_SUFFIX),
"org.opends.quicksetup.installer");
+ QuickSetupLog.disableConsoleLogging();
} catch (Throwable t) {
System.err.println("Unable to initialize log");
@@ -124,40 +125,49 @@
* {@inheritDoc}
*/
public void launch() {
- if (shouldPrintVersion())
+ // Validate user provided data
+ try
{
- if (!argParser.usageOrVersionDisplayed())
+ argParser.parseArguments(args);
+
+ if (argParser.isVersionArgumentPresent())
{
- printVersion();
+ System.exit(ReturnCode.PRINT_VERSION.getReturnCode());
}
- System.exit(ReturnCode.PRINT_VERSION.getReturnCode());
- }
- else if (shouldPrintUsage()) {
- if (!argParser.usageOrVersionDisplayed())
+ else if (argParser.isUsageArgumentPresent())
{
- printUsage(false);
+ System.exit(ReturnCode.SUCCESSFUL.getReturnCode());
}
- System.exit(ReturnCode.SUCCESSFUL.getReturnCode());
- }
- else if (isCli())
- {
- System.exit(InstallDS.mainCLI(args));
- }
- else {
- willLaunchGui();
- int exitCode = launchGui(args);
- if (exitCode != 0) {
- File logFile = QuickSetupLog.getLogFile();
- if (logFile != null)
- {
- guiLaunchFailed(logFile.toString());
- }
- else
- {
- guiLaunchFailed(null);
- }
+ else if (isCli())
+ {
System.exit(InstallDS.mainCLI(args));
}
+ else
+ {
+ willLaunchGui();
+ int exitCode = launchGui(args);
+ if (exitCode != 0) {
+ File logFile = QuickSetupLog.getLogFile();
+ if (logFile != null)
+ {
+ guiLaunchFailed(logFile.toString());
+ }
+ else
+ {
+ guiLaunchFailed(null);
+ }
+ System.exit(InstallDS.mainCLI(args));
+ }
+ }
+ }
+ catch (ArgumentException ae)
+ {
+ Message message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
+ System.err.println(message);
+ System.err.println();
+ System.err.println(argParser.getUsage());
+
+ System.exit(ReturnCode.USER_DATA_ERROR.getReturnCode());
}
}
@@ -205,4 +215,11 @@
protected CliApplication createCliApplication() {
return null;
}
-}
\ No newline at end of file
+
+ /**
+ * {@inheritDoc}
+ */
+ protected boolean isCli() {
+ return argParser.isCli();
+ }
+}
diff --git a/opends/src/server/org/opends/server/tools/InstallDS.java b/opends/src/server/org/opends/server/tools/InstallDS.java
index a5a8813..2c5c2e1 100644
--- a/opends/src/server/org/opends/server/tools/InstallDS.java
+++ b/opends/src/server/org/opends/server/tools/InstallDS.java
@@ -30,7 +30,6 @@
import static org.opends.messages.AdminToolMessages.*;
import static org.opends.messages.QuickSetupMessages.*;
import static org.opends.messages.ToolMessages.*;
-import static org.opends.messages.UtilityMessages.*;
import java.io.File;
import java.io.InputStream;
diff --git a/opends/src/server/org/opends/server/tools/InstallDSArgumentParser.java b/opends/src/server/org/opends/server/tools/InstallDSArgumentParser.java
index fc2e68d..c020ca6 100644
--- a/opends/src/server/org/opends/server/tools/InstallDSArgumentParser.java
+++ b/opends/src/server/org/opends/server/tools/InstallDSArgumentParser.java
@@ -66,6 +66,8 @@
BooleanArgument showUsageArg;
BooleanArgument quietArg;
BooleanArgument noPromptArg;
+ StringArgument propertiesFileArgument;
+ BooleanArgument noPropertiesFileArgument;
BooleanArgument skipPortCheckArg;
BooleanArgument enableWindowsServiceArg;
BooleanArgument doNotStartArg;
@@ -116,6 +118,7 @@
"test", 't', "testOnly",
INFO_INSTALLDS_DESCRIPTION_TESTONLY.get());
testOnlyArg.setHidden(true);
+ testOnlyArg.setPropertyName("testOnly");
addArgument(testOnlyArg);
cliArg = new BooleanArgument(
@@ -123,11 +126,12 @@
OPTION_SHORT_CLI,
OPTION_LONG_CLI,
INFO_INSTALLDS_DESCRIPTION_CLI.get());
+ cliArg.setPropertyName(OPTION_LONG_CLI);
addArgument(cliArg);
configFileArg = new StringArgument(
"configfile", 'c', "configFile", false,
- false, true, "{configFile}", getDefaultConfigFile(), null,
+ false, true, "{configFile}", getDefaultConfigFile(), "configFile",
INFO_DESCRIPTION_CONFIG_FILE.get());
configFileArg.setHidden(true);
addArgument(configFileArg);
@@ -136,7 +140,7 @@
"configclass", OPTION_SHORT_CONFIG_CLASS,
OPTION_LONG_CONFIG_CLASS, false,
false, true, OPTION_VALUE_CONFIG_CLASS,
- ConfigFileHandler.class.getName(), null,
+ ConfigFileHandler.class.getName(), OPTION_LONG_CONFIG_CLASS,
INFO_DESCRIPTION_CONFIG_CLASS.get());
configClassArg.setHidden(true);
addArgument(configClassArg);
@@ -153,7 +157,7 @@
progNameArg = new StringArgument(
"progname", 'P', "programName", false,
false, true, "{programName}", defaultProgName,
- null, INFO_INSTALLDS_DESCRIPTION_PROGNAME.get());
+ "programName", INFO_INSTALLDS_DESCRIPTION_PROGNAME.get());
progNameArg.setHidden(true);
addArgument(progNameArg);
@@ -161,6 +165,7 @@
"quiet", OPTION_SHORT_QUIET,
OPTION_LONG_QUIET,
INFO_INSTALLDS_DESCRIPTION_SILENT.get());
+ quietArg.setPropertyName(OPTION_LONG_QUIET);
addArgument(quietArg);
noPromptArg = new BooleanArgument(
@@ -168,44 +173,59 @@
OPTION_SHORT_NO_PROMPT,
OPTION_LONG_NO_PROMPT,
INFO_INSTALLDS_DESCRIPTION_NO_PROMPT.get());
+ noPromptArg.setPropertyName(OPTION_LONG_NO_PROMPT);
addArgument(noPromptArg);
+ propertiesFileArgument = new StringArgument(
+ "propertiesFilePath", null, OPTION_LONG_PROP_FILE_PATH, false, false,
+ true, OPTION_VALUE_PROP_FILE_PATH, null, null,
+ INFO_DESCRIPTION_PROP_FILE_PATH.get());
+ addArgument(propertiesFileArgument);
+ setFilePropertiesArgument(propertiesFileArgument);
+
+ noPropertiesFileArgument = new BooleanArgument(
+ "noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
+ INFO_DESCRIPTION_NO_PROP_FILE.get());
+ addArgument(noPropertiesFileArgument);
+ setNoPropertiesFileArgument(noPropertiesFileArgument);
+
baseDNArg = new StringArgument(
"basedn", OPTION_SHORT_BASEDN,
OPTION_LONG_BASEDN, false, true, true,
OPTION_VALUE_BASEDN,
- "dc=example,dc=com", null,
+ "dc=example,dc=com", OPTION_LONG_BASEDN,
INFO_INSTALLDS_DESCRIPTION_BASEDN.get());
addArgument(baseDNArg);
addBaseEntryArg = new BooleanArgument(
"addbase", 'a', "addBaseEntry",
INFO_INSTALLDS_DESCRIPTION_ADDBASE.get());
+ addBaseEntryArg.setPropertyName("addBaseEntry");
addArgument(addBaseEntryArg);
importLDIFArg = new StringArgument(
"importldif", OPTION_SHORT_LDIF_FILE,
OPTION_LONG_LDIF_FILE, false,
true, true, OPTION_VALUE_LDIF_FILE,
- null, null,
+ null, OPTION_LONG_LDIF_FILE,
INFO_INSTALLDS_DESCRIPTION_IMPORTLDIF.get());
addArgument(importLDIFArg);
rejectedImportFileArg = new StringArgument(
"rejectfile", 'R', "rejectFile", false, false,
- true, "{rejectFile}", null, null,
+ true, "{rejectFile}", null, "rejectFile",
INFO_INSTALLDS_DESCRIPTION_REJECTED_FILE.get());
addArgument(rejectedImportFileArg);
skippedImportFileArg = new StringArgument(
"skipFile", null, "skipFile", false, false,
- true, "{skipFile}", null, null,
+ true, "{skipFile}", null, "skipFile",
INFO_INSTALLDS_DESCRIPTION_SKIPPED_FILE.get());
addArgument(skippedImportFileArg);
sampleDataArg = new IntegerArgument(
"sampledata", 'd', "sampleData", false,
- false, true, "{numEntries}", 0, null,
+ false, true, "{numEntries}", 0, "sampleData",
true, 0, false, 0,
INFO_INSTALLDS_DESCRIPTION_SAMPLE_DATA.get());
addArgument(sampleDataArg);
@@ -219,14 +239,14 @@
"ldapport", OPTION_SHORT_PORT,
"ldapPort", false, false,
true, OPTION_VALUE_PORT, defaultPort,
- null, true, 1, true, 65535,
+ "ldapPort", true, 1, true, 65535,
INFO_INSTALLDS_DESCRIPTION_LDAPPORT.get());
addArgument(ldapPortArg);
jmxPortArg = new IntegerArgument(
"jmxport", 'x', "jmxPort", false, false,
true, "{jmxPort}",
- SetupUtils.getDefaultJMXPort(), null, true,
+ SetupUtils.getDefaultJMXPort(), "jmxPort", true,
1, true, 65535,
INFO_INSTALLDS_DESCRIPTION_JMXPORT.get());
addArgument(jmxPortArg);
@@ -234,6 +254,7 @@
skipPortCheckArg = new BooleanArgument(
"skipportcheck", 'S', "skipPortCheck",
INFO_INSTALLDS_DESCRIPTION_SKIPPORT.get());
+ skipPortCheckArg.setPropertyName("skipPortCheck");
addArgument(skipPortCheckArg);
directoryManagerDNArg = new StringArgument(
@@ -241,7 +262,7 @@
OPTION_LONG_ROOT_USER_DN, false, false,
true, OPTION_VALUE_ROOT_USER_DN,
"cn=Directory Manager",
- null, INFO_INSTALLDS_DESCRIPTION_ROOTDN.get());
+ OPTION_LONG_ROOT_USER_DN, INFO_INSTALLDS_DESCRIPTION_ROOTDN.get());
addArgument(directoryManagerDNArg);
directoryManagerPwdStringArg = new StringArgument(
@@ -249,7 +270,7 @@
"rootUserPassword",
false, false, true,
"{password}", null,
- null,
+ "rootUserPassword",
INFO_INSTALLDS_DESCRIPTION_ROOTPW.get());
addArgument(directoryManagerPwdStringArg);
@@ -258,26 +279,30 @@
OPTION_SHORT_BINDPWD_FILE,
"rootUserPasswordFile", false, false,
OPTION_VALUE_BINDPWD_FILE,
- null, null, INFO_INSTALLDS_DESCRIPTION_ROOTPWFILE.get());
+ null, "rootUserPasswordFile",
+ INFO_INSTALLDS_DESCRIPTION_ROOTPWFILE.get());
addArgument(directoryManagerPwdFileArg);
enableWindowsServiceArg = new BooleanArgument(
"enablewindowsservice", 'e',
"enableWindowsService",
INFO_INSTALLDS_DESCRIPTION_ENABLE_WINDOWS_SERVICE.get());
+ enableWindowsServiceArg.setPropertyName("enableWindowsService");
if (SetupUtils.isWindows())
{
addArgument(enableWindowsServiceArg);
}
doNotStartArg = new BooleanArgument(
- "donotstart", 'O', "donotstart",
+ "donotstart", 'O', "doNotStart",
INFO_INSTALLDS_DESCRIPTION_DO_NOT_START.get());
+ doNotStartArg.setPropertyName("doNotStart");
addArgument(doNotStartArg);
enableStartTLSArg = new BooleanArgument(
"enableStartTLS", OPTION_SHORT_START_TLS, "enableStartTLS",
INFO_INSTALLDS_DESCRIPTION_ENABLE_STARTTLS.get());
+ enableStartTLSArg.setPropertyName("enableStartTLS");
addArgument(enableStartTLSArg);
int defaultSecurePort = UserData.getDefaultSslPort(defaultPort);
@@ -289,7 +314,7 @@
"ldapsport", OPTION_SHORT_USE_SSL,
"ldapsPort", false, false,
true, OPTION_VALUE_PORT, defaultSecurePort,
- null, true, 1, true, 65535,
+ "ldapsPort", true, 1, true, 65535,
INFO_INSTALLDS_DESCRIPTION_LDAPSPORT.get());
addArgument(ldapsPortArg);
@@ -297,41 +322,46 @@
"generateSelfSignedCertificate",
null, "generateSelfSignedCertificate",
INFO_INSTALLDS_DESCRIPTION_USE_SELF_SIGNED.get());
+ generateSelfSignedCertificateArg.setPropertyName(
+ "generateSelfSignedCertificate");
addArgument(generateSelfSignedCertificateArg);
usePkcs11Arg = new BooleanArgument("usePkcs11Keystore",
null, "usePkcs11Keystore",
INFO_INSTALLDS_DESCRIPTION_USE_PKCS11.get());
+ usePkcs11Arg.setPropertyName("usePkcs11Keystore");
addArgument(usePkcs11Arg);
useJavaKeyStoreArg = new StringArgument("useJavaKeystore",
null, "useJavaKeystore", false, false,
- true, OPTION_VALUE_KEYSTOREPATH, null, null,
+ true, OPTION_VALUE_KEYSTOREPATH, null, "useJavaKeystore",
INFO_INSTALLDS_DESCRIPTION_USE_JAVAKEYSTORE.get());
addArgument(useJavaKeyStoreArg);
usePkcs12Arg = new StringArgument("usePkcs12keyStore",
null, "usePkcs12keyStore", false, false,
- true, OPTION_VALUE_KEYSTOREPATH, null, null,
+ true, OPTION_VALUE_KEYSTOREPATH, null, "usePkcs12keyStore",
INFO_INSTALLDS_DESCRIPTION_USE_PKCS12.get());
addArgument(usePkcs12Arg);
keyStorePasswordArg = new StringArgument("keystorePassword",
OPTION_SHORT_KEYSTORE_PWD,
OPTION_LONG_KEYSTORE_PWD, false, false, true,
- OPTION_VALUE_KEYSTORE_PWD, null, null,
+ OPTION_VALUE_KEYSTORE_PWD, null, OPTION_LONG_KEYSTORE_PWD,
INFO_INSTALLDS_DESCRIPTION_KEYSTOREPASSWORD.get());
addDefaultArgument(keyStorePasswordArg);
keyStorePasswordFileArg = new FileBasedArgument("keystorePasswordFile",
OPTION_SHORT_KEYSTORE_PWD_FILE, OPTION_LONG_KEYSTORE_PWD_FILE, false,
- false, OPTION_VALUE_KEYSTORE_PWD_FILE, null, null,
+ false, OPTION_VALUE_KEYSTORE_PWD_FILE, null,
+ OPTION_LONG_KEYSTORE_PWD_FILE,
INFO_INSTALLDS_DESCRIPTION_KEYSTOREPASSWORD_FILE.get());
addDefaultArgument(keyStorePasswordFileArg);
certNicknameArg = new StringArgument("certnickname",
OPTION_SHORT_CERT_NICKNAME, OPTION_LONG_CERT_NICKNAME,
- false, false, true, OPTION_VALUE_CERT_NICKNAME, null, null,
+ false, false, true, OPTION_VALUE_CERT_NICKNAME, null,
+ OPTION_LONG_CERT_NICKNAME,
INFO_INSTALLDS_DESCRIPTION_CERT_NICKNAME.get());
addDefaultArgument(certNicknameArg);
@@ -343,6 +373,16 @@
}
/**
+ * Returns whether the command was launched in CLI mode or not.
+ * @return <CODE>true</CODE> if the command was launched to use CLI mode and
+ * <CODE>false</CODE> otherwise.
+ */
+ public boolean isCli()
+ {
+ return cliArg.isPresent();
+ }
+
+ /**
* {@inheritDoc}
*/
@Override()
@@ -359,18 +399,21 @@
errorMessages.add(ae.getMessageObject());
}
- checkConfigFileArg(errorMessages);
- checkServerPassword(errorMessages);
- checkProvidedPorts(errorMessages);
- checkImportDataArguments(errorMessages);
- checkSecurityArguments(errorMessages);
-
- if (errorMessages.size() > 0)
+ if (!isUsageArgumentPresent() && !isVersionArgumentPresent())
{
- Message message = ERR_CANNOT_INITIALIZE_ARGS.get(
- Utils.getMessageFromCollection(errorMessages,
- Constants.LINE_SEPARATOR));
- throw new ArgumentException(message);
+ checkConfigFileArg(errorMessages);
+ checkServerPassword(errorMessages);
+ checkProvidedPorts(errorMessages);
+ checkImportDataArguments(errorMessages);
+ checkSecurityArguments(errorMessages);
+
+ if (errorMessages.size() > 0)
+ {
+ Message message = ERR_CANNOT_INITIALIZE_ARGS.get(
+ Utils.getMessageFromCollection(errorMessages,
+ Constants.LINE_SEPARATOR));
+ throw new ArgumentException(message);
+ }
}
}
diff --git a/opends/src/server/org/opends/server/util/args/ArgumentParser.java b/opends/src/server/org/opends/server/util/args/ArgumentParser.java
index e39709a..90654ca 100644
--- a/opends/src/server/org/opends/server/util/args/ArgumentParser.java
+++ b/opends/src/server/org/opends/server/util/args/ArgumentParser.java
@@ -93,6 +93,9 @@
// Indicates whether the usage or version information has been displayed.
private boolean usageOrVersionDisplayed;
+ // Indicates whether the version argument was provided.
+ private boolean versionPresent;
+
// The set of arguments defined for this parser, referenced by short ID.
private HashMap<Character,Argument> shortIDMap;
@@ -198,6 +201,7 @@
longIDMap = new HashMap<String,Argument>();
allowsTrailingArguments = false;
usageOrVersionDisplayed = false;
+ versionPresent = false;
trailingArgsDisplayName = null;
maxTrailingArguments = 0;
minTrailingArguments = 0;
@@ -265,6 +269,7 @@
longIDMap = new HashMap<String,Argument>();
trailingArguments = new ArrayList<String>();
usageOrVersionDisplayed = false;
+ versionPresent = false;
rawArguments = null;
usageArgument = null;
usageOutputStream = System.out;
@@ -881,6 +886,7 @@
// "--version" will always be interpreted as requesting version
// information.
usageOrVersionDisplayed = true;
+ versionPresent = true;
try
{
DirectoryServer.printVersion(usageOutputStream);
@@ -1007,6 +1013,7 @@
// version information except if it's already defined (e.g in
// ldap tools).
usageOrVersionDisplayed = true ;
+ versionPresent = true;
try
{
DirectoryServer.printVersion(usageOutputStream);
@@ -1763,5 +1770,31 @@
return general;
}
+ /**
+ * 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.
+ */
+ public boolean isUsageArgumentPresent()
+ {
+ boolean isUsageArgumentPresent = false;
+ if (usageArgument != null)
+ {
+ isUsageArgumentPresent = usageArgument.isPresent();
+ }
+ return isUsageArgumentPresent;
+ }
+
+ /**
+ * 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.
+ */
+ public boolean isVersionArgumentPresent()
+ {
+ return versionPresent;
+ }
}
diff --git a/opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java b/opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java
index b28c9bc..706896f 100644
--- a/opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java
+++ b/opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java
@@ -118,6 +118,9 @@
// 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;
+
private final static String INDENT = " ";
private final static int MAX_LENGTH = SetupUtils.isWindows() ? 79 : 80;
@@ -810,6 +813,7 @@
// information.
try
{
+ versionPresent = true;
DirectoryServer.printVersion(usageOutputStream);
usageOrVersionDisplayed = true ;
} catch (Exception e) {}
@@ -847,6 +851,7 @@
// information.
try
{
+ versionPresent = true;
DirectoryServer.printVersion(usageOutputStream);
usageOrVersionDisplayed = true ;
} catch (Exception e) {}
@@ -990,6 +995,7 @@
if (dashVAccepted)
{
usageOrVersionDisplayed = true;
+ versionPresent = true;
try
{
DirectoryServer.printVersion(usageOutputStream);
@@ -1057,6 +1063,7 @@
if (dashVAccepted)
{
usageOrVersionDisplayed = true;
+ versionPresent = true;
try
{
DirectoryServer.printVersion(usageOutputStream);
@@ -1947,5 +1954,41 @@
}
}
}
+
+ /**
+ * 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.
+ */
+ public boolean isUsageArgumentPresent()
+ {
+ boolean isUsageArgumentPresent = false;
+ if (usageArgument != null)
+ {
+ isUsageArgumentPresent = usageArgument.isPresent();
+ }
+ return isUsageArgumentPresent;
+ }
+
+ /**
+ * 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.
+ */
+ public boolean isVersionArgumentPresent()
+ {
+ boolean isPresent;
+ if (!super.isVersionArgumentPresent())
+ {
+ isPresent = versionPresent;
+ }
+ else
+ {
+ isPresent = true;
+ }
+ return isPresent;
+ }
}
--
Gitblit v1.10.0