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