From fc2c4076a7c14b9eee27fa6bfa18d1b410785a69 Mon Sep 17 00:00:00 2001 From: Peter Palaga Date: Mon, 21 Dec 2020 16:07:00 +0100 Subject: [PATCH] Support short variants of boolean properties #279 --- .../org/mvndaemon/mvnd/client/DaemonParameters.java | 3 ++- .../org/mvndaemon/mvnd/client/EnvironmentTest.java | 10 ++++++++++ .../java/org/mvndaemon/mvnd/common/OptionType.java | 5 ++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java index 5945825e..c09c0423 100644 --- a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java +++ b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java @@ -596,7 +596,8 @@ public class DaemonParameters { } public boolean asBoolean() { - return Boolean.parseBoolean(get()); + final String val = get(); + return "".equals(val) || Boolean.parseBoolean(val); } public int asInt() { diff --git a/client/src/test/java/org/mvndaemon/mvnd/client/EnvironmentTest.java b/client/src/test/java/org/mvndaemon/mvnd/client/EnvironmentTest.java index f7a6427c..5dca9740 100644 --- a/client/src/test/java/org/mvndaemon/mvnd/client/EnvironmentTest.java +++ b/client/src/test/java/org/mvndaemon/mvnd/client/EnvironmentTest.java @@ -24,6 +24,8 @@ import java.util.Map; import java.util.Properties; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.mvndaemon.mvnd.client.DaemonParameters.EnvValue; +import org.mvndaemon.mvnd.client.DaemonParameters.ValueSource; import org.mvndaemon.mvnd.common.Environment; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -119,6 +121,14 @@ public class EnvironmentTest { assertEquals("C:\\jdk-11.0.2\\", Environment.cygpath("/cygdrive/c/jdk-11.0.2/")); } + @Test + void emptyBooleanEnvValueIsTrue() { + final String EMPTY_STRING = ""; + final EnvValue envVal = new EnvValue(Environment.MVND_NO_BUFERING, + new ValueSource(sb -> sb.append("envValueAsBoolean"), () -> EMPTY_STRING)); + assertEquals(true, envVal.asBoolean()); + } + static class EnvironmentResource implements AutoCloseable { private final Properties props = new Properties(); diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/OptionType.java b/common/src/main/java/org/mvndaemon/mvnd/common/OptionType.java index 082eda17..cbf49ec3 100644 --- a/common/src/main/java/org/mvndaemon/mvnd/common/OptionType.java +++ b/common/src/main/java/org/mvndaemon/mvnd/common/OptionType.java @@ -23,7 +23,10 @@ import java.util.stream.Stream; import org.mvndaemon.mvnd.common.Environment.DocumentedEnumEntry; public enum OptionType { - /** true or false */ + /** + * true or false; empty string is also interpreted as true - so + * -Dmvnd.noBuffering is equivalent to -Dmvnd.noBuffering=true + */ BOOLEAN, /** * An unlabeled whole number of milliseconds or a whole number followed by an optional space and a unit