[ 
https://issues.apache.org/jira/browse/CLI-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12514577
 ] 

Brian Egge commented on CLI-137:
--------------------------------

In 1.1, the hasArg() set the number of expected values to '1'.  Apparently, in 
1.0 it defaulted to unlimited.   You can get the previous behavior by changing 
the code like this:

Option option = OptionBuilder.withLongOpt("flob").hasArgs().create('F');

The output will then look like:
-F 1
-F 3
-F bla
-F  76
-F 54
--blah 1
--blah 3
--blah bla
--blah  76
--blah 54

In 1.1, you can call getOptionValues by either the short name or the long name. 
 Since they are the same option, they return the same values.  

hasArg expects a single value, while hasArgs allows unlimited values.  I think 
this behavior, although different, is what the original API has intended.  

> Change of behaviour 1.0 -> 1.1
> ------------------------------
>
>                 Key: CLI-137
>                 URL: https://issues.apache.org/jira/browse/CLI-137
>             Project: Commons CLI
>          Issue Type: Bug
>         Environment: Ubuntu 7.04 Feisty Fawn (JDK 1.6.0) + Commons CLI 1.0 
> and 1.1
>            Reporter: Russel Winder
>            Priority: Blocker
>
> The code:
> {code}
> import org.apache.commons.cli.CommandLine ;
> import org.apache.commons.cli.OptionBuilder ;
> import org.apache.commons.cli.GnuParser ;
> import org.apache.commons.cli.Option ;
> import org.apache.commons.cli.Options ;
> import org.apache.commons.cli.ParseException ;
> public class Trial {
>   private void execute (  final String[] commandLine ) throws ParseException {
>     final Options options = new Options ( ) ;
>     options.addOption ( OptionBuilder.withLongOpt ( "flob" ).hasArg ( 
> ).create ( 'F' ) ) ;
>     final CommandLine line = ( new GnuParser ( ) ).parse ( options , 
> commandLine ) ;
>     String[] results =  line.getOptionValues ( 'F' ) ;
>     if ( results != null ) { for ( String s : results ) { System.out.println 
> ( "-F " + s ) ; } }
>     results =  line.getOptionValues ( "flob" ) ;
>     if ( results != null ) { for ( String s : results ) { System.out.println 
> ( "--blah " + s ) ; } }
>     String[] theRest = line.getArgs ( ) ;
>     for ( String s : theRest ) { System.out.print ( s + " " ) ; }
>     System.out.println ( ) ;
>   }
>   public static void main ( final String[] args ) throws ParseException {
>     final Trial trial = new Trial ( ) ;
>     trial.execute ( new String[] { "-F1" , "-F3" , "-Fbla" , "-F 76" , 
> "--flob" , "54" } ) ;
>   }
> }
> {code}
> when compiled and executed under 1.0 produces:
> trial:
>      [java] -F 1
>      [java] -F 3
>      [java] -F bla
>      [java] -F  76
>      [java] -F 54
>      [java] 
> However, when compiled and executed under 1.1 produces:
> trial:
>      [java] -F 1
>      [java] --blah 1
>      [java] 3 bla  76 54 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to