diff options
author | Cedric Beust <cedric@beust.com> | 2017-04-25 20:08:28 -0700 |
---|---|---|
committer | Cedric Beust <cedric@beust.com> | 2017-04-25 20:08:28 -0700 |
commit | 4435722a0b45be660b1b58834d4f5326fc78c9ad (patch) | |
tree | 2546cb063534203b316f234800ca965df6efc238 | |
parent | cfb69b748feaace4aab253755e8a1e07b779f8fb (diff) | |
download | jcommander-4435722a0b45be660b1b58834d4f5326fc78c9ad.tar.gz |
Add support for inverted booleans.
-rw-r--r-- | src/main/java/com/beust/jcommander/JCommander.java | 8 | ||||
-rw-r--r-- | src/test/java/com/beust/jcommander/JCommanderTest.java | 14 |
2 files changed, 20 insertions, 2 deletions
diff --git a/src/main/java/com/beust/jcommander/JCommander.java b/src/main/java/com/beust/jcommander/JCommander.java index b0ba149..59073c6 100644 --- a/src/main/java/com/beust/jcommander/JCommander.java +++ b/src/main/java/com/beust/jcommander/JCommander.java @@ -668,7 +668,9 @@ public class JCommander { // an arity of 1, in which case we need to read the next value if ((fieldType == boolean.class || fieldType == Boolean.class) && pd.getParameter().arity() == -1) { - pd.addValue("true"); + // Flip the value this boolean was initialized with + Boolean value = (Boolean) pd.getParameterized().get(pd.getObject()); + pd.addValue(value ? "false" : "true"); requiredFields.remove(pd.getParameterized()); } else { increment = processFixedArity(args, i, pd, validate, fieldType); @@ -829,7 +831,9 @@ public class JCommander { if (arity == 0 && (Boolean.class.isAssignableFrom(fieldType) || boolean.class.isAssignableFrom(fieldType))) { - pd.addValue("true"); + // Flip the value this boolean was initialized with + Boolean value = (Boolean) pd.getParameterized().get(pd.getObject()); + pd.addValue(value ? "false" : "true"); requiredFields.remove(pd.getParameterized()); } else if (arity == 0) { throw new ParameterException("Expected a value after parameter " + arg); diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index a93966e..a95ab30 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -1505,6 +1505,20 @@ public class JCommanderTest { Assert.assertEquals(generateOption.configFile.getName(), "foo.txt"); } + @Test + public void invertedBoolean() { + class Args { + @Parameter(names = {"--f"}) + private boolean f = true; + } + Args args = new Args(); + JCommander.newBuilder() + .addObject(args) + .args(new String[] { "--f"}) + .build(); + Assert.assertEquals(args.f, false); + } + @Test(enabled = false) public static void main(String[] args) { |