<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:www.nabble.com,2006:forum-317</id>
	<title>Nabble - Commons - Dev</title>
	<updated>2008-07-24T16:57:49Z</updated>
	<link rel="self" type="application/atom+xml" href="http://www.nabble.com/Commons---Dev-f317.xml" />
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Commons---Dev-f317.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:www.nabble.com,2006:post-18642857</id>
	<title>Re: [cli] Avalon CLI vs Commons CLI 1.x</title>
	<published>2008-07-24T16:57:49Z</published>
	<updated>2008-07-24T16:57:49Z</updated>
	<author>
		<name>ebourg</name>
	</author>
	<content type="html">Jörg Schaible a écrit :
&lt;br&gt;&lt;br&gt;&amp;gt; Hmmm. I always thought that using the long option the '=' is mandatory while
&lt;br&gt;&amp;gt; for a short option space is optional. 
&lt;br&gt;&lt;br&gt;I checked the documentation for getopt [1], the '=' sign after a long 
&lt;br&gt;option is required only if the argument is optional. Same thing for the 
&lt;br&gt;short options, if the argument is optional it must be grouped with the 
&lt;br&gt;option (-O1 and not -O 1).
&lt;br&gt;&lt;br&gt;So Avalon CLI is right. The catch now if we implement this is to decide 
&lt;br&gt;how multiple optional arguments are handled. I guess this would make the 
&lt;br&gt;value separator mandatory:
&lt;br&gt;&lt;br&gt;--foo=a,b,c
&lt;br&gt;&lt;br&gt;or
&lt;br&gt;&lt;br&gt;-fa,b,c
&lt;br&gt;&lt;br&gt;Emmanuel Bourg
&lt;br&gt;&lt;br&gt;&lt;br&gt;[1] &lt;a href=&quot;http://www.urbanophile.com/arenn/hacking/getopt/gnu.getopt.Getopt.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.urbanophile.com/arenn/hacking/getopt/gnu.getopt.Getopt.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18642857&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dev-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18642857&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dev-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/-cli--Avalon-CLI-vs-Commons-CLI-1.x-tp18595287p18642857.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18642141</id>
	<title>svn commit: r679606 - in /commons/proper/cli/branches/cli-1.x/src: java/org/apache/commons/cli/AlreadySelectedException.java java/org/apache/commons/cli/OptionGroup.java test/org/apache/commons/cli/OptionGroupTest.java</title>
	<published>2008-07-24T15:55:59Z</published>
	<updated>2008-07-24T15:55:59Z</updated>
	<author>
		<name>ebourg</name>
	</author>
	<content type="html">Author: ebourg
&lt;br&gt;Date: Thu Jul 24 15:55:58 2008
&lt;br&gt;New Revision: 679606
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=679606&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=679606&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;Changed AlreadySelectedException to include the related option group and the option that triggered the exception
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/AlreadySelectedException.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/OptionGroup.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/OptionGroupTest.java
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/AlreadySelectedException.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/AlreadySelectedException.java?rev=679606&amp;r1=679605&amp;r2=679606&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/AlreadySelectedException.java?rev=679606&amp;r1=679605&amp;r2=679606&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/AlreadySelectedException.java (original)
&lt;br&gt;+++ commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/AlreadySelectedException.java Thu Jul 24 15:55:58 2008
&lt;br&gt;@@ -26,6 +26,12 @@
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;&amp;nbsp;public class AlreadySelectedException extends ParseException
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/** The option group selected. */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private OptionGroup group;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/** The option that triggered the exception. */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Option option;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Construct a new &amp;lt;code&amp;gt;AlreadySelectedException&amp;lt;/code&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * with the specified detail message.
&lt;br&gt;@@ -36,4 +42,40 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super(message);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Construct a new &amp;lt;code&amp;gt;AlreadySelectedException&amp;lt;/code&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * for the specified option group.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; *
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @param group &amp;nbsp;the option group already selected
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @param option the option that triggered the exception
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @since 1.2
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public AlreadySelectedException(OptionGroup group, Option option)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this(&amp;quot;The option '&amp;quot; + option.getKey() + &amp;quot;' was specified but an option from this group &amp;quot; +
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;has already been selected: '&amp;quot; + group.getSelected() + &amp;quot;'&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.group = group;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.option = option;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Returns the option group where another option has been selected.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; *
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @since 1.2
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public OptionGroup getOptionGroup()
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return group;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Returns the option that was added to the group and triggered the exception.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; *
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @since 1.2
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public Option getOption()
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return option;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/OptionGroup.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/OptionGroup.java?rev=679606&amp;r1=679605&amp;r2=679606&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/OptionGroup.java?rev=679606&amp;r1=679605&amp;r2=679606&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/OptionGroup.java (original)
&lt;br&gt;+++ commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/OptionGroup.java Thu Jul 24 15:55:58 2008
&lt;br&gt;@@ -14,15 +14,18 @@
&lt;br&gt;&amp;nbsp; * See the License for the specific language governing permissions and
&lt;br&gt;&amp;nbsp; * limitations under the License.
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;package org.apache.commons.cli;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import java.io.Serializable;
&lt;br&gt;&amp;nbsp;import java.util.Collection;
&lt;br&gt;&amp;nbsp;import java.util.HashMap;
&lt;br&gt;&amp;nbsp;import java.util.Iterator;
&lt;br&gt;+import java.util.Map;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * A group of mutually exclusive options.
&lt;br&gt;+ *
&lt;br&gt;&amp;nbsp; * @author John Keyes ( john at integralsource.com )
&lt;br&gt;&amp;nbsp; * @version $Revision$
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;@@ -31,7 +34,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private static final long serialVersionUID = 1L;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/** hold the options */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private HashMap optionMap = new HashMap();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Map optionMap = new HashMap();
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/** the name of the selected option */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private String selected;
&lt;br&gt;@@ -40,16 +43,16 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private boolean required;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * add &amp;lt;code&amp;gt;opt&amp;lt;/code&amp;gt; to this group
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Add the specified &amp;lt;code&amp;gt;Option&amp;lt;/code&amp;gt; to this group.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; *
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * @param opt the option to add to this group
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * @return this option group with opt added
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @param option the option to add to this group
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @return this option group with the option added
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public OptionGroup addOption(Option opt)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public OptionGroup addOption(Option option)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// key &amp;nbsp; - option name
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// value - the option
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;optionMap.put(opt.getKey(), opt);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;optionMap.put(option.getKey(), option);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return this;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -75,25 +78,22 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * set the selected option of this group to &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * @param opt the option that is selected
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @param option the option that is selected
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * @throws AlreadySelectedException if an option from this group has 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * already been selected.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void setSelected(Option opt)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throws AlreadySelectedException
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setSelected(Option option) throws AlreadySelectedException
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// if no option has already been selected or the 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// same option is being reselected then set the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// selected member variable
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((this.selected == null) || this.selected.equals(opt.getOpt()))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((this.selected == null) || this.selected.equals(option.getOpt()))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.selected = opt.getOpt();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.selected = option.getOpt();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new AlreadySelectedException(&amp;quot;an option from this group has &amp;quot;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + &amp;quot;already been selected: '&amp;quot;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + selected + &amp;quot;'&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new AlreadySelectedException(this, option);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -163,4 +163,4 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return buff.toString();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-}
&lt;br&gt;\ No newline at end of file
&lt;br&gt;+}
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/OptionGroupTest.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/OptionGroupTest.java?rev=679606&amp;r1=679605&amp;r2=679606&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/OptionGroupTest.java?rev=679606&amp;r1=679605&amp;r2=679606&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/OptionGroupTest.java (original)
&lt;br&gt;+++ commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/OptionGroupTest.java Thu Jul 24 15:55:58 2008
&lt;br&gt;@@ -139,7 +139,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue( &amp;quot;Confirm TWO extra args&amp;quot;, cl.getArgList().size() == 2);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void testTwoOptionsFromGroup()
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testTwoOptionsFromGroup() throws Exception
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] args = new String[] { &amp;quot;-f&amp;quot;, &amp;quot;-d&amp;quot; };
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -148,16 +148,15 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.parse( _options, args);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail( &amp;quot;two arguments from group not allowed&amp;quot; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;catch (ParseException e)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;catch (AlreadySelectedException e)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( !( e instanceof AlreadySelectedException ) )
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail( &amp;quot;incorrect exception caught:&amp;quot; + e.getMessage() );
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotNull(&amp;quot;null option group&amp;quot;, e.getOptionGroup());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;selected option&amp;quot;, &amp;quot;f&amp;quot;, e.getOptionGroup().getSelected());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;option&amp;quot;, &amp;quot;d&amp;quot;, e.getOption().getOpt());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void testTwoLongOptionsFromGroup()
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testTwoLongOptionsFromGroup() throws Exception
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] args = new String[] { &amp;quot;--file&amp;quot;, &amp;quot;--directory&amp;quot; };
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -166,12 +165,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.parse(_options, args);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail( &amp;quot;two arguments from group not allowed&amp;quot; );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;catch (ParseException e)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;catch (AlreadySelectedException e)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( !( e instanceof AlreadySelectedException ) )
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail( &amp;quot;incorrect exception caught:&amp;quot; + e.getMessage() );
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotNull(&amp;quot;null option group&amp;quot;, e.getOptionGroup());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;selected option&amp;quot;, &amp;quot;f&amp;quot;, e.getOptionGroup().getSelected());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;option&amp;quot;, &amp;quot;d&amp;quot;, e.getOption().getOpt());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/svn-commit%3A-r679606---in--commons-proper-cli-branches-cli-1.x-src%3A-java-org-apache-commons-cli-AlreadySelectedException.java-java-org-apache-commons-cli-OptionGroup.java-test-org-apache-commons-cli-OptionGroupTest.java-tp18642141p18642141.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18641785</id>
	<title>svn commit: r679583 - in /commons/proper/cli/branches/cli-1.x/src: java/org/apache/commons/cli/ test/org/apache/commons/cli/</title>
	<published>2008-07-24T15:25:41Z</published>
	<updated>2008-07-24T15:25:41Z</updated>
	<author>
		<name>ebourg</name>
	</author>
	<content type="html">Author: ebourg
&lt;br&gt;Date: Thu Jul 24 15:25:38 2008
&lt;br&gt;New Revision: 679583
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=679583&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=679583&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;Changed UnrecognizedOptionException to include the option that wasn't recognized
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/Parser.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/UnrecognizedOptionException.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/GnuParserTest.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/PosixParserTest.java
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/Parser.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/Parser.java?rev=679583&amp;r1=679582&amp;r2=679583&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/Parser.java?rev=679583&amp;r1=679582&amp;r2=679583&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/Parser.java (original)
&lt;br&gt;+++ commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/Parser.java Thu Jul 24 15:25:38 2008
&lt;br&gt;@@ -379,8 +379,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// if there is no option throw an UnrecognisedOptionException
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!hasOption)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new UnrecognizedOptionException(&amp;quot;Unrecognized option: &amp;quot; 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ arg);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new UnrecognizedOptionException(&amp;quot;Unrecognized option: &amp;quot; + arg, arg);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// get the option represented by arg
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/UnrecognizedOptionException.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/UnrecognizedOptionException.java?rev=679583&amp;r1=679582&amp;r2=679583&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/UnrecognizedOptionException.java?rev=679583&amp;r1=679582&amp;r2=679583&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/UnrecognizedOptionException.java (original)
&lt;br&gt;+++ commons/proper/cli/branches/cli-1.x/src/java/org/apache/commons/cli/UnrecognizedOptionException.java Thu Jul 24 15:25:38 2008
&lt;br&gt;@@ -26,6 +26,9 @@
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;&amp;nbsp;public class UnrecognizedOptionException extends ParseException
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/** The &amp;nbsp;unrecognized option */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private String option;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Construct a new &amp;lt;code&amp;gt;UnrecognizedArgumentException&amp;lt;/code&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * with the specified detail message.
&lt;br&gt;@@ -36,4 +39,28 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super(message);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Construct a new &amp;lt;code&amp;gt;UnrecognizedArgumentException&amp;lt;/code&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * with the specified option and detail message.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; *
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @param message the detail message
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @param option &amp;nbsp;the unrecognized option
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @since 1.2
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public UnrecognizedOptionException(String message, String option)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this(message);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.option = option;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Returns the unrecognized option.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; *
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @since 1.2
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public String getOption()
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return option;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/GnuParserTest.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/GnuParserTest.java?rev=679583&amp;r1=679582&amp;r2=679583&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/GnuParserTest.java?rev=679583&amp;r1=679582&amp;r2=679583&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/GnuParserTest.java (original)
&lt;br&gt;+++ commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/GnuParserTest.java Thu Jul 24 15:25:38 2008
&lt;br&gt;@@ -65,28 +65,19 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(&amp;quot;Confirm size of extra args&amp;quot;, cl.getArgList().size() == 2);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void testExtraOption() throws Exception
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testUnrecognizedOption() throws Exception
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] args = new String[] { &amp;quot;-a&amp;quot;, &amp;quot;-d&amp;quot;, &amp;quot;-b&amp;quot;, &amp;quot;toast&amp;quot;,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;foo&amp;quot;, &amp;quot;bar&amp;quot; };
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;boolean caught = false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] args = new String[] { &amp;quot;-a&amp;quot;, &amp;quot;-d&amp;quot;, &amp;quot;-b&amp;quot;, &amp;quot;toast&amp;quot;, &amp;quot;foo&amp;quot;, &amp;quot;bar&amp;quot; };
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CommandLine cl = parser.parse(options, args);
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(&amp;quot;Confirm -a is set&amp;quot;, cl.hasOption(&amp;quot;a&amp;quot;));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(&amp;quot;Confirm -b is set&amp;quot;, cl.hasOption(&amp;quot;b&amp;quot;));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(&amp;quot;confirm arg of -b&amp;quot;, cl.getOptionValue(&amp;quot;b&amp;quot;).equals(&amp;quot;toast&amp;quot;));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(&amp;quot;Confirm size of extra args&amp;quot;, cl.getArgList().size() == 3);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.parse(options, args);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;UnrecognizedOptionException wasn't thrown&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;catch (UnrecognizedOptionException e)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;caught = true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;-d&amp;quot;, e.getOption());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue( &amp;quot;Confirm UnrecognizedOptionException caught&amp;quot;, caught );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testMissingArg() throws Exception
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/PosixParserTest.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/PosixParserTest.java?rev=679583&amp;r1=679582&amp;r2=679583&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/PosixParserTest.java?rev=679583&amp;r1=679582&amp;r2=679583&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/PosixParserTest.java (original)
&lt;br&gt;+++ commons/proper/cli/branches/cli-1.x/src/test/org/apache/commons/cli/PosixParserTest.java Thu Jul 24 15:25:38 2008
&lt;br&gt;@@ -85,28 +85,19 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue( &amp;quot;Confirm size of extra args&amp;quot;, cl.getArgList().size() == 2);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void testExtraOption() throws Exception
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testUnrecognizedOption() throws Exception
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] args = new String[] { &amp;quot;-adbtoast&amp;quot;,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;foo&amp;quot;, &amp;quot;bar&amp;quot; };
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;boolean caught = false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] args = new String[] { &amp;quot;-adbtoast&amp;quot;, &amp;quot;foo&amp;quot;, &amp;quot;bar&amp;quot; };
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CommandLine cl = parser.parse(options, args);
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue( &amp;quot;Confirm -a is set&amp;quot;, cl.hasOption(&amp;quot;a&amp;quot;) );
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue( &amp;quot;Confirm -b is set&amp;quot;, cl.hasOption(&amp;quot;b&amp;quot;) );
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue( &amp;quot;confirm arg of -b&amp;quot;, cl.getOptionValue(&amp;quot;b&amp;quot;).equals(&amp;quot;toast&amp;quot;) );
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue( &amp;quot;Confirm size of extra args&amp;quot;, cl.getArgList().size() == 3);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.parse(options, args);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;UnrecognizedOptionException wasn't thrown&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;catch (UnrecognizedOptionException e)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;caught = true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;-adbtoast&amp;quot;, e.getOption());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue( &amp;quot;Confirm UnrecognizedOptionException caught&amp;quot;, caught );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testMissingArg() throws Exception
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/svn-commit%3A-r679583---in--commons-proper-cli-branches-cli-1.x-src%3A-java-org-apache-commons-cli--test-org-apache-commons-cli--tp18641785p18641785.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18639972</id>
	<title>svn commit: r679530 - in /commons/proper/cli/trunk/src: java/org/apache/commons/cli2/ java/org/apache/commons/cli2/commandline/ java/org/apache/commons/cli2/option/ test/org/apache/commons/cli2/ test/org/apache/commons/cli2/bug/</title>
	<published>2008-07-24T13:28:17Z</published>
	<updated>2008-07-24T13:28:17Z</updated>
	<author>
		<name>oheger</name>
	</author>
	<content type="html">Author: oheger
&lt;br&gt;Date: Thu Jul 24 13:28:16 2008
&lt;br&gt;New Revision: 679530
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=679530&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=679530&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;CLI-123: Groups are now added to the command line if any of their child options are found. This makes it possible to test for the presence of a group and also validate minimum and maximum constraints when child groups are involved.
&lt;br&gt;&lt;br&gt;Added:
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI123Test.java &amp;nbsp; (with props)
&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/trunk/src/java/org/apache/commons/cli2/Option.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/GroupImpl.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/OptionImpl.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/trunk/src/test/org/apache/commons/cli2/CommandLineTestCase.java
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/Option.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/Option.java?rev=679530&amp;r1=679529&amp;r2=679530&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/Option.java?rev=679530&amp;r1=679529&amp;r2=679530&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/Option.java (original)
&lt;br&gt;+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/Option.java Thu Jul 24 13:28:16 2008
&lt;br&gt;@@ -194,4 +194,25 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * @return true iff the CommandLine will be invalid without this Option
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;boolean isRequired();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Returns the parent of this option. Options can be organized in a
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * hierarchical manner if they are added to groups. This method can be used
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * for obtaining the parent option of this option. The result may be
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * &amp;lt;b&amp;gt;null&amp;lt;/b&amp;gt; if this option does not have a parent.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; *
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @return the parent of this option
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;Option getParent();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Sets the parent of this option. This method is called when the option is
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * added to a group. Storing the parent of an option makes it possible to
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * keep track of hierarchical relations between options. For instance, if an
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * option is identified while parsing a command line, the group this option
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * belongs to can also be added to the command line.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; *
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @param parent the parent option
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;void setParent(Option parent);
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java?rev=679530&amp;r1=679529&amp;r2=679530&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java?rev=679530&amp;r1=679529&amp;r2=679530&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java (original)
&lt;br&gt;+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java Thu Jul 24 13:28:16 2008
&lt;br&gt;@@ -69,6 +69,13 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Iterator i = option.getTriggers().iterator(); i.hasNext();) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;nameToOption.put(i.next(), option);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// ensure that all parent options are also added
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Option parent = option.getParent();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (parent != null &amp;&amp; !options.contains(parent)) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;options.add(parent);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parent = parent.getParent();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void addValue(final Option option,
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/GroupImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/GroupImpl.java?rev=679530&amp;r1=679529&amp;r2=679530&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/GroupImpl.java?rev=679530&amp;r1=679529&amp;r2=679530&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/GroupImpl.java (original)
&lt;br&gt;+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/GroupImpl.java Thu Jul 24 13:28:16 2008
&lt;br&gt;@@ -89,6 +89,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// process the options
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (final Iterator i = options.iterator(); i.hasNext();) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final Option option = (Option) i.next();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;option.setParent(this);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (option instanceof Argument) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;i.remove();
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/OptionImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/OptionImpl.java?rev=679530&amp;r1=679529&amp;r2=679530&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/OptionImpl.java?rev=679530&amp;r1=679529&amp;r2=679530&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/OptionImpl.java (original)
&lt;br&gt;+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/OptionImpl.java Thu Jul 24 13:28:16 2008
&lt;br&gt;@@ -33,6 +33,7 @@
&lt;br&gt;&amp;nbsp;public abstract class OptionImpl implements Option {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private final int id;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private final boolean required;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Option parent;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Creates an OptionImpl with the specified id
&lt;br&gt;@@ -95,7 +96,9 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public int hashCode() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int hashCode = getId();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;hashCode = (hashCode * 37) + getPreferredName().hashCode();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getPreferredName() != null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;hashCode = (hashCode * 37) + getPreferredName().hashCode();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getDescription() != null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;hashCode = (hashCode * 37) + getDescription().hashCode();
&lt;br&gt;@@ -123,6 +126,14 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// nothing to do normally
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public Option getParent() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return parent;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setParent(Option parent) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.parent = parent;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected void checkPrefixes(final Set prefixes) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// nothing to do if empty prefix list
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (prefixes.isEmpty()) {
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/CommandLineTestCase.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/CommandLineTestCase.java?rev=679530&amp;r1=679529&amp;r2=679530&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/CommandLineTestCase.java?rev=679530&amp;r1=679529&amp;r2=679530&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/trunk/src/test/org/apache/commons/cli2/CommandLineTestCase.java (original)
&lt;br&gt;+++ commons/proper/cli/trunk/src/test/org/apache/commons/cli2/CommandLineTestCase.java Thu Jul 24 13:28:16 2008
&lt;br&gt;@@ -433,6 +433,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final Iterator i = cl.getOptions().iterator();
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertSame(login, i.next());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertSame(group, i.next());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertSame(help, i.next());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertSame(targets, i.next());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertSame(targets, i.next());
&lt;br&gt;&lt;br&gt;Added: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI123Test.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI123Test.java?rev=679530&amp;view=auto&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI123Test.java?rev=679530&amp;view=auto&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI123Test.java (added)
&lt;br&gt;+++ commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI123Test.java Thu Jul 24 13:28:16 2008
&lt;br&gt;@@ -0,0 +1,126 @@
&lt;br&gt;+/**
&lt;br&gt;+ * Licensed to the Apache Software Foundation (ASF) under one or more
&lt;br&gt;+ * contributor license agreements. &amp;nbsp;See the NOTICE file distributed with
&lt;br&gt;+ * this work for additional information regarding copyright ownership.
&lt;br&gt;+ * The ASF licenses this file to You under the Apache License, Version 2.0
&lt;br&gt;+ * (the &amp;quot;License&amp;quot;); you may not use this file except in compliance with
&lt;br&gt;+ * the License. &amp;nbsp;You may obtain a copy of the License at
&lt;br&gt;+ *
&lt;br&gt;+ * &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br&gt;+ *
&lt;br&gt;+ * Unless required by applicable law or agreed to in writing, software
&lt;br&gt;+ * distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,
&lt;br&gt;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
&lt;br&gt;+ * See the License for the specific language governing permissions and
&lt;br&gt;+ * limitations under the License.
&lt;br&gt;+ */
&lt;br&gt;+package org.apache.commons.cli2.bug;
&lt;br&gt;+
&lt;br&gt;+import junit.framework.TestCase;
&lt;br&gt;+
&lt;br&gt;+import org.apache.commons.cli2.CommandLine;
&lt;br&gt;+import org.apache.commons.cli2.Group;
&lt;br&gt;+import org.apache.commons.cli2.Option;
&lt;br&gt;+import org.apache.commons.cli2.OptionException;
&lt;br&gt;+import org.apache.commons.cli2.builder.ArgumentBuilder;
&lt;br&gt;+import org.apache.commons.cli2.builder.DefaultOptionBuilder;
&lt;br&gt;+import org.apache.commons.cli2.builder.GroupBuilder;
&lt;br&gt;+import org.apache.commons.cli2.commandline.Parser;
&lt;br&gt;+
&lt;br&gt;+/**
&lt;br&gt;+ * Group options are not added to the command line when child elements are
&lt;br&gt;+ * detected. This causes the validation of maximum and minimum to fail.
&lt;br&gt;+ *
&lt;br&gt;+ * @author Oliver Heger
&lt;br&gt;+ * @version $Id$
&lt;br&gt;+ */
&lt;br&gt;+public class BugCLI123Test extends TestCase {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/** An option of the parent group. */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Option parentOption;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/** An option of the child group. */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Option childOption1;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/** Another option of the child group. */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Option childOption2;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/** The parent group. */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Group parentGroup;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/** The child group. */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Group childGroup;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/** The parser. */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Parser parser;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected void setUp() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setUp();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final ArgumentBuilder abuilder = new ArgumentBuilder();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final GroupBuilder gbuilder = new GroupBuilder();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parentOption = obuilder.withLongName(&amp;quot;parent&amp;quot;).withShortName(&amp;quot;p&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withArgument(abuilder.withName(&amp;quot;name&amp;quot;).create()).create();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;childOption1 = obuilder.withLongName(&amp;quot;child&amp;quot;).withShortName(&amp;quot;c&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withArgument(abuilder.withName(&amp;quot;c&amp;quot;).create()).create();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;childOption2 = obuilder.withLongName(&amp;quot;sub&amp;quot;).withShortName(&amp;quot;s&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withArgument(abuilder.withName(&amp;quot;s&amp;quot;).create()).create();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;childGroup = gbuilder.withName(&amp;quot;childOptions&amp;quot;).withMinimum(0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withMaximum(2).withOption(childOption1).withOption(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;childOption2).create();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parentGroup = gbuilder.withName(&amp;quot;parentOptions&amp;quot;).withMinimum(1)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withMaximum(1).withOption(parentOption).withOption(childGroup)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.create();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser = new Parser();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.setGroup(parentGroup);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * A single option of the child group is specified.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testSingleChildOption() throws OptionException {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CommandLine cl = parser.parse(new String[] { &amp;quot;--child&amp;quot;, &amp;quot;test&amp;quot; });
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(&amp;quot;Child option not found&amp;quot;, cl.hasOption(childOption1));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Wrong value for option&amp;quot;, &amp;quot;test&amp;quot;, cl
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.getValue(childOption1));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(&amp;quot;Child group not found&amp;quot;, cl.hasOption(childGroup));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Two options of the child group are specified.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testMultipleChildOptions() throws OptionException {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CommandLine cl = parser.parse(new String[] { &amp;quot;--child&amp;quot;, &amp;quot;test&amp;quot;,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;--sub&amp;quot;, &amp;quot;anotherTest&amp;quot; });
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(&amp;quot;Child option not found&amp;quot;, cl.hasOption(childOption1));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Wrong value for option&amp;quot;, &amp;quot;test&amp;quot;, cl
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.getValue(childOption1));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(&amp;quot;Sub option not found&amp;quot;, cl.hasOption(childOption2));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Wrong value for sub option&amp;quot;, &amp;quot;anotherTest&amp;quot;, cl
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.getValue(childOption2));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(&amp;quot;Child group not found&amp;quot;, cl.hasOption(childGroup));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * The option defined for the parent group is specified.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testSingleParentOption() throws OptionException {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CommandLine cl = parser.parse(new String[] { &amp;quot;--parent&amp;quot;, &amp;quot;yes&amp;quot; });
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(&amp;quot;Parent option not found&amp;quot;, cl.hasOption(parentOption));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Wrong value for option&amp;quot;, &amp;quot;yes&amp;quot;, cl.getValue(parentOption));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertFalse(&amp;quot;Found child group&amp;quot;, cl.hasOption(childGroup));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * The parent option and an option of the child group is specified. This
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * should cause an exception.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testParentOptionAndChildOption() throws OptionException {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.parse(new String[] { &amp;quot;--parent&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;--child&amp;quot;,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;exception&amp;quot; });
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;Maximum restriction for parent not verified!&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (OptionException oex) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// ok
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+}
&lt;br&gt;&lt;br&gt;Propchange: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI123Test.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:eol-style = native
&lt;br&gt;&lt;br&gt;Propchange: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI123Test.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:keywords = Date Author Id Revision HeadURL
&lt;br&gt;&lt;br&gt;Propchange: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI123Test.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:mime-type = text/plain
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/svn-commit%3A-r679530---in--commons-proper-cli-trunk-src%3A-java-org-apache-commons-cli2--java-org-apache-commons-cli2-commandline--java-org-apache-commons-cli2-option--test-org-apache-commons-cli2--test-org-apache-commons-cli2-bug--tp18639972p18639972.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18639267</id>
	<title>svn commit: r679516 - /commons/proper/cli/trunk/src/test/org/apache/commons/cli2/commandline/ParserTest.java</title>
	<published>2008-07-24T12:46:30Z</published>
	<updated>2008-07-24T12:46:30Z</updated>
	<author>
		<name>oheger</name>
	</author>
	<content type="html">Author: oheger
&lt;br&gt;Date: Thu Jul 24 12:46:30 2008
&lt;br&gt;New Revision: 679516
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=679516&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=679516&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;CLI-6: Added an additional test case to verify that unknown short options cause an exception.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/trunk/src/test/org/apache/commons/cli2/commandline/ParserTest.java
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/commandline/ParserTest.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/commandline/ParserTest.java?rev=679516&amp;r1=679515&amp;r2=679516&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/commandline/ParserTest.java?rev=679516&amp;r1=679515&amp;r2=679516&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/trunk/src/test/org/apache/commons/cli2/commandline/ParserTest.java (original)
&lt;br&gt;+++ commons/proper/cli/trunk/src/test/org/apache/commons/cli2/commandline/ParserTest.java Thu Jul 24 12:46:30 2008
&lt;br&gt;@@ -82,6 +82,17 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testParse_WithUnexpectedShortOption() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.parse(new String[]{&amp;quot;-vx&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;OptionException&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;catch(OptionException e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(options,e.getOption());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Unexpected -x while processing --help|--verbose&amp;quot;,e.getMessage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testParseAndHelp_Successful() throws IOException {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final CommandLine cl = parser.parseAndHelp(new String[]{&amp;quot;-v&amp;quot;});
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/svn-commit%3A-r679516----commons-proper-cli-trunk-src-test-org-apache-commons-cli2-commandline-ParserTest.java-tp18639267p18639267.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18639096</id>
	<title>svn commit: r679511 - in /commons/proper/cli/trunk/src: java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java test/org/apache/commons/cli2/bug/BugCLI158Test.java</title>
	<published>2008-07-24T12:38:04Z</published>
	<updated>2008-07-24T12:38:04Z</updated>
	<author>
		<name>oheger</name>
	</author>
	<content type="html">Author: oheger
&lt;br&gt;Date: Thu Jul 24 12:38:04 2008
&lt;br&gt;New Revision: 679511
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=679511&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=679511&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;CLI-158: Default arguments are now applied even if arguments are passed. The default values for missing arguments will be set.
&lt;br&gt;Thanks to tobias dot bocanegra at day dot com for the patch.
&lt;br&gt;&lt;br&gt;Added:
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI158Test.java &amp;nbsp; (with props)
&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java?rev=679511&amp;r1=679510&amp;r2=679511&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java?rev=679511&amp;r1=679510&amp;r2=679511&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java (original)
&lt;br&gt;+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/WriteableCommandLineImpl.java Thu Jul 24 12:38:04 2008
&lt;br&gt;@@ -109,26 +109,33 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public List getValues(final Option option,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final List defaultValues) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// First grab the command line values
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List defaultValues) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// initialize the return list
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List valueList = (List) values.get(option);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Secondly try the defaults supplied to the method
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((valueList == null) || valueList.isEmpty()) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;valueList = defaultValues;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Thirdly try the option's default values
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((valueList == null) || valueList.isEmpty()) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;valueList = (List) this.defaultValues.get(option);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// grab the correct default values
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (defaultValues == null || defaultValues.isEmpty()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;defaultValues = (List) this.defaultValues.get(option);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Finally use an empty list
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (valueList == null) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;valueList = Collections.EMPTY_LIST;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// augment the list with the default values
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (defaultValues != null &amp;&amp; !defaultValues.isEmpty()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (valueList == null || valueList.isEmpty()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;valueList = defaultValues;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// if there are more default values as specified, add them to
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// the list.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (defaultValues.size() &amp;gt; valueList.size()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// copy the list first
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;valueList = new ArrayList(valueList);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i=valueList.size(); i&amp;lt;defaultValues.size(); i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;valueList.add(defaultValues.get(i));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return valueList;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return valueList == null ? Collections.EMPTY_LIST : valueList;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public List getUndefaultedValues(Option option) {
&lt;br&gt;&lt;br&gt;Added: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI158Test.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI158Test.java?rev=679511&amp;view=auto&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI158Test.java?rev=679511&amp;view=auto&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI158Test.java (added)
&lt;br&gt;+++ commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI158Test.java Thu Jul 24 12:38:04 2008
&lt;br&gt;@@ -0,0 +1,114 @@
&lt;br&gt;+/**
&lt;br&gt;+ * Licensed to the Apache Software Foundation (ASF) under one or more
&lt;br&gt;+ * contributor license agreements. &amp;nbsp;See the NOTICE file distributed with
&lt;br&gt;+ * this work for additional information regarding copyright ownership.
&lt;br&gt;+ * The ASF licenses this file to You under the Apache License, Version 2.0
&lt;br&gt;+ * (the &amp;quot;License&amp;quot;); you may not use this file except in compliance with
&lt;br&gt;+ * the License. &amp;nbsp;You may obtain a copy of the License at
&lt;br&gt;+ *
&lt;br&gt;+ * &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br&gt;+ *
&lt;br&gt;+ * Unless required by applicable law or agreed to in writing, software
&lt;br&gt;+ * distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,
&lt;br&gt;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
&lt;br&gt;+ * See the License for the specific language governing permissions and
&lt;br&gt;+ * limitations under the License.
&lt;br&gt;+ */
&lt;br&gt;+package org.apache.commons.cli2.bug;
&lt;br&gt;+
&lt;br&gt;+import java.util.Arrays;
&lt;br&gt;+import java.util.List;
&lt;br&gt;+
&lt;br&gt;+import junit.framework.TestCase;
&lt;br&gt;+
&lt;br&gt;+import org.apache.commons.cli2.CommandLine;
&lt;br&gt;+import org.apache.commons.cli2.Group;
&lt;br&gt;+import org.apache.commons.cli2.builder.ArgumentBuilder;
&lt;br&gt;+import org.apache.commons.cli2.builder.DefaultOptionBuilder;
&lt;br&gt;+import org.apache.commons.cli2.builder.GroupBuilder;
&lt;br&gt;+import org.apache.commons.cli2.commandline.Parser;
&lt;br&gt;+import org.apache.commons.cli2.option.DefaultOption;
&lt;br&gt;+
&lt;br&gt;+/**
&lt;br&gt;+ * &lt;a href=&quot;http://issues.apache.org/jira/browse/CLI-158&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://issues.apache.org/jira/browse/CLI-158&lt;/a&gt;&lt;br&gt;+ */
&lt;br&gt;+public class BugCLI158Test extends TestCase {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Parser createDefaultValueParser(String[] defaults) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final ArgumentBuilder abuilder = new ArgumentBuilder();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final GroupBuilder gbuilder = new GroupBuilder();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DefaultOption bOption = obuilder.withShortName(&amp;quot;b&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withLongName(&amp;quot;b&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withArgument(abuilder.withName(&amp;quot;b&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withMinimum(0)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withMaximum(defaults.length)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withDefaults(Arrays.asList(defaults))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.create())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.create();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Group options = gbuilder
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withName(&amp;quot;options&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withOption(bOption)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.create();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Parser parser = new Parser();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.setHelpTrigger(&amp;quot;--help&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.setGroup(options);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return parser;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testSingleOptionSingleArgument() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Parser parser = createDefaultValueParser(new String[]{&amp;quot;100&amp;quot;, &amp;quot;1000&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String enteredValue1 = &amp;quot;1&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] args = new String[]{&amp;quot;-b&amp;quot;, enteredValue1};
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CommandLine cl = parser.parse(args);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CommandLine cmd = cl;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotNull(cmd);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List b = cmd.getValues(&amp;quot;-b&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;[&amp;quot; + enteredValue1 + &amp;quot;, 1000]&amp;quot;, b + &amp;quot;&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testSingleOptionNoArgument() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Parser parser = createDefaultValueParser(new String[]{&amp;quot;100&amp;quot;, &amp;quot;1000&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] args = new String[]{&amp;quot;-b&amp;quot;};
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CommandLine cl = parser.parse(args);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CommandLine cmd = cl;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotNull(cmd);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List b = cmd.getValues(&amp;quot;-b&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;[100, 1000]&amp;quot;, b + &amp;quot;&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testSingleOptionMaximumNumberOfArgument() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String[] args = new String[]{&amp;quot;-b&amp;quot;, &amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;};
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final ArgumentBuilder abuilder = new ArgumentBuilder();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final GroupBuilder gbuilder = new GroupBuilder();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DefaultOption bOption = obuilder.withShortName(&amp;quot;b&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withLongName(&amp;quot;b&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withArgument(abuilder.withName(&amp;quot;b&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withMinimum(2)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withMaximum(4)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withDefault(&amp;quot;100&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withDefault(&amp;quot;1000&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withDefault(&amp;quot;10000&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.create())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.create();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Group options = gbuilder
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withName(&amp;quot;options&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withOption(bOption)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.create();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Parser parser = new Parser();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.setHelpTrigger(&amp;quot;--help&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.setGroup(options);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CommandLine cl = parser.parse(args);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CommandLine cmd = cl;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotNull(cmd);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List b = cmd.getValues(&amp;quot;-b&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;[1, 2, 10000]&amp;quot;, b + &amp;quot;&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+}
&lt;br&gt;\ No newline at end of file
&lt;br&gt;&lt;br&gt;Propchange: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI158Test.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:eol-style = native
&lt;br&gt;&lt;br&gt;Propchange: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI158Test.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:keywords = Date Author Id Revision HeadURL
&lt;br&gt;&lt;br&gt;Propchange: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI158Test.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:mime-type = text/plain
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/svn-commit%3A-r679511---in--commons-proper-cli-trunk-src%3A-java-org-apache-commons-cli2-commandline-WriteableCommandLineImpl.java-test-org-apache-commons-cli2-bug-BugCLI158Test.java-tp18639096p18639096.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18635713</id>
	<title>Re: [cli] CLI 2 State of Play</title>
	<published>2008-07-24T09:33:05Z</published>
	<updated>2008-07-24T09:33:05Z</updated>
	<author>
		<name>Russel Winder-4</name>
	</author>
	<content type="html">Emmanuel,
&lt;br&gt;&lt;br&gt;Is there a way of triggering the CLI 1.2 release process? &amp;nbsp;Given that
&lt;br&gt;there are significant changes over 1.1 and the idea of a 1.3 is not
&lt;br&gt;rejected, I think moving to a 1.2 release sooner rather than later would
&lt;br&gt;be useful. &amp;nbsp;The only threat I can see is if 1.2 has the same blocking
&lt;br&gt;errors as 1.1 compared to 1.2 and I think you believe that the tests are
&lt;br&gt;in place to show that the reported blocking problems of 1.1 are actually
&lt;br&gt;fixed in 1.2-SNAPSHOT.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Russel.
&lt;br&gt;====================================================
&lt;br&gt;Dr Russel Winder &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Partner
&lt;br&gt;&lt;br&gt;Concertant LLP &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t: +44 20 7585 2200, +44 20 7193 9203
&lt;br&gt;41 Buckmaster Road, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f: +44 8700 516 084
&lt;br&gt;London SW11 1EN, UK. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; m: +44 7770 465 077
&lt;br&gt;&lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://www.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (196 bytes) &lt;a href=&quot;http://www.nabble.com/attachment/18635713/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/-cli--CLI-2-State-of-Play-tp18420497p18635713.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18619383</id>
	<title>svn commit: r679179 - in /commons/proper/cli/trunk/src: java/org/apache/commons/cli2/option/GroupImpl.java test/org/apache/commons/cli2/bug/BugCLI144Test.java</title>
	<published>2008-07-23T13:09:05Z</published>
	<updated>2008-07-23T13:09:05Z</updated>
	<author>
		<name>oheger</name>
	</author>
	<content type="html">Author: oheger
&lt;br&gt;Date: Wed Jul 23 13:09:05 2008
&lt;br&gt;New Revision: 679179
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=679179&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=679179&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;CLI-144: validate() is now called only once for an option that belongs to a group.
&lt;br&gt;Thanks to David dot Biesack at sas dot com for the unit test and dioktos at gmail dot com for a proposed fix.
&lt;br&gt;&lt;br&gt;Added:
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI144Test.java &amp;nbsp; (with props)
&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/GroupImpl.java
&lt;br&gt;&lt;br&gt;Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/GroupImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/GroupImpl.java?rev=679179&amp;r1=679178&amp;r2=679179&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/GroupImpl.java?rev=679179&amp;r1=679178&amp;r2=679179&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/GroupImpl.java (original)
&lt;br&gt;+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/GroupImpl.java Wed Jul 23 13:09:05 2008
&lt;br&gt;@@ -245,14 +245,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (final Iterator i = options.iterator(); i.hasNext();) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final Option option = (Option) i.next();
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// if the child option is required then validate it
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (option.isRequired()) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;option.validate(commandLine);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (option instanceof Group) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;option.validate(commandLine);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// needs validation?
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;boolean validate = option.isRequired() || option instanceof Group;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// if the child option is present then validate it
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (commandLine.hasOption(option)) {
&lt;br&gt;@@ -261,7 +255,10 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;validate = true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (validate) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;option.validate(commandLine);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;Added: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI144Test.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI144Test.java?rev=679179&amp;view=auto&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI144Test.java?rev=679179&amp;view=auto&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI144Test.java (added)
&lt;br&gt;+++ commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI144Test.java Wed Jul 23 13:09:05 2008
&lt;br&gt;@@ -0,0 +1,66 @@
&lt;br&gt;+/**
&lt;br&gt;+ * Licensed to the Apache Software Foundation (ASF) under one or more
&lt;br&gt;+ * contributor license agreements. &amp;nbsp;See the NOTICE file distributed with
&lt;br&gt;+ * this work for additional information regarding copyright ownership.
&lt;br&gt;+ * The ASF licenses this file to You under the Apache License, Version 2.0
&lt;br&gt;+ * (the &amp;quot;License&amp;quot;); you may not use this file except in compliance with
&lt;br&gt;+ * the License. &amp;nbsp;You may obtain a copy of the License at
&lt;br&gt;+ *
&lt;br&gt;+ * &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br&gt;+ *
&lt;br&gt;+ * Unless required by applicable law or agreed to in writing, software
&lt;br&gt;+ * distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,
&lt;br&gt;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
&lt;br&gt;+ * See the License for the specific language governing permissions and
&lt;br&gt;+ * limitations under the License.
&lt;br&gt;+ */
&lt;br&gt;+package org.apache.commons.cli2.bug;
&lt;br&gt;+
&lt;br&gt;+import java.io.File;
&lt;br&gt;+
&lt;br&gt;+import junit.framework.TestCase;
&lt;br&gt;+
&lt;br&gt;+import org.apache.commons.cli2.CommandLine;
&lt;br&gt;+import org.apache.commons.cli2.Group;
&lt;br&gt;+import org.apache.commons.cli2.builder.ArgumentBuilder;
&lt;br&gt;+import org.apache.commons.cli2.builder.DefaultOptionBuilder;
&lt;br&gt;+import org.apache.commons.cli2.builder.GroupBuilder;
&lt;br&gt;+import org.apache.commons.cli2.commandline.Parser;
&lt;br&gt;+import org.apache.commons.cli2.option.DefaultOption;
&lt;br&gt;+import org.apache.commons.cli2.validation.FileValidator;
&lt;br&gt;+
&lt;br&gt;+/**
&lt;br&gt;+ * Test case for &lt;a href=&quot;http://issues.apache.org/jira/browse/CLI-144&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://issues.apache.org/jira/browse/CLI-144&lt;/a&gt;&amp;nbsp;CLI 2 throws
&lt;br&gt;+ *
&lt;br&gt;+ * &amp;lt;pre&amp;gt;
&lt;br&gt;+ * Exception in thread &amp;quot;main&amp;quot; java.lang.ClassCastException: java.io.File cannot be cast to java.lang.String
&lt;br&gt;+ * &amp;lt;/pre&amp;gt;
&lt;br&gt;+ *
&lt;br&gt;+ * when there should be no such exception
&lt;br&gt;+ *
&lt;br&gt;+ * @author David Biesack
&lt;br&gt;+ */
&lt;br&gt;+public class BugCLI144Test extends TestCase {
&lt;br&gt;+	public void testFileValidator() {
&lt;br&gt;+		final DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final ArgumentBuilder abuilder = new ArgumentBuilder();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final GroupBuilder gbuilder = new GroupBuilder();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DefaultOption fileNameOption = obuilder.withShortName(&amp;quot;f&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.withLongName(&amp;quot;file-name&amp;quot;).withRequired(true).withDescription(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;name of an existing file&amp;quot;).withArgument(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;abuilder.withName(&amp;quot;file-name&amp;quot;).withValidator(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FileValidator.getExistingFileInstance())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.create()).create();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Group options = gbuilder.withName(&amp;quot;options&amp;quot;).withOption(fileNameOption)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.create();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Parser parser = new Parser();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.setHelpTrigger(&amp;quot;--help&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.setGroup(options);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final String fileName = &amp;quot;src/test/org/apache/commons/cli2/bug/BugCLI144Test.java&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CommandLine cl = parser
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.parseAndHelp(new String[] { &amp;quot;--file-name&amp;quot;, fileName });
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotNull(cl);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Wrong file&amp;quot;, new File(fileName), cl.getValue(fileNameOption));
&lt;br&gt;+	}
&lt;br&gt;+}
&lt;br&gt;&lt;br&gt;Propchange: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI144Test.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:eol-style = native
&lt;br&gt;&lt;br&gt;Propchange: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI144Test.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:keywords = Date Author Id Revision HeadURL
&lt;br&gt;&lt;br&gt;Propchange: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI144Test.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:mime-type = text/plain
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/svn-commit%3A-r679179---in--commons-proper-cli-trunk-src%3A-java-org-apache-commons-cli2-option-GroupImpl.java-test-org-apache-commons-cli2-bug-BugCLI144Test.java-tp18619383p18619383.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18606588</id>
	<title>svn commit: r679034 [2/2] - in /commons/sandbox/monitoring/trunk: ./ src/main/java/org/apache/commons/monitoring/ src/main/java/org/apache/commons/monitoring/impl/metrics/ src/main/java/org/apache/commons/monitoring/impl/monitors/ src/main/java/org/apa...</title>
	<published>2008-07-23T02:00:23Z</published>
	<updated>2008-07-23T02:00:23Z</updated>
	<author>
		<name>nicolas de loof-3</name>
	</author>
	<content type="html">Copied: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeMetricsMonitorTest.java (from r679011, commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java)
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeMetricsMonitorTest.java?p2=commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeMetricsMonitorTest.java&amp;p1=commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java&amp;r1=679011&amp;r2=679034&amp;rev=679034&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeMetricsMonitorTest.java?p2=commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeMetricsMonitorTest.java&amp;p1=commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java&amp;r1=679011&amp;r2=679034&amp;rev=679034&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java (original)
&lt;br&gt;+++ commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeMetricsMonitorTest.java Wed Jul 23 02:00:21 2008
&lt;br&gt;@@ -25,20 +25,20 @@
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.Monitor;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.MonitoringTest;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.Unit;
&lt;br&gt;-import org.apache.commons.monitoring.impl.monitors.CompositeValuesMonitor;
&lt;br&gt;+import org.apache.commons.monitoring.impl.monitors.CompositeMetricsMonitor;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * Test for basic Monitor behaviour
&lt;br&gt;&amp;nbsp; *
&lt;br&gt;&amp;nbsp; * @author &amp;lt;a href=&amp;quot;mailto:&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18606588&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nicolas@...&lt;/a&gt;&amp;quot;&amp;gt;Nicolas De Loof&amp;lt;/a&amp;gt;
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-public class CompositeValuesMonitorTest
&lt;br&gt;+public class CompositeMetricsMonitorTest
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;extends TestCase
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testReset()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws Exception
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Monitor monitor = new CompositeValuesMonitor( new Monitor.Key( &amp;quot;MonitorTest.testReset&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;utils&amp;quot; ) );
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Monitor monitor = new CompositeMetricsMonitor( new Monitor.Key( &amp;quot;MonitorTest.testReset&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;utils&amp;quot; ) );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Counter counter = monitor.getCounter( Monitor.PERFORMANCES );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;counter.add( 1, Unit.NANOS );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals( 1, counter.get() );
&lt;br&gt;@@ -51,7 +51,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testCompositeCounter()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws Exception
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Monitor monitor = new CompositeValuesMonitor( new Monitor.Key( &amp;quot;MonitorTest.testComposite&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;utils&amp;quot; ) );
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Monitor monitor = new CompositeMetricsMonitor( new Monitor.Key( &amp;quot;MonitorTest.testComposite&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;utils&amp;quot; ) );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Counter counter = monitor.getCounter( MonitoringTest.COUNTER );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Composite&amp;lt;Counter&amp;gt; composite = (Composite&amp;lt;Counter&amp;gt;) counter;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -79,7 +79,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testCompositeGauge()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws Exception
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Monitor monitor = new CompositeValuesMonitor( new Monitor.Key( &amp;quot;MonitorTest.testComposite&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;utils&amp;quot; ) );
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Monitor monitor = new CompositeMetricsMonitor( new Monitor.Key( &amp;quot;MonitorTest.testComposite&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;utils&amp;quot; ) );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Gauge gauge = monitor.getGauge( MonitoringTest.GAUGE );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Composite&amp;lt;Gauge&amp;gt; composite = (Composite&amp;lt;Gauge&amp;gt;) gauge;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;Propchange: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeMetricsMonitorTest.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:eol-style = native
&lt;br&gt;&lt;br&gt;Propchange: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeMetricsMonitorTest.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:keywords = Date Author Id Revision HeadURL
&lt;br&gt;&lt;br&gt;Propchange: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeMetricsMonitorTest.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:mergeinfo = 
&lt;br&gt;&lt;br&gt;Propchange: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeMetricsMonitorTest.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:mime-type = text/plain
&lt;br&gt;&lt;br&gt;Modified: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeCounterTest.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeCounterTest.java?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeCounterTest.java?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeCounterTest.java (original)
&lt;br&gt;+++ commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeCounterTest.java Wed Jul 23 02:00:21 2008
&lt;br&gt;@@ -22,7 +22,7 @@
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.Counter;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.MonitoringTest;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.Unit;
&lt;br&gt;-import org.apache.commons.monitoring.impl.values.ThreadSafeCounter;
&lt;br&gt;+import org.apache.commons.monitoring.impl.metrics.ThreadSafeCounter;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;public class ThreadSafeCounterTest
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;extends TestCase
&lt;br&gt;&lt;br&gt;Modified: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeGaugeTest.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeGaugeTest.java?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeGaugeTest.java?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeGaugeTest.java (original)
&lt;br&gt;+++ commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeGaugeTest.java Wed Jul 23 02:00:21 2008
&lt;br&gt;@@ -23,7 +23,7 @@
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.MonitoringTest;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.Role;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.Unit;
&lt;br&gt;-import org.apache.commons.monitoring.impl.values.ThreadSafeGauge;
&lt;br&gt;+import org.apache.commons.monitoring.impl.metrics.ThreadSafeGauge;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;public class ThreadSafeGaugeTest
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;extends TestCase
&lt;br&gt;&lt;br&gt;Modified: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java (original)
&lt;br&gt;+++ commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java Wed Jul 23 02:00:21 2008
&lt;br&gt;@@ -22,9 +22,9 @@
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.Counter;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.Monitor;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.MonitoringTest;
&lt;br&gt;-import org.apache.commons.monitoring.StatValue;
&lt;br&gt;+import org.apache.commons.monitoring.Metric;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.Unit;
&lt;br&gt;-import org.apache.commons.monitoring.impl.monitors.CreateValuesOnDemandMonitor;
&lt;br&gt;+import org.apache.commons.monitoring.impl.monitors.CreateMetricsOnDemandMonitor;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.listeners.ThresholdListener;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;@@ -36,7 +36,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testThresholdListener()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws Exception
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final Monitor monitor = new CreateValuesOnDemandMonitor(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final Monitor monitor = new CreateMetricsOnDemandMonitor(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Monitor.Key( &amp;quot;MonitoringTest.testMonitoring&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;utils&amp;quot; ) );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Counter counter = monitor.getCounter( MonitoringTest.COUNTER );
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -65,7 +65,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.monitor = monitor;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void exceed( StatValue value, long l )
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void exceed( Metric value, long l )
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;count++;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals( 10, l );
&lt;br&gt;&lt;br&gt;Modified: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java (original)
&lt;br&gt;+++ commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java Wed Jul 23 02:00:21 2008
&lt;br&gt;@@ -32,8 +32,8 @@
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.MonitoringTest;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.Role;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.Unit;
&lt;br&gt;-import org.apache.commons.monitoring.impl.monitors.CreateValuesOnDemandMonitor;
&lt;br&gt;-import org.apache.commons.monitoring.impl.values.ThreadSafeCounter;
&lt;br&gt;+import org.apache.commons.monitoring.impl.metrics.ThreadSafeCounter;
&lt;br&gt;+import org.apache.commons.monitoring.impl.monitors.CreateMetricsOnDemandMonitor;
&lt;br&gt;&amp;nbsp;import org.apache.commons.monitoring.reporting.Renderer.Options;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;public class RendererTest
&lt;br&gt;@@ -46,12 +46,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws Exception
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;monitors = new LinkedList&amp;lt;Monitor&amp;gt;();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Monitor m1 = new CreateValuesOnDemandMonitor( new Monitor.Key( &amp;quot;JsonRendererTest.setUp&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;reporting&amp;quot; ) );
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Monitor m1 = new CreateMetricsOnDemandMonitor( new Monitor.Key( &amp;quot;JsonRendererTest.setUp&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;reporting&amp;quot; ) );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;m1.getCounter( Monitor.PERFORMANCES ).add( 10, Unit.NANOS );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;m1.getGauge( Monitor.CONCURRENCY );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;monitors.add( m1 );
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Monitor m2 = new CreateValuesOnDemandMonitor( new Monitor.Key( &amp;quot;TestCase&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;junit&amp;quot; ) );
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Monitor m2 = new CreateMetricsOnDemandMonitor( new Monitor.Key( &amp;quot;TestCase&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;junit&amp;quot; ) );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;m2.getCounter( Monitor.PERFORMANCES );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;m2.getGauge( Monitor.CONCURRENCY ).increment(Unit.UNARY);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;monitors.add( m2 );
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/svn-commit%3A-r679034--2-2----in--commons-sandbox-monitoring-trunk%3A-.--src-main-java-org-apache-commons-monitoring--src-main-java-org-apache-commons-monitoring-impl-metrics--src-main-java-org-apache-commons-monitoring-impl-monitors--src-main-java-org-apa...-tp18606588p18606588.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18606598</id>
	<title>svn commit: r679034 [1/2] - in /commons/sandbox/monitoring/trunk: ./ src/main/java/org/apache/commons/monitoring/ src/main/java/org/apache/commons/monitoring/impl/metrics/ src/main/java/org/apache/commons/monitoring/impl/monitors/ src/main/java/org/apa...</title>
	<published>2008-07-23T02:00:23Z</published>
	<updated>2008-07-23T02:00:23Z</updated>
	<author>
		<name>nicolas de loof-3</name>
	</author>
	<content type="html">Author: nicolas
&lt;br&gt;Date: Wed Jul 23 02:00:21 2008
&lt;br&gt;New Revision: 679034
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=679034&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=679034&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;rename &amp;quot;statValue&amp;quot; to &amp;quot;metric&amp;quot;
&lt;br&gt;&lt;br&gt;Added:
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Metric.java &amp;nbsp; (contents, props changed)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - copied, changed from r663070, commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/StatValue.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/metrics/ &amp;nbsp; (props changed)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - copied from r663070, commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/values/
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/metrics/AbstractMetric.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - copied, changed from r663070, commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/values/AbstractStatValue.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/monitors/CompositeMetricsMonitor.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - copied, changed from r663070, commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/monitors/CompositeValuesMonitor.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/monitors/CreateMetricsOnDemandMonitor.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - copied, changed from r663070, commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/monitors/CreateValuesOnDemandMonitor.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/MetricTag.java &amp;nbsp; (contents, props changed)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - copied, changed from r663070, commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/StatValueTag.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/jaxws/
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/support/jaxws/PerformancesHandler.java &amp;nbsp; (with props)
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/webapp/META-INF/
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/webapp/test.jsp &amp;nbsp; (with props)
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeMetricsMonitorTest.java &amp;nbsp; (contents, props changed)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; - copied, changed from r679011, commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java
&lt;br&gt;Removed:
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/StatValue.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/metrics/AbstractStatValue.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/monitors/CompositeValuesMonitor.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/monitors/CreateValuesOnDemandMonitor.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/values/
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/StatValueTag.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/CompositeValuesMonitorTest.java
&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/pom.xml
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Counter.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Gauge.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitor.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Repository.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Role.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/metrics/CompositeCounter.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/metrics/CompositeGauge.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/metrics/ThreadSafeCounter.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/metrics/ThreadSafeGauge.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/monitors/AbstractMonitor.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/monitors/ObservableMonitor.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/impl/repositories/DefaultRepository.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/SecondaryMonitor.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/ThresholdListener.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/JsonRenderer.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Selector.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/SelectorPeriodicLogger.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/XmlRenderer.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/main/resources/META-INF/monitoring.tld
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/site/xdoc/instrumentation.xml
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/site/xdoc/listeners.xml
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/site/xdoc/tutorial.xml
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeCounterTest.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/impl/ThreadSafeGaugeTest.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/listener/ThresholdListenerTest.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java
&lt;br&gt;&lt;br&gt;Modified: commons/sandbox/monitoring/trunk/pom.xml
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/pom.xml?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/pom.xml?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/sandbox/monitoring/trunk/pom.xml (original)
&lt;br&gt;+++ commons/sandbox/monitoring/trunk/pom.xml Wed Jul 23 02:00:21 2008
&lt;br&gt;@@ -17,7 +17,7 @@
&lt;br&gt;&amp;nbsp;--&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;project xmlns=&amp;quot;&lt;a href=&quot;http://maven.apache.org/POM/4.0.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://maven.apache.org/POM/4.0.0&lt;/a&gt;&amp;quot; xmlns:xsi=&amp;quot;&lt;a href=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/a&gt;&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp;xsi:schemaLocation=&amp;quot;&lt;a href=&quot;http://maven.apache.org/POM/4.0.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://maven.apache.org/POM/4.0.0&lt;/a&gt;&lt;br&gt;-		 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://maven.apache.org/maven-v4_0_0.xsd&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://maven.apache.org/maven-v4_0_0.xsd&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://maven.apache.org/maven-v4_0_0.xsd&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://maven.apache.org/maven-v4_0_0.xsd&lt;/a&gt;&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;lt;parent&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.commons&amp;lt;/groupId&amp;gt;
&lt;br&gt;@@ -85,6 +85,20 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;version&amp;gt;2.3&amp;lt;/version&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;&amp;lt;!--
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.ws&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;jaxws-api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;version&amp;gt;2.0&amp;lt;/version&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;&amp;lt;dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;groupId&amp;gt;javax.xml.soap&amp;lt;/groupId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;artifactId&amp;gt;saaj-api&amp;lt;/artifactId&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;version&amp;gt;1.3&amp;lt;/version&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;optional&amp;gt;true&amp;lt;/optional&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;&amp;lt;/dependency&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; --&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;lt;/dependencies&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;lt;developers&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;developer&amp;gt;
&lt;br&gt;@@ -101,11 +115,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;url&amp;gt;&lt;a href=&quot;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/&lt;/a&gt;&amp;lt;/url&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;lt;/scm&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;lt;build&amp;gt;
&lt;br&gt;- &amp;nbsp;	&amp;lt;resources&amp;gt;
&lt;br&gt;- &amp;nbsp;	 &amp;nbsp;&amp;lt;resource&amp;gt;
&lt;br&gt;- &amp;nbsp;	 &amp;nbsp; &amp;nbsp;&amp;lt;directory&amp;gt;${basedir}/src/main/resources&amp;lt;/directory&amp;gt;
&lt;br&gt;- &amp;nbsp;	 &amp;nbsp;&amp;lt;/resource&amp;gt;
&lt;br&gt;- &amp;nbsp;	&amp;lt;/resources&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;&amp;lt;resources&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;resource&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;directory&amp;gt;${basedir}/src/main/resources&amp;lt;/directory&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/resource&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;&amp;lt;/resources&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;plugins&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;!-- TODO : investigate OSGi support
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;plugin&amp;gt;
&lt;br&gt;&lt;br&gt;Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Counter.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Counter.java?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Counter.java?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Counter.java (original)
&lt;br&gt;+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Counter.java Wed Jul 23 02:00:21 2008
&lt;br&gt;@@ -24,7 +24,7 @@
&lt;br&gt;&amp;nbsp; * @author &amp;lt;a href=&amp;quot;mailto:&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18606598&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;nicolas@...&lt;/a&gt;&amp;quot;&amp;gt;Nicolas De Loof&amp;lt;/a&amp;gt;
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;&amp;nbsp;public interface Counter
&lt;br&gt;- &amp;nbsp; &amp;nbsp;extends StatValue
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;extends Metric
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;@@ -39,7 +39,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;long getSum();
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * @return how many time the value has been set
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @return how many time the Metric has been set
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;int getHits();
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Gauge.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Gauge.java?rev=679034&amp;r1=679033&amp;r2=679034&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Gauge.java?rev=679034&a