Blob Blame History Raw
From 0e4ec355a09fb5755b1516455d3e79625e997a3b Mon Sep 17 00:00:00 2001
From: Marek Goldmann <marek.goldmann@gmail.com>
Date: Thu, 5 Sep 2013 08:29:30 +0200
Subject: [PATCH] [PATCH] [AS7-5061] Relax the early console check and update
 the ErrorState to use System.err if no console available.

---
 .../management/security/AddPropertiesUser.java     |  3 +--
 .../management/security/state/ErrorState.java      | 28 +++++++++++++---------
 2 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/domain-management/src/main/java/org/jboss/as/domain/management/security/AddPropertiesUser.java b/domain-management/src/main/java/org/jboss/as/domain/management/security/AddPropertiesUser.java
index 05fc0e3..d13b84d 100644
--- a/domain-management/src/main/java/org/jboss/as/domain/management/security/AddPropertiesUser.java
+++ b/domain-management/src/main/java/org/jboss/as/domain/management/security/AddPropertiesUser.java
@@ -106,9 +106,8 @@ public class AddPropertiesUser {
             stateValues.setHowInteractive(Interactiveness.NON_INTERACTIVE);
         }
 
-        // Silent modes still need to be able to output an error on failure.
         theConsole = new JavaConsole();
-        if (theConsole.getConsole() == null) {
+        if (theConsole.getConsole() == null && !stateValues.isSilent()) {
             throw MESSAGES.noConsoleAvailable();
         }
         stateValues.setUserName(user);
diff --git a/domain-management/src/main/java/org/jboss/as/domain/management/security/state/ErrorState.java b/domain-management/src/main/java/org/jboss/as/domain/management/security/state/ErrorState.java
index 8fbb930..22ac30b 100644
--- a/domain-management/src/main/java/org/jboss/as/domain/management/security/state/ErrorState.java
+++ b/domain-management/src/main/java/org/jboss/as/domain/management/security/state/ErrorState.java
@@ -51,23 +51,29 @@ public class ErrorState implements State {
         this.nextState = nextState;
         this.stateValues = stateValues;
         this.theConsole = theConsole;
-        if (theConsole.getConsole() == null) {
-            throw MESSAGES.noConsoleAvailable();
-        }
     }
 
     public State execute() {
+        boolean direct = theConsole.getConsole() == null;
         // Errors should be output in all modes.
-        theConsole.printf(NEW_LINE);
-        theConsole.printf(" * ");
-        theConsole.printf(MESSAGES.errorHeader());
-        theConsole.printf(" * ");
-        theConsole.printf(NEW_LINE);
+        printf(NEW_LINE, direct);
+        printf(" * ", direct);
+        printf(MESSAGES.errorHeader(), direct);
+        printf(" * ", direct);
+        printf(NEW_LINE, direct);
 
-        theConsole.printf(errorMessage);
-        theConsole.printf(NEW_LINE);
-        theConsole.printf(NEW_LINE);
+        printf(errorMessage, direct);
+        printf(NEW_LINE, direct);
+        printf(NEW_LINE, direct);
         return nextState;
     }
 
+    private void printf(final String message, final boolean direct) {
+        if (direct) {
+            System.err.print(message);
+        } else {
+            theConsole.printf(message);
+        }
+    }
+
 }
-- 
1.8.3.1