commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brian Egge (JIRA)" <j...@apache.org>
Subject [jira] Updated: (CLI-145) ArgumentBuilder.withMaximum causes parse errors: Unexpeced <value> while processing options
Date Tue, 21 Aug 2007 07:53:31 GMT

     [ https://issues.apache.org/jira/browse/CLI-145?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Brian Egge updated CLI-145:
---------------------------

    Attachment: CLI145.patch

It seems the argumentCount option in ArgumentImpl was trying to do more than one thing, or
do something clever.  It was getting set to the number of default options, which David's example
was 2.  Once it parsed two additional options, it would reach 4, and throw an exception. 
Simply setting the count to zero seems to fix the problem.  

This caused 'BugLoopingOptionLookAlikeTest' to throw an Argument Unexpected Value instead
of Unexpected Token message.  I'm not sure which is more correct.

I changed option so it can assert on message tokens and not the message strings from the resource
bundle.   

> ArgumentBuilder.withMaximum causes parse errors: Unexpeced <value> while processing
options
> -------------------------------------------------------------------------------------------
>
>                 Key: CLI-145
>                 URL: https://issues.apache.org/jira/browse/CLI-145
>             Project: Commons CLI
>          Issue Type: Bug
>          Components: CLI-2.x
>    Affects Versions: 2.0
>         Environment: Windows XP
>            Reporter: David Biesack
>         Attachments: CLI145.patch
>
>
> With the sample program below, running with the arguments
>   -a 0 -b 1 2 3 4
> causes the error:
> Unexpected 3 while processing options                                           
> Usage:                                                                          
>  [-a <a1> [<a2> ...] -b <b1> <b2> [<b3> [<b4>]]]
                               
> options                                                                         
>   -a (--a) a [a ...]                                                            
>   -b (--b) b b [b [b]]                                                          
> I specified .withMinimum(2).withMaximum(4) 
> The help is correct, but the value '3' is not added as a value.
> Note also that if for bOption, if you add two more defaults (uncomment them in the source)
>             .withDefault("10000")
>             .withDefault("1000000")
> an error is raised (incorrectly) on the first b value (i.e. 1 instead of 3) :
> Unexpected 1 while processing options         
> Usage:                                                                          
>  [-a <a1> [<a2> ...] -b <b1> <b2> [<b3> [<b4>]]]
                               
> options                                                                         
>   -a (--a) a [a ...]                                                            
>   -b (--b) b b [b [b]]
> Source:
> package org.apache.commons.cli2.issues;
> import java.util.List;
> import org.apache.commons.cli2.CommandLine;
> import org.apache.commons.cli2.Group;
> import org.apache.commons.cli2.builder.ArgumentBuilder;
> import org.apache.commons.cli2.builder.DefaultOptionBuilder;
> import org.apache.commons.cli2.builder.GroupBuilder;
> import org.apache.commons.cli2.commandline.Parser;
> import org.apache.commons.cli2.option.DefaultOption;
> public class WithMinimum
> {
>    public static void main(String[] args)
>    {
>       final DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
>       final ArgumentBuilder abuilder = new ArgumentBuilder();
>       final GroupBuilder gbuilder = new GroupBuilder();
>       DefaultOption aOption = obuilder//
>             .withShortName("a")
>             .withLongName("a")
>             .withArgument(abuilder
>                   .withName("a")
>                   .withDefault("10")
>                   .create())
>             .create();
>       DefaultOption bOption = obuilder
>       .withShortName("b")
>       .withLongName("b")
>       .withArgument(abuilder
>             .withName("b")
>             .withMinimum(2)
>             .withMaximum(4)
>             .withDefault("100")
>             .withDefault("1000")
> //            .withDefault("10000")
> //            .withDefault("1000000")
>             .create())
>       .create();
>       Group options = gbuilder
>             .withName("options")
>             .withOption(aOption)
>             .withOption(bOption)
>             .create();
>       Parser parser = new Parser();
>       parser.setHelpTrigger("--help");
>       parser.setGroup(options);
>       CommandLine cl = parser.parseAndHelp(args);
>       if (cl == null)
>          System.exit(1);
>       int a = Integer.parseInt(cl.getValue(aOption).toString());
>       List b = cl.getValues(bOption);
>       System.out.printf("a=%d b=%s%n", a, b);
>    }
> }

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


Mime
View raw message