From a02a041d4e623925c395a14483c5b8c8b1c2f1cc Mon Sep 17 00:00:00 2001
From: Violette Roche-Montane <violette.roche-montane@forgerock.com>
Date: Fri, 07 Feb 2014 16:45:44 +0000
Subject: [PATCH] Checkpoint commit for OPENDJ-1303 - ConsoleApplication : Added/renamed functions to dissociate output stream from the error stream.
---
opendj-cli/src/main/java/com/forgerock/opendj/cli/ConsoleApplication.java | 62 ++++++++++++++-
opendj-cli/src/test/java/com/forgerock/opendj/cli/ConsoleApplicationTestCase.java | 137 ++++++++++++++++++++++++++++++++++
2 files changed, 194 insertions(+), 5 deletions(-)
diff --git a/opendj-cli/src/main/java/com/forgerock/opendj/cli/ConsoleApplication.java b/opendj-cli/src/main/java/com/forgerock/opendj/cli/ConsoleApplication.java
index fa3e472..883923e 100755
--- a/opendj-cli/src/main/java/com/forgerock/opendj/cli/ConsoleApplication.java
+++ b/opendj-cli/src/main/java/com/forgerock/opendj/cli/ConsoleApplication.java
@@ -188,14 +188,14 @@
* @param msg
* The message.
*/
- public final void print(final LocalizableMessage msg) {
+ public final void errPrint(final LocalizableMessage msg) {
err.print(wrapText(msg, MAX_LINE_WIDTH));
}
/**
* Displays a blank line to the error stream.
*/
- public final void println() {
+ public final void errPrintln() {
err.println();
}
@@ -205,7 +205,7 @@
* @param msg
* The message.
*/
- public final void println(final LocalizableMessage msg) {
+ public final void errPrintln(final LocalizableMessage msg) {
err.println(wrapText(msg, MAX_LINE_WIDTH));
}
@@ -218,7 +218,7 @@
* @param indent
* The number of columns to indent.
*/
- public final void println(final LocalizableMessage msg, final int indent) {
+ public final void errPrintln(final LocalizableMessage msg, final int indent) {
err.println(wrapText(msg, MAX_LINE_WIDTH, indent));
}
@@ -228,13 +228,65 @@
* @param msg
* The verbose message.
*/
- public final void printVerboseMessage(final LocalizableMessage msg) {
+ public final void errPrintVerboseMessage(final LocalizableMessage msg) {
if (isVerbose() || isInteractive()) {
err.println(wrapText(msg, MAX_LINE_WIDTH));
}
}
/**
+ * Displays a message to the output stream.
+ *
+ * @param msg
+ * The message.
+ */
+ public final void print(final LocalizableMessage msg) {
+ out.print(wrapText(msg, MAX_LINE_WIDTH));
+ }
+
+ /**
+ * Displays a blank line to the output stream.
+ */
+ public final void println() {
+ out.println();
+ }
+
+ /**
+ * Displays a message to the output stream.
+ *
+ * @param msg
+ * The message.
+ */
+ public final void println(final LocalizableMessage msg) {
+ out.println(wrapText(msg, MAX_LINE_WIDTH));
+ }
+
+ /**
+ * Displays a message to the output stream indented by the specified number
+ * of columns.
+ *
+ * @param msg
+ * The message.
+ * @param indent
+ * The number of columns to indent.
+ */
+ public final void println(final LocalizableMessage msg, final int indent) {
+ out.println(wrapText(msg, MAX_LINE_WIDTH, indent));
+ }
+
+ /**
+ * Displays a message to the output stream if verbose mode is enabled.
+ *
+ * @param msg
+ * The verbose message.
+ */
+ public final void printVerboseMessage(final LocalizableMessage msg) {
+ if (isVerbose() || isInteractive()) {
+ out.println(wrapText(msg, MAX_LINE_WIDTH));
+ }
+ }
+
+ /**
* 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).
diff --git a/opendj-cli/src/test/java/com/forgerock/opendj/cli/ConsoleApplicationTestCase.java b/opendj-cli/src/test/java/com/forgerock/opendj/cli/ConsoleApplicationTestCase.java
new file mode 100644
index 0000000..f22ad43
--- /dev/null
+++ b/opendj-cli/src/test/java/com/forgerock/opendj/cli/ConsoleApplicationTestCase.java
@@ -0,0 +1,137 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
+ * or http://forgerock.org/license/CDDLv1.0.html.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at legal-notices/CDDLv1_0.txt.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information:
+ * Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ * Copyright 2014 ForgeRock AS.
+ */
+package com.forgerock.opendj.cli;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.io.UnsupportedEncodingException;
+
+import org.forgerock.i18n.LocalizableMessage;
+import org.testng.annotations.Test;
+
+import static org.fest.assertions.Assertions.assertThat;
+
+/**
+ * Unit tests for the console application class.
+ */
+public class ConsoleApplicationTestCase extends CliTestCase {
+
+ /**
+ * For test purposes only.
+ */
+ private static class MockConsoleApplication extends ConsoleApplication {
+ private static ByteArrayOutputStream out;
+ private static ByteArrayOutputStream err;
+ private boolean verbose = false;
+ private boolean interactive = false;
+
+ private MockConsoleApplication(PrintStream out, PrintStream err) {
+ super(out, err);
+ }
+
+ final static MockConsoleApplication getDefault() {
+ out = new ByteArrayOutputStream();
+ final PrintStream psOut = new PrintStream(out);
+ err = new ByteArrayOutputStream();
+ final PrintStream psErr = new PrintStream(err);
+ return new MockConsoleApplication(psOut, psErr);
+ }
+
+ public String getOut() throws UnsupportedEncodingException {
+ return out.toString("UTF-8");
+ }
+
+ public String getErr() throws UnsupportedEncodingException {
+ return err.toString("UTF-8");
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public boolean isVerbose() {
+ return verbose;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public boolean isInteractive() {
+ return interactive;
+ }
+
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+ }
+
+ @Test()
+ public void testWriteLineInOutputStream() throws UnsupportedEncodingException {
+ final LocalizableMessage msg = LocalizableMessage
+ .raw("If somebody wants a sheep, that is a proof that one exists.");
+ final MockConsoleApplication ca = MockConsoleApplication.getDefault();
+ ca.print(msg);
+ assertThat(ca.getOut()).contains(msg.toString());
+ assertThat(ca.getErr()).isEmpty();
+ }
+
+ @Test()
+ public void testWriteLineInErrorStream() throws UnsupportedEncodingException {
+ final LocalizableMessage msg = LocalizableMessage.raw("Language is the source of misunderstandings.");
+ final MockConsoleApplication ca = MockConsoleApplication.getDefault();
+ ca.errPrint(msg);
+ assertThat(ca.getOut()).isEmpty();
+ assertThat(ca.getErr()).contains(msg.toString());
+ }
+
+ @Test()
+ public void testWriteOutputStreamVerbose() throws UnsupportedEncodingException {
+ final LocalizableMessage msg = LocalizableMessage
+ .raw("If somebody wants a sheep, that is a proof that one exists.");
+ final MockConsoleApplication ca = MockConsoleApplication.getDefault();
+ ca.printVerboseMessage(msg);
+ assertThat(ca.isVerbose()).isFalse();
+ assertThat(ca.getOut()).isEmpty();
+ assertThat(ca.getErr()).isEmpty();
+ ca.setVerbose(true);
+ ca.printVerboseMessage(msg);
+ assertThat(ca.isVerbose()).isTrue();
+ assertThat(ca.getOut()).contains(msg.toString());
+ assertThat(ca.getErr()).isEmpty();
+ }
+
+ @Test()
+ public void testWriteErrorStreamVerbose() throws UnsupportedEncodingException {
+ final LocalizableMessage msg = LocalizableMessage.raw("Language is the source of misunderstandings.");
+ final MockConsoleApplication ca = MockConsoleApplication.getDefault();
+ ca.errPrintVerboseMessage(msg);
+ assertThat(ca.isVerbose()).isFalse();
+ assertThat(ca.getOut()).isEmpty();
+ assertThat(ca.getErr()).isEmpty();
+ ca.setVerbose(true);
+ ca.errPrintVerboseMessage(msg);
+ assertThat(ca.isVerbose()).isTrue();
+ assertThat(ca.getOut()).isEmpty();
+ assertThat(ca.getErr()).contains(msg.toString());
+ }
+}
--
Gitblit v1.10.0