[jira] Commented: (CLI-137) Change of behaviour 1.0 -> 1.1

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CLI-137) Change of behaviour 1.0 -> 1.1

Walter Laan (Jira)

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

Emmanuel Bourg commented on CLI-137:
------------------------------------

I misunderstood the issue, I tend to agree with Henri, the hasArg vs hasArgs semantic seems sensible, even if it breaks the compatibility with CLI 1.0. It should be properly documented, currently the 1.1 upgrade notes make no mention of this issue.

Regarding the case suggested by Steve, it seems that with hasArgs() his example would return an array with [1, 2, 3] and not only 1, provided the getOptionValues() method is called instead of getOptionValue(), is this correct ?

> 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
>          Components: CLI-1.x
>    Affects Versions: 1.1
>         Environment: Ubuntu 7.04 Feisty Fawn (JDK 1.6.0) + Commons CLI 1.0 and 1.1
>            Reporter: Russel Winder
>            Priority: Blocker
>             Fix For: 1.2
>
>
> The code:
> {code}
> import org.apache.commons.cli.*;
> public class Trial {
>   private void execute (String[] commandLine) throws ParseException {
>     Options options = new Options();
>     options.addOption ( OptionBuilder.withLongOpt("flob").hasArg().create('F') );
>     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 (String[] args) throws ParseException {
>     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.