diff options
author | Cedric Beust <cedric@beust.com> | 2012-11-10 11:30:30 -0800 |
---|---|---|
committer | Cedric Beust <cedric@beust.com> | 2012-11-10 11:30:30 -0800 |
commit | 07e332d70768d2f49d835ccf65628d73d2d6703f (patch) | |
tree | ac52ee6828d54e1e66c2cc1979d2ec9a5214ee59 | |
parent | d5490aabc6002f9400e5cf3050f098ab967253d2 (diff) | |
download | platform_external_jcommander-07e332d70768d2f49d835ccf65628d73d2d6703f.tar.gz platform_external_jcommander-07e332d70768d2f49d835ccf65628d73d2d6703f.tar.bz2 platform_external_jcommander-07e332d70768d2f49d835ccf65628d73d2d6703f.zip |
Fixed: GITHUB-137: Main parameters with a default value should be overridden if a main parameter is specified
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | src/main/java/com/beust/jcommander/JCommander.java | 21 | ||||
-rw-r--r-- | src/test/java/com/beust/jcommander/JCommanderTest.java | 15 |
3 files changed, 21 insertions, 16 deletions
@@ -1,5 +1,6 @@ Current +Fixed: GITHUB-137: Main parameters with a default value should be overridden if a main parameter is specified Fixed: GITHUB-107: Allow enum values without converting them to uppercase. 1.30 diff --git a/src/main/java/com/beust/jcommander/JCommander.java b/src/main/java/com/beust/jcommander/JCommander.java index 4f2929e..1bc0084 100644 --- a/src/main/java/com/beust/jcommander/JCommander.java +++ b/src/main/java/com/beust/jcommander/JCommander.java @@ -75,6 +75,8 @@ public class JCommander { */ private List<Object> m_objects = Lists.newArrayList(); + private boolean m_firstTimeMainParameter = true; + /** * This field/method will contain whatever command line parameter is not an option. * It is expected to be a List<String>. @@ -913,6 +915,10 @@ public class JCommander { } m_mainParameter.set(m_mainParameterObject, result); } + if (m_firstTimeMainParameter) { + result.clear(); + m_firstTimeMainParameter = false; + } return result; } @@ -1241,21 +1247,6 @@ public class JCommander { } } - // -// // -// // Try to find a converter in the factory -// // -// IStringConverter<?> converter = null; -// if (converterClass == null && m_converterFactories != null) { -// // Mmmh, javac requires a cast here -// converter = (IStringConverter) m_converterFactories.getConverter(type); -// } - -// if (converterClass == null) { -// throw new ParameterException("Don't know how to convert " + value -// + " to type " + type + " (field: " + field.getName() + ")"); -// } - IStringConverter<?> converter; Object result = null; try { diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 4a84496..4f67f9a 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -964,9 +964,22 @@ public class JCommanderTest { Assert.assertEquals(jc.getUnknownOptions(), Lists.newArrayList("-a", "foo")); } + /** + * GITHUB-137. + */ + public void listArgShouldBeCleared() { + class Args { + @Parameter(description = "[endpoint]") + public List<String> endpoint = Lists.newArrayList("prod"); + } + Args a = new Args(); + new JCommander(a, new String[] { "dev" }); + Assert.assertEquals(a.endpoint, Lists.newArrayList("dev")); + } + @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().enumArgs(); + new JCommanderTest().listParameters(); // listArgShouldBeCleared(); // class A { // @Parameter(names = "-short", required = true) // List<String> parameters; |