From b36fe2cbd8fbe63935c25473ab5a44934599f23b Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 10 Dec 2015 11:15:50 +0000 Subject: [PATCH] Cache outcome of checking to see if host supports ANSI output Closes gh-4510 --- .../org/springframework/boot/ansi/AnsiOutput.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/spring-boot/src/main/java/org/springframework/boot/ansi/AnsiOutput.java b/spring-boot/src/main/java/org/springframework/boot/ansi/AnsiOutput.java index b83cec2d7e4..a35441b37a9 100644 --- a/spring-boot/src/main/java/org/springframework/boot/ansi/AnsiOutput.java +++ b/spring-boot/src/main/java/org/springframework/boot/ansi/AnsiOutput.java @@ -30,6 +30,8 @@ public abstract class AnsiOutput { private static Enabled enabled = Enabled.DETECT; + private static Boolean ansiCapable; + private static final String OPERATING_SYSTEM_NAME = System.getProperty("os.name") .toLowerCase(); @@ -108,12 +110,19 @@ public abstract class AnsiOutput { private static boolean isEnabled() { if (enabled == Enabled.DETECT) { - return detectIfEnabled(); + return detectIfAnsiCapable(); } return enabled == Enabled.ALWAYS; } - private static boolean detectIfEnabled() { + private static boolean detectIfAnsiCapable() { + if (ansiCapable == null) { + ansiCapable = doDetectIfAnsiCapable(); + } + return ansiCapable; + } + + private static boolean doDetectIfAnsiCapable() { try { if (System.console() == null) { return false;