summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric Beust <cedric@beust.com>2012-05-02 11:58:20 -0700
committerCedric Beust <cedric@beust.com>2012-05-02 11:58:20 -0700
commit5219e93646ed740bd837e4e6b6033bc4391135ba (patch)
treef6c363ff73170abd8c75aba001b8509e7ac6d557
parentf5e6e36c4ff570c4ed65699d3e9edebb92446619 (diff)
downloadjcommander-5219e93646ed740bd837e4e6b6033bc4391135ba.tar.gz
Merge.
-rw-r--r--CHANGELOG4
-rw-r--r--doc/index.html25
-rw-r--r--pom.xml2
-rw-r--r--src/main/java/com/beust/jcommander/ParameterDescription.java3
-rw-r--r--src/test/java/com/beust/jcommander/JCommanderTest.java22
5 files changed, 44 insertions, 12 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 994f07c..624c6dc 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -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&eacute;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&lt;String&gt;</tt> and have the boolean <tt>variableArity</tt> set to <tt>true</tt>
+
+<pre class="brush: java">
+@Parameter(names = "-foo", variableArity = true)
+public List&lt;String&gt; foo = new ArrayList&lt;String&gt;();
+</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>
&lt;groupId&gt;com.beust&lt;/groupId&gt;
&lt;artifactId&gt;jcommander&lt;/artifactId&gt;
- &lt;version&gt;1.20&lt;/version&gt;
+ &lt;version&gt;1.25&lt;/version&gt;
</dependency>
</pre>
diff --git a/pom.xml b/pom.xml
index ec7cacf..8486308 100644
--- a/pom.xml
+++ b/pom.xml
@@ -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 {