diff options
author | Cedric Beust <cedric@beust.com> | 2012-05-02 11:58:20 -0700 |
---|---|---|
committer | Cedric Beust <cedric@beust.com> | 2012-05-02 11:58:20 -0700 |
commit | 5219e93646ed740bd837e4e6b6033bc4391135ba (patch) | |
tree | f6c363ff73170abd8c75aba001b8509e7ac6d557 | |
parent | f5e6e36c4ff570c4ed65699d3e9edebb92446619 (diff) | |
download | jcommander-5219e93646ed740bd837e4e6b6033bc4391135ba.tar.gz |
Merge.
-rw-r--r-- | CHANGELOG | 4 | ||||
-rw-r--r-- | doc/index.html | 25 | ||||
-rw-r--r-- | pom.xml | 2 | ||||
-rw-r--r-- | src/main/java/com/beust/jcommander/ParameterDescription.java | 3 | ||||
-rw-r--r-- | src/test/java/com/beust/jcommander/JCommanderTest.java | 22 |
5 files changed, 44 insertions, 12 deletions
@@ -1,10 +1,10 @@ Current Fixed: bug with several multiple arity parameters (VariableArityTest) +Fixed: variable arities not working when same parameter appears multiple times. 1.25 -2012/04/22 - +2012/04/26 Added: Default passwords are no longer displayed in the usage (Paul Mendelson) Added: Variable arities now work magically, no need for IVariableArity any more Fixed: Commands using @Parameters(resourceBundle) were not i18n'ed properly in the usage() diff --git a/doc/index.html b/doc/index.html index 61728d5..de5d755 100644 --- a/doc/index.html +++ b/doc/index.html @@ -37,6 +37,11 @@ Created: July 13th, 2010 </td> </tr> + <tr> + <td align="right"> + Last updated: April 25th, 2012 + </td> + </tr> <tr><td align="right"><a href="mailto:cedric@beust.com">Cédric Beust</a></td></tr> </table> @@ -426,6 +431,8 @@ java Main @/tmp/parameters <h2><a class="section" name="Arities">Arities (multiple values for parameters)</a></h2> +<h3><a class="section" name="fixed-arities" indent="..">Fixed arities</a></h3> + If some of your parameters require more than one value, such as the following example where two values are expected after <tt>-pairs</tt>: @@ -452,6 +459,22 @@ parameters that define an arity. You will have to convert these values yourself if the parameters you need are of type <tt>Integer</tt> or other (this limitation is due to Java's erasure). +<h3><a class="section" name="variable-arities" indent="..">Variable arities</a></h3> + +You can specify that a parameter can receive an indefinite number of parameters, up to the next option. For example: + +<pre class="brush: java"> +program -foo a1 a2 a3 -bar +program -foo a1 -bar +</pre> + +Such a parameter must be of type <tt>List<String></tt> and have the boolean <tt>variableArity</tt> set to <tt>true</tt> + +<pre class="brush: java"> +@Parameter(names = "-foo", variableArity = true) +public List<String> foo = new ArrayList<String>(); +</pre> + <h2><a class="section" name="Multiple_option_names">Multiple option names</a></h2> You can specify more than one option name: @@ -745,7 +768,7 @@ You can download JCommander from the following locations: <dependency> <groupId>com.beust</groupId> <artifactId>jcommander</artifactId> - <version>1.20</version> + <version>1.25</version> </dependency> </pre> @@ -24,7 +24,7 @@ <artifactId>jcommander</artifactId> <packaging>jar</packaging> <name>JCommander</name> - <version>1.24-SNAPSHOT</version> + <version>1.26-SNAPSHOT</version> <description>A Java framework to parse command line options with annotations.</description> <url>http://beust.com/jcommander</url> <licenses> diff --git a/src/main/java/com/beust/jcommander/ParameterDescription.java b/src/main/java/com/beust/jcommander/ParameterDescription.java index 4b77478..832a25b 100644 --- a/src/main/java/com/beust/jcommander/ParameterDescription.java +++ b/src/main/java/com/beust/jcommander/ParameterDescription.java @@ -233,8 +233,7 @@ public class ParameterDescription { + " to parameter:" + m_field.getName()); String name = m_wrappedParameter.names()[0]; if (m_assigned && ! isMultiOption()) { - throw new ParameterException("Can only specify option " + name - + " once."); + throw new ParameterException("Can only specify option " + name + " once."); } validateParameter(name, value); diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index 01b7c1c..89e1c02 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -701,11 +701,21 @@ public class JCommanderTest { private List<String> paramB = Lists.newArrayList(); } - String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "b2", "b3" }; - Params p = new Params(); - new JCommander(p, args).parse(); - Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2" })); - Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1", "b2", "b3" })); + { + String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "b2", "b3" }; + Params p = new Params(); + new JCommander(p, args).parse(); + Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2" })); + Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1", "b2", "b3" })); + } + + { + String args[] = { "-paramA", "a1", "a2", "-paramB", "b1", "-paramA", "a3" }; + Params p = new Params(); + new JCommander(p, args).parse(); + Assert.assertEquals(p.paramA, Arrays.asList(new String[] { "a1", "a2", "a3" })); + Assert.assertEquals(p.paramB, Arrays.asList(new String[] { "b1" })); + } } @Test(enabled = false, @@ -724,7 +734,7 @@ public class JCommanderTest { @Test(enabled = false) public static void main(String[] args) throws Exception { - new JCommanderTest().commandKey(); + new JCommanderTest().multiVariableArityList(); // System.out.println("Help:" + a.help); // System.out.println("A"); // class A { |