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