From 107be3d9186d5cdc000181a41abed56d2ca76252 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Wed, 15 Jun 2011 15:02:06 +0000
Subject: [PATCH] Fix OPENDJ-187: ldapsearch tool does not hide the password in the command line
---
opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPCompare.java | 126 -----
opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/SearchRate.java | 119 -----
opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ConnectionFactoryProvider.java | 17
opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ModRate.java | 120 -----
opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPModify.java | 128 -----
opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ConsoleApplication.java | 389 ++++-------------
opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPPasswordModify.java | 132 -----
opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPSearch.java | 157 ------
opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java | 119 -----
9 files changed, 134 insertions(+), 1,173 deletions(-)
diff --git a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java
index de17abf..75762cf 100644
--- a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java
+++ b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java
@@ -34,8 +34,6 @@
import static com.forgerock.opendj.ldap.tools.ToolConstants.*;
import static com.forgerock.opendj.ldap.tools.Utils.filterExitCode;
-import java.io.InputStream;
-import java.io.OutputStream;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@@ -444,132 +442,27 @@
public static void main(final String[] args)
{
- final int retCode = mainAuthRate(args, System.in, System.out, System.err);
+ final int retCode = new AuthRate().run(args);
System.exit(filterExitCode(retCode));
}
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @return The error code.
- */
-
- static int mainAuthRate(final String[] args)
- {
- return mainAuthRate(args, System.in, System.out, System.err);
- }
-
-
-
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @param inStream
- * The input stream to use for standard input, or <CODE>null</CODE>
- * if standard input is not needed.
- * @param outStream
- * The output stream to use for standard output, or <CODE>null</CODE>
- * if standard output is not needed.
- * @param errStream
- * The output stream to use for standard error, or <CODE>null</CODE>
- * if standard error is not needed.
- * @return The error code.
- */
-
- static int mainAuthRate(final String[] args, final InputStream inStream,
- final OutputStream outStream, final OutputStream errStream)
-
- {
- return new AuthRate(inStream, outStream, errStream).run(args);
- }
-
-
-
private BooleanArgument verbose;
private BooleanArgument scriptFriendly;
- private AuthRate(final InputStream in, final OutputStream out,
- final OutputStream err)
+ private AuthRate()
{
- super(in, out, err);
-
+ // Nothing to do.
}
/**
- * Indicates whether or not the user has requested advanced mode.
- *
- * @return Returns <code>true</code> if the user has requested advanced mode.
- */
- @Override
- public boolean isAdvancedMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested interactive behavior.
- *
- * @return Returns <code>true</code> if the user has requested interactive
- * behavior.
- */
- @Override
- public boolean isInteractive()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not this console application is running in its
- * menu-driven mode. This can be used to dictate whether output should go to
- * the error stream or not. In addition, it may also dictate whether or not
- * sub-menus should display a cancel option as well as a quit option.
- *
- * @return Returns <code>true</code> if this console application is running in
- * its menu-driven mode.
- */
- @Override
- public boolean isMenuDrivenMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested quiet output.
- *
- * @return Returns <code>true</code> if the user has requested quiet output.
- */
- @Override
- public boolean isQuiet()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested script-friendly output.
- *
- * @return Returns <code>true</code> if the user has requested script-friendly
- * output.
+ * {@inheritDoc}
*/
@Override
public boolean isScriptFriendly()
@@ -580,9 +473,7 @@
/**
- * Indicates whether or not the user has requested verbose output.
- *
- * @return Returns <code>true</code> if the user has requested verbose output.
+ * {@inheritDoc}
*/
@Override
public boolean isVerbose()
diff --git a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ConnectionFactoryProvider.java b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ConnectionFactoryProvider.java
index 5cae1fd..e9bdd2b 100644
--- a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ConnectionFactoryProvider.java
+++ b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ConnectionFactoryProvider.java
@@ -23,6 +23,7 @@
*
*
* Copyright 2010 Sun Microsystems, Inc.
+ * Portions copyright 2011 ForgeRock AS
*/
package com.forgerock.opendj.ldap.tools;
@@ -596,7 +597,7 @@
|| bindPasswordArg.isPresent())
{
bindRequest = Requests.newSimpleBindRequest(getBindName(),
- getPassword().toCharArray());
+ getPassword());
}
}
else if (mech.equals(DigestMD5SASLBindRequest.SASL_MECHANISM_NAME))
@@ -769,22 +770,24 @@
* @return The password stored into the specified file on by the command line
* argument, or null it if not specified.
*/
- private String getPassword() throws ArgumentException
+ private char[] getPassword() throws ArgumentException
{
- String value = "";
+ char[] value = "".toCharArray();
+
if (bindPasswordArg.isPresent())
{
- value = bindPasswordArg.getValue();
+ value = bindPasswordArg.getValue().toCharArray();
}
else if (bindPasswordFileArg.isPresent())
{
- value = bindPasswordFileArg.getValue();
+ value = bindPasswordFileArg.getValue().toCharArray();
}
- if (value.length() == 0 && app.isInteractive())
+
+ if (value.length == 0 && app.isInteractive())
{
try
{
- value = app.readLineOfInput(LocalizableMessage.raw("Bind Password:"));
+ value = app.readPassword(LocalizableMessage.raw("Bind Password:"));
}
catch(CLIException e)
{
diff --git a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ConsoleApplication.java b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ConsoleApplication.java
index 5fa9e76..4308804 100755
--- a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ConsoleApplication.java
+++ b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ConsoleApplication.java
@@ -23,20 +23,18 @@
*
*
* Copyright 2008-2009 Sun Microsystems, Inc.
+ * Portions copyright 2011 ForgeRock AS
+ * Portions copyright 2011 Nemanja Lukić
*/
package com.forgerock.opendj.ldap.tools;
-import static com.forgerock.opendj.ldap.tools.ToolsMessages.INFO_ERROR_EMPTY_RESPONSE;
-import static com.forgerock.opendj.ldap.tools.ToolsMessages.INFO_MENU_PROMPT_RETURN_TO_CONTINUE;
-import static com.forgerock.opendj.ldap.tools.ToolsMessages.INFO_PROMPT_SINGLE_DEFAULT;
+import static com.forgerock.opendj.ldap.tools.ToolsMessages.*;
import static com.forgerock.opendj.ldap.tools.Utils.MAX_LINE_WIDTH;
import static com.forgerock.opendj.ldap.tools.Utils.wrapText;
import java.io.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import org.forgerock.i18n.LocalizableMessage;
@@ -48,202 +46,33 @@
*/
abstract class ConsoleApplication
{
- private static final class NullOutputStream extends OutputStream
- {
- /**
- * The singleton instance for this class.
- */
- private static final NullOutputStream INSTANCE = new NullOutputStream();
+ private final PrintStream err = new PrintStream(System.out);
- /**
- * The singleton print stream tied to the null output stream.
- */
- private static final PrintStream PRINT_STREAM = new PrintStream(INSTANCE);
+ private final BufferedReader reader = new BufferedReader(
+ new InputStreamReader(System.in));
+ private final InputStream in = System.in;
+ private final PrintStream out = new PrintStream(System.out);
- /**
- * Retrieves a print stream using this null output stream.
- *
- * @return A print stream using this null output stream.
- */
- static PrintStream printStream()
- {
- return PRINT_STREAM;
- }
-
-
-
- /**
- * Creates a new instance of this null output stream.
- */
- private NullOutputStream()
- {
- // No implementation is required.
- }
-
-
-
- /**
- * Closes the output stream. This has no effect.
- */
- @Override
- public void close()
- {
- // No implementation is required.
- }
-
-
-
- /**
- * Flushes the output stream. This has no effect.
- */
- @Override
- public void flush()
- {
- // No implementation is required.
- }
-
-
-
- /**
- * Writes the provided data to this output stream. This has no effect.
- *
- * @param b
- * The byte array containing the data to be written.
- */
- @Override
- public void write(final byte[] b)
- {
- // No implementation is required.
- }
-
-
-
- /**
- * Writes the provided data to this output stream. This has no effect.
- *
- * @param b
- * The byte array containing the data to be written.
- * @param off
- * The offset at which the real data begins.
- * @param len
- * The number of bytes to be written.
- */
- @Override
- public void write(final byte[] b, final int off, final int len)
- {
- // No implementation is required.
- }
-
-
-
- /**
- * Writes the provided byte to this output stream. This has no effect.
- *
- * @param b
- * The byte to be written.
- */
- @Override
- public void write(final int b)
- {
- // No implementation is required.
- }
- }
-
-
-
- /**
- * A null reader.
- */
- private static final class NullReader extends Reader
- {
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void close() throws IOException
- {
- // Do nothing.
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int read(final char[] cbuf, final int off, final int len)
- throws IOException
- {
- return -1;
- }
- }
-
-
-
- // The error stream which this application should use.
- private final PrintStream err;
-
- // The input stream reader which this application should use.
- private final BufferedReader reader;
-
- private final InputStream in;
-
- // The output stream which this application should use.
- private final PrintStream out;
+ private final Console console = System.console();
/**
* Creates a new console application instance.
- *
- * @param in
- * The application input stream.
- * @param out
- * The application output stream.
- * @param err
- * The application error stream.
*/
- ConsoleApplication(final InputStream in, final OutputStream out,
- final OutputStream err)
+ ConsoleApplication()
{
- this.in = in;
- if (in != null)
- {
- this.reader = new BufferedReader(new InputStreamReader(in));
- }
- else
- {
- this.reader = new BufferedReader(new NullReader());
- }
-
- if (out != null)
- {
- this.out = new PrintStream(out);
- }
- else
- {
- this.out = NullOutputStream.printStream();
- }
-
- if (err != null)
- {
- this.err = new PrintStream(err);
- }
- else
- {
- this.err = NullOutputStream.printStream();
- }
+ // Nothing to do.
}
/**
- * Gets the application error stream.
+ * Returns the application error stream.
*
- * @return Returns the application error stream.
+ * @return The application error stream.
*/
final PrintStream getErrorStream()
{
@@ -253,21 +82,9 @@
/**
- * Gets the application input stream reader.
+ * Returns the application input stream.
*
- * @return Returns the application input stream.
- */
- final BufferedReader getInputReader()
- {
- return reader;
- }
-
-
-
- /**
- * Gets the application input stream.
- *
- * @return Returns the application input stream.
+ * @return The application input stream.
*/
final InputStream getInputStream()
{
@@ -277,9 +94,9 @@
/**
- * Gets the application output stream.
+ * Returns the application output stream.
*
- * @return Returns the application output stream.
+ * @return The application output stream.
*/
final PrintStream getOutputStream()
{
@@ -289,62 +106,54 @@
/**
- * Indicates whether or not the user has requested advanced mode.
+ * Indicates whether or not the user has requested interactive behavior. The
+ * default implementation returns {@code true}.
*
- * @return Returns <code>true</code> if the user has requested advanced mode.
+ * @return {@code true} if the user has requested interactive behavior.
*/
- abstract boolean isAdvancedMode();
+ boolean isInteractive()
+ {
+ return true;
+ }
/**
- * Indicates whether or not the user has requested interactive behavior.
+ * Indicates whether or not the user has requested quiet output. The default
+ * implementation returns {@code false}.
*
- * @return Returns <code>true</code> if the user has requested interactive
- * behavior.
+ * @return {@code true} if the user has requested quiet output.
*/
- abstract boolean isInteractive();
+ boolean isQuiet()
+ {
+ return false;
+ }
/**
- * Indicates whether or not this console application is running in its
- * menu-driven mode. This can be used to dictate whether output should go to
- * the error stream or not. In addition, it may also dictate whether or not
- * sub-menus should display a cancel option as well as a quit option.
+ * Indicates whether or not the user has requested script-friendly output. The
+ * default implementation returns {@code false}.
*
- * @return Returns <code>true</code> if this console application is running in
- * its menu-driven mode.
+ * @return {@code true} if the user has requested script-friendly output.
*/
- abstract boolean isMenuDrivenMode();
+ boolean isScriptFriendly()
+ {
+ return false;
+ }
/**
- * Indicates whether or not the user has requested quiet output.
+ * Indicates whether or not the user has requested verbose output. The default
+ * implementation returns {@code false}.
*
- * @return Returns <code>true</code> if the user has requested quiet output.
+ * @return {@code true} if the user has requested verbose output.
*/
- abstract boolean isQuiet();
-
-
-
- /**
- * Indicates whether or not the user has requested script-friendly output.
- *
- * @return Returns <code>true</code> if the user has requested script-friendly
- * output.
- */
- abstract boolean isScriptFriendly();
-
-
-
- /**
- * Indicates whether or not the user has requested verbose output.
- *
- * @return Returns <code>true</code> if the user has requested verbose output.
- */
- abstract boolean isVerbose();
+ boolean isVerbose()
+ {
+ return false;
+ }
@@ -356,7 +165,8 @@
*/
final void pressReturnToContinue()
{
- final LocalizableMessage msg = INFO_MENU_PROMPT_RETURN_TO_CONTINUE.get();
+ final LocalizableMessage msg = INFO_MENU_PROMPT_RETURN_TO_CONTINUE
+ .get();
try
{
readLineOfInput(msg);
@@ -422,35 +232,6 @@
/**
- * Displays a blank line to the output stream if we are not in quiet mode.
- */
- final void printlnProgress()
- {
- if (!isQuiet())
- {
- out.println();
- }
- }
-
-
-
- /**
- * Displays a message to the output stream if we are not in quiet mode.
- *
- * @param msg
- * The message.
- */
- final void printProgress(final LocalizableMessage msg)
- {
- if (!isQuiet())
- {
- out.print(msg);
- }
- }
-
-
-
- /**
* Displays a message to the error stream if verbose mode is enabled.
*
* @param msg
@@ -467,29 +248,29 @@
/**
- * Commodity method that interactively prompts (on error output) the user to
- * provide a string value. Any non-empty string will be allowed (the empty
- * string will indicate that the default should be used, if there is one).
+ * Interactively prompts (on error output) the user to provide a string value.
+ * Any non-empty string will be allowed (the empty string will indicate that
+ * the default should be used, if there is one).
*
* @param prompt
* The prompt to present to the user.
* @param defaultValue
* The default value to assume if the user presses ENTER without
- * typing anything, or <CODE>null</CODE> if there should not be a
- * default and the user must explicitly provide a value.
+ * typing anything, or {@code null} if there should not be a default
+ * and the user must explicitly provide a value.
* @throws CLIException
* If the line of input could not be retrieved for some reason.
* @return The string value read from the user.
*/
- final String readInput(LocalizableMessage prompt, final String defaultValue)
- throws CLIException
+ final String readInput(LocalizableMessage prompt,
+ final String defaultValue) throws CLIException
{
while (true)
{
if (defaultValue != null)
{
- prompt = INFO_PROMPT_SINGLE_DEFAULT
- .get(prompt.toString(), defaultValue);
+ prompt = INFO_PROMPT_SINGLE_DEFAULT.get(prompt.toString(),
+ defaultValue);
}
final String response = readLineOfInput(prompt);
@@ -514,34 +295,43 @@
/**
- * Commodity method that interactively prompts (on error output) the user to
- * provide a string value. Any non-empty string will be allowed (the empty
- * string will indicate that the default should be used, if there is one). If
- * an error occurs a message will be logged to the provided logger.
+ * Interactively reads a password from the console.
*
* @param prompt
- * The prompt to present to the user.
- * @param defaultValue
- * The default value to assume if the user presses ENTER without
- * typing anything, or <CODE>null</CODE> if there should not be a
- * default and the user must explicitly provide a value.
- * @param logger
- * the Logger to be used to log the error message.
- * @return The string value read from the user.
+ * The password prompt.
+ * @return The password.
+ * @throws CLIException
+ * If the password could not be retrieved for some reason.
*/
- final String readInput(final LocalizableMessage prompt,
- final String defaultValue, final Logger logger)
+ final char[] readPassword(final LocalizableMessage prompt)
+ throws CLIException
{
- String s = defaultValue;
- try
+ if (console != null)
{
- s = readInput(prompt, defaultValue);
+ if (prompt != null)
+ {
+ err.print(wrapText(prompt, MAX_LINE_WIDTH));
+ err.print(" ");
+ }
+ try
+ {
+ final char[] password = console.readPassword();
+ if (password == null)
+ {
+ throw new EOFException("End of input");
+ }
+ return password;
+ }
+ catch (final Throwable e)
+ {
+ throw CLIException.adaptInputException(e);
+ }
}
- catch (final CLIException ce)
+ else
{
- logger.log(Level.WARNING, "Error reading input: " + ce, ce);
+ // FIXME: should go direct to char[] and avoid the String.
+ return readLineOfInput(prompt).toCharArray();
}
- return s;
}
@@ -551,12 +341,11 @@
*
* @param prompt
* The prompt.
- * @return Returns the line of input, or <code>null</code> if the end of input
- * has been reached.
+ * @return The line of input.
* @throws CLIException
* If the line of input could not be retrieved for some reason.
*/
- final String readLineOfInput(final LocalizableMessage prompt)
+ private final String readLineOfInput(final LocalizableMessage prompt)
throws CLIException
{
if (prompt != null)
@@ -569,8 +358,8 @@
final String s = reader.readLine();
if (s == null)
{
- throw CLIException
- .adaptInputException(new EOFException("End of input"));
+ throw CLIException.adaptInputException(new EOFException(
+ "End of input"));
}
else
{
diff --git a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPCompare.java b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPCompare.java
index e116bae..7cba37f 100644
--- a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPCompare.java
+++ b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPCompare.java
@@ -23,6 +23,7 @@
*
*
* Copyright 2010 Sun Microsystems, Inc.
+ * Portions copyright 2011 ForgeRock AS
*/
package com.forgerock.opendj.ldap.tools;
@@ -65,142 +66,25 @@
public static void main(final String[] args)
{
- final int retCode = mainCompare(args, System.in, System.out, System.err);
+ final int retCode = new LDAPCompare().run(args);
System.exit(filterExitCode(retCode));
}
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the LDAPModify tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @return The error code.
- */
-
- static int mainCompare(final String[] args)
- {
- return mainCompare(args, System.in, System.out, System.err);
- }
-
-
-
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the LDAPModify tool.
- *
- * @param args
- * The command-line arguments provided to this program. specified,
- * the number of matching entries should be returned or not.
- * @param inStream
- * The input stream to use for standard input, or <CODE>null</CODE>
- * if standard input is not needed.
- * @param outStream
- * The output stream to use for standard output, or <CODE>null</CODE>
- * if standard output is not needed.
- * @param errStream
- * The output stream to use for standard error, or <CODE>null</CODE>
- * if standard error is not needed.
- * @return The error code.
- */
- static int mainCompare(final String[] args, final InputStream inStream,
- final OutputStream outStream, final OutputStream errStream)
- {
- return new LDAPCompare(inStream, outStream, errStream).run(args);
- }
-
-
-
private BooleanArgument verbose;
- private LDAPCompare(final InputStream in, final OutputStream out,
- final OutputStream err)
+ private LDAPCompare()
{
- super(in, out, err);
-
+ // Nothing to do.
}
/**
- * Indicates whether or not the user has requested advanced mode.
- *
- * @return Returns <code>true</code> if the user has requested advanced mode.
- */
- @Override
- public boolean isAdvancedMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested interactive behavior.
- *
- * @return Returns <code>true</code> if the user has requested interactive
- * behavior.
- */
- @Override
- public boolean isInteractive()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not this console application is running in its
- * menu-driven mode. This can be used to dictate whether output should go to
- * the error stream or not. In addition, it may also dictate whether or not
- * sub-menus should display a cancel option as well as a quit option.
- *
- * @return Returns <code>true</code> if this console application is running in
- * its menu-driven mode.
- */
- @Override
- public boolean isMenuDrivenMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested quiet output.
- *
- * @return Returns <code>true</code> if the user has requested quiet output.
- */
- @Override
- public boolean isQuiet()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested script-friendly output.
- *
- * @return Returns <code>true</code> if the user has requested script-friendly
- * output.
- */
- @Override
- public boolean isScriptFriendly()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested verbose output.
- *
- * @return Returns <code>true</code> if the user has requested verbose output.
+ * {@inheritDoc}
*/
@Override
public boolean isVerbose()
diff --git a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPModify.java b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPModify.java
index 598df04..f4f36b4 100644
--- a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPModify.java
+++ b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPModify.java
@@ -23,6 +23,7 @@
*
*
* Copyright 2010 Sun Microsystems, Inc.
+ * Portions copyright 2011 ForgeRock AS
*/
package com.forgerock.opendj.ldap.tools;
@@ -36,8 +37,6 @@
import java.io.FileInputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
@@ -313,54 +312,12 @@
public static void main(final String[] args)
{
- final int retCode = mainModify(args, System.in, System.out, System.err);
+ final int retCode = new LDAPModify().run(args);
System.exit(filterExitCode(retCode));
}
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the LDAPModify tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @return The error code.
- */
-
- static int mainModify(final String[] args)
- {
- return mainModify(args, System.in, System.out, System.err);
- }
-
-
-
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the LDAPModify tool.
- *
- * @param args
- * The command-line arguments provided to this program. specified,
- * the number of matching entries should be returned or not.
- * @param inStream
- * The input stream to use for standard input, or <CODE>null</CODE>
- * if standard input is not needed.
- * @param outStream
- * The output stream to use for standard output, or <CODE>null</CODE>
- * if standard output is not needed.
- * @param errStream
- * The output stream to use for standard error, or <CODE>null</CODE>
- * if standard error is not needed.
- * @return The error code.
- */
- static int mainModify(final String[] args, final InputStream inStream,
- final OutputStream outStream, final OutputStream errStream)
- {
- return new LDAPModify(inStream, outStream, errStream).run(args);
- }
-
-
-
private Connection connection;
private EntryWriter writer;
@@ -371,90 +328,15 @@
- private LDAPModify(final InputStream in, final OutputStream out,
- final OutputStream err)
+ private LDAPModify()
{
- super(in, out, err);
-
+ // Nothing to do.
}
/**
- * Indicates whether or not the user has requested advanced mode.
- *
- * @return Returns <code>true</code> if the user has requested advanced mode.
- */
- @Override
- public boolean isAdvancedMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested interactive behavior.
- *
- * @return Returns <code>true</code> if the user has requested interactive
- * behavior.
- */
- @Override
- public boolean isInteractive()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not this console application is running in its
- * menu-driven mode. This can be used to dictate whether output should go to
- * the error stream or not. In addition, it may also dictate whether or not
- * sub-menus should display a cancel option as well as a quit option.
- *
- * @return Returns <code>true</code> if this console application is running in
- * its menu-driven mode.
- */
- @Override
- public boolean isMenuDrivenMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested quiet output.
- *
- * @return Returns <code>true</code> if the user has requested quiet output.
- */
- @Override
- public boolean isQuiet()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested script-friendly output.
- *
- * @return Returns <code>true</code> if the user has requested script-friendly
- * output.
- */
- @Override
- public boolean isScriptFriendly()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested verbose output.
- *
- * @return Returns <code>true</code> if the user has requested verbose output.
+ * {@inheritDoc}
*/
@Override
public boolean isVerbose()
diff --git a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPPasswordModify.java b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPPasswordModify.java
index 04fc6de..478d2a0 100644
--- a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPPasswordModify.java
+++ b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPPasswordModify.java
@@ -23,6 +23,7 @@
*
*
* Copyright 2010 Sun Microsystems, Inc.
+ * Portions copyright 2011 ForgeRock AS
*/
package com.forgerock.opendj.ldap.tools;
@@ -34,9 +35,6 @@
import static com.forgerock.opendj.ldap.tools.Utils.filterExitCode;
import static org.forgerock.opendj.ldap.ErrorResultException.newErrorResult;
-import java.io.InputStream;
-import java.io.OutputStream;
-
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.*;
import org.forgerock.opendj.ldap.controls.Control;
@@ -70,145 +68,25 @@
*/
public static void main(final String[] args)
{
- final int retCode = mainPasswordModify(args, System.in, System.out,
- System.err);
+ final int retCode = new LDAPPasswordModify().run(args);
System.exit(filterExitCode(retCode));
}
- /**
- * Parses the command-line arguments, establishes a connection to the
- * Directory Server, sends the password modify request, and reads the
- * response.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @return An integer value of zero if everything completed successfully, or a
- * nonzero value if an error occurred.
- */
- static int mainPasswordModify(final String[] args)
- {
- return mainPasswordModify(args, System.in, System.out, System.err);
- }
-
-
-
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the LDAPPasswordModify tool.
- *
- * @param args
- * The command-line arguments provided to this program. specified,
- * the number of matching entries should be returned or not.
- * @param inStream
- * The input stream to use for standard input, or <CODE>null</CODE>
- * if standard input is not needed.
- * @param outStream
- * The output stream to use for standard output, or <CODE>null</CODE>
- * if standard output is not needed.
- * @param errStream
- * The output stream to use for standard error, or <CODE>null</CODE>
- * if standard error is not needed.
- * @return The error code.
- */
- static int mainPasswordModify(final String[] args,
- final InputStream inStream, final OutputStream outStream,
- final OutputStream errStream)
- {
- return new LDAPPasswordModify(inStream, outStream, errStream).run(args);
- }
-
-
-
private BooleanArgument verbose;
- private LDAPPasswordModify(final InputStream in, final OutputStream out,
- final OutputStream err)
+ private LDAPPasswordModify()
{
- super(in, out, err);
-
+ // Nothing to do.
}
/**
- * Indicates whether or not the user has requested advanced mode.
- *
- * @return Returns <code>true</code> if the user has requested advanced mode.
- */
- @Override
- public boolean isAdvancedMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested interactive behavior.
- *
- * @return Returns <code>true</code> if the user has requested interactive
- * behavior.
- */
- @Override
- public boolean isInteractive()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not this console application is running in its
- * menu-driven mode. This can be used to dictate whether output should go to
- * the error stream or not. In addition, it may also dictate whether or not
- * sub-menus should display a cancel option as well as a quit option.
- *
- * @return Returns <code>true</code> if this console application is running in
- * its menu-driven mode.
- */
- @Override
- public boolean isMenuDrivenMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested quiet output.
- *
- * @return Returns <code>true</code> if the user has requested quiet output.
- */
- @Override
- public boolean isQuiet()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested script-friendly output.
- *
- * @return Returns <code>true</code> if the user has requested script-friendly
- * output.
- */
- @Override
- public boolean isScriptFriendly()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested verbose output.
- *
- * @return Returns <code>true</code> if the user has requested verbose output.
+ * {@inheritDoc}
*/
@Override
public boolean isVerbose()
diff --git a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPSearch.java b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPSearch.java
index 9aa4952..11a373e 100644
--- a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPSearch.java
+++ b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/LDAPSearch.java
@@ -23,6 +23,7 @@
*
*
* Copyright 2010 Sun Microsystems, Inc.
+ * Portions copyright 2011 ForgeRock AS
*/
package com.forgerock.opendj.ldap.tools;
@@ -215,175 +216,27 @@
public static void main(final String[] args)
{
- final int retCode = mainSearch(args, false, System.in, System.out,
- System.err);
+ final int retCode = new LDAPSearch().run(args, false);
System.exit(filterExitCode(retCode));
}
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the ldapsearch tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @return The error code.
- */
-
- static int mainSearch(final String[] args)
- {
- return mainSearch(args, true, System.in, System.out, System.err);
- }
-
-
-
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the ldapsearch tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @param returnMatchingEntries
- * whether when the option --countEntries is specified, the number of
- * matching entries should be returned or not.
- * @param inStream
- * The input stream to use for standard input, or <CODE>null</CODE>
- * if standard input is not needed.
- * @param outStream
- * The output stream to use for standard output, or <CODE>null</CODE>
- * if standard output is not needed.
- * @param errStream
- * The output stream to use for standard error, or <CODE>null</CODE>
- * if standard error is not needed.
- * @return The error code.
- */
-
- static int mainSearch(final String[] args,
- final boolean returnMatchingEntries, final InputStream inStream,
- final OutputStream outStream, final OutputStream errStream)
- {
- return new LDAPSearch(inStream, outStream, errStream).run(args,
- returnMatchingEntries);
- }
-
-
-
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the ldapsearch tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @param inStream
- * The input stream to use for standard input, or <CODE>null</CODE>
- * if standard input is not needed.
- * @param outStream
- * The output stream to use for standard output, or <CODE>null</CODE>
- * if standard output is not needed.
- * @param errStream
- * The output stream to use for standard error, or <CODE>null</CODE>
- * if standard error is not needed.
- * @return The error code.
- */
- static int mainSearch(final String[] args, final InputStream inStream,
- final OutputStream outStream, final OutputStream errStream)
- {
- return mainSearch(args, true, inStream, outStream, errStream);
- }
-
-
-
private BooleanArgument verbose;
private EntryWriter ldifWriter;
- private LDAPSearch(final InputStream in, final OutputStream out,
- final OutputStream err)
+ private LDAPSearch()
{
- super(in, out, err);
-
+ // Nothing to do.
}
/**
- * Indicates whether or not the user has requested advanced mode.
- *
- * @return Returns <code>true</code> if the user has requested advanced mode.
- */
- @Override
- public boolean isAdvancedMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested interactive behavior.
- *
- * @return Returns <code>true</code> if the user has requested interactive
- * behavior.
- */
- @Override
- public boolean isInteractive()
- {
- return true;
- }
-
-
-
- /**
- * Indicates whether or not this console application is running in its
- * menu-driven mode. This can be used to dictate whether output should go to
- * the error stream or not. In addition, it may also dictate whether or not
- * sub-menus should display a cancel option as well as a quit option.
- *
- * @return Returns <code>true</code> if this console application is running in
- * its menu-driven mode.
- */
- @Override
- public boolean isMenuDrivenMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested quiet output.
- *
- * @return Returns <code>true</code> if the user has requested quiet output.
- */
- @Override
- public boolean isQuiet()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested script-friendly output.
- *
- * @return Returns <code>true</code> if the user has requested script-friendly
- * output.
- */
- @Override
- public boolean isScriptFriendly()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested verbose output.
- *
- * @return Returns <code>true</code> if the user has requested verbose output.
+ * {@inheritDoc}
*/
@Override
public boolean isVerbose()
diff --git a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ModRate.java b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ModRate.java
index 84d374b..a6c668a 100644
--- a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ModRate.java
+++ b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/ModRate.java
@@ -34,9 +34,6 @@
import static com.forgerock.opendj.ldap.tools.ToolConstants.*;
import static com.forgerock.opendj.ldap.tools.Utils.filterExitCode;
-import java.io.InputStream;
-import java.io.OutputStream;
-
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.*;
import org.forgerock.opendj.ldap.requests.ModifyRequest;
@@ -163,132 +160,27 @@
public static void main(final String[] args)
{
- final int retCode = mainModRate(args, System.in, System.out, System.err);
+ final int retCode = new ModRate().run(args);
System.exit(filterExitCode(retCode));
}
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the modrate tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @return The error code.
- */
-
- static int mainModRate(final String[] args)
- {
- return mainModRate(args, System.in, System.out, System.err);
- }
-
-
-
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the modrate tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @param inStream
- * The input stream to use for standard input, or <CODE>null</CODE>
- * if standard input is not needed.
- * @param outStream
- * The output stream to use for standard output, or <CODE>null</CODE>
- * if standard output is not needed.
- * @param errStream
- * The output stream to use for standard error, or <CODE>null</CODE>
- * if standard error is not needed.
- * @return The error code.
- */
-
- static int mainModRate(final String[] args, final InputStream inStream,
- final OutputStream outStream, final OutputStream errStream)
-
- {
- return new ModRate(inStream, outStream, errStream).run(args);
- }
-
-
-
private BooleanArgument verbose;
private BooleanArgument scriptFriendly;
- private ModRate(final InputStream in, final OutputStream out,
- final OutputStream err)
+ private ModRate()
{
- super(in, out, err);
-
+ // Nothing to do.
}
/**
- * Indicates whether or not the user has requested advanced mode.
- *
- * @return Returns <code>true</code> if the user has requested advanced mode.
- */
- @Override
- public boolean isAdvancedMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested interactive behavior.
- *
- * @return Returns <code>true</code> if the user has requested interactive
- * behavior.
- */
- @Override
- public boolean isInteractive()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not this console application is running in its
- * menu-driven mode. This can be used to dictate whether output should go to
- * the error stream or not. In addition, it may also dictate whether or not
- * sub-menus should display a cancel option as well as a quit option.
- *
- * @return Returns <code>true</code> if this console application is running in
- * its menu-driven mode.
- */
- @Override
- public boolean isMenuDrivenMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested quiet output.
- *
- * @return Returns <code>true</code> if the user has requested quiet output.
- */
- @Override
- public boolean isQuiet()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested script-friendly output.
- *
- * @return Returns <code>true</code> if the user has requested script-friendly
- * output.
+ * {@inheritDoc}
*/
@Override
public boolean isScriptFriendly()
@@ -299,9 +191,7 @@
/**
- * Indicates whether or not the user has requested verbose output.
- *
- * @return Returns <code>true</code> if the user has requested verbose output.
+ * {@inheritDoc}
*/
@Override
public boolean isVerbose()
diff --git a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/SearchRate.java b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/SearchRate.java
index a78c738..6c07efa 100644
--- a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/SearchRate.java
+++ b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/SearchRate.java
@@ -34,8 +34,6 @@
import static com.forgerock.opendj.ldap.tools.ToolConstants.*;
import static com.forgerock.opendj.ldap.tools.Utils.filterExitCode;
-import java.io.InputStream;
-import java.io.OutputStream;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@@ -215,55 +213,12 @@
public static void main(final String[] args)
{
- final int retCode = mainSearchRate(args, System.in, System.out, System.err);
+ final int retCode = new SearchRate().run(args);
System.exit(filterExitCode(retCode));
}
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the ldapsearch tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @return The error code.
- */
-
- static int mainSearchRate(final String[] args)
- {
- return mainSearchRate(args, System.in, System.out, System.err);
- }
-
-
-
- /**
- * Parses the provided command-line arguments and uses that information to run
- * the ldapsearch tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @param inStream
- * The input stream to use for standard input, or <CODE>null</CODE>
- * if standard input is not needed.
- * @param outStream
- * The output stream to use for standard output, or <CODE>null</CODE>
- * if standard output is not needed.
- * @param errStream
- * The output stream to use for standard error, or <CODE>null</CODE>
- * if standard error is not needed.
- * @return The error code.
- */
-
- static int mainSearchRate(final String[] args, final InputStream inStream,
- final OutputStream outStream, final OutputStream errStream)
-
- {
- return new SearchRate(inStream, outStream, errStream).run(args);
- }
-
-
-
private BooleanArgument verbose;
private BooleanArgument scriptFriendly;
@@ -272,77 +227,15 @@
- private SearchRate(final InputStream in, final OutputStream out,
- final OutputStream err)
+ private SearchRate()
{
- super(in, out, err);
-
+ // Nothing to do.
}
/**
- * Indicates whether or not the user has requested advanced mode.
- *
- * @return Returns <code>true</code> if the user has requested advanced mode.
- */
- @Override
- public boolean isAdvancedMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested interactive behavior.
- *
- * @return Returns <code>true</code> if the user has requested interactive
- * behavior.
- */
- @Override
- public boolean isInteractive()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not this console application is running in its
- * menu-driven mode. This can be used to dictate whether output should go to
- * the error stream or not. In addition, it may also dictate whether or not
- * sub-menus should display a cancel option as well as a quit option.
- *
- * @return Returns <code>true</code> if this console application is running in
- * its menu-driven mode.
- */
- @Override
- public boolean isMenuDrivenMode()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested quiet output.
- *
- * @return Returns <code>true</code> if the user has requested quiet output.
- */
- @Override
- public boolean isQuiet()
- {
- return false;
- }
-
-
-
- /**
- * Indicates whether or not the user has requested script-friendly output.
- *
- * @return Returns <code>true</code> if the user has requested script-friendly
- * output.
+ * {@inheritDoc}
*/
@Override
public boolean isScriptFriendly()
@@ -353,9 +246,7 @@
/**
- * Indicates whether or not the user has requested verbose output.
- *
- * @return Returns <code>true</code> if the user has requested verbose output.
+ * {@inheritDoc}
*/
@Override
public boolean isVerbose()
--
Gitblit v1.10.0