You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Henri Yandell (JIRA)" <ji...@apache.org> on 2007/10/27 20:39:50 UTC
[jira] Updated: (CLI-144) adding a FileValidator results in
ClassCastException in parser.parseAndHelp(args)
[ https://issues.apache.org/jira/browse/CLI-144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Henri Yandell updated CLI-144:
------------------------------
Fix Version/s: 2.0
> adding a FileValidator results in ClassCastException in parser.parseAndHelp(args)
> ---------------------------------------------------------------------------------
>
> Key: CLI-144
> URL: https://issues.apache.org/jira/browse/CLI-144
> Project: Commons CLI
> Issue Type: Bug
> Components: CLI-2.x
> Affects Versions: 2.0
> Environment: Windows XP
> Reporter: David Biesack
> Fix For: 2.0
>
>
> When I add a FileValidator.getExistingFileInstance() to an Argument, I get a ClassCastException when I parse args.
> Below is a testcase invoke with
> java org.apache.commons.cli2.issues.CLI2Sample -classpath commons-cli-2.0-SNAPSHOT.jar --file-name path-to-an-existing-file
> Run it and you get:
> Exception in thread "main" java.lang.ClassCastException: java.io.File cannot be cast to java.lang.String
> at org.apache.commons.cli2.validation.FileValidator.validate(FileValidator.java:122)
> at org.apache.commons.cli2.option.ArgumentImpl.validate(ArgumentImpl.java:250)
> at org.apache.commons.cli2.option.ParentImpl.validate(ParentImpl.java:123)
> at org.apache.commons.cli2.option.DefaultOption.validate(DefaultOption.java:175)
> at org.apache.commons.cli2.option.GroupImpl.validate(GroupImpl.java:264)
> at org.apache.commons.cli2.commandline.Parser.parse(Parser.java:105)
> at org.apache.commons.cli2.commandline.Parser.parseAndHelp(Parser.java:125)
> at org.apache.commons.cli2.issues.CLI2Sample.main(CLI2Sample.java:38)
> Comment out the withValidator call and it runs with no exception.
> I also get a similar ClassCastException if I add a
> .withValidator(NumberValidator.getIntegerInstance())
> to another option/argument.
> Here is the source
> package org.apache.commons.cli2.issues;
> import java.io.File;
> 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;
> import org.apache.commons.cli2.validation.FileValidator;
> public class CLI2Sample
> {
> public static void main(String[] args)
> {
> final DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
> final ArgumentBuilder abuilder = new ArgumentBuilder();
> final GroupBuilder gbuilder = new GroupBuilder();
> DefaultOption fileNameOption = obuilder
> .withShortName("f")
> .withLongName("file-name")
> .withRequired(true)
> .withDescription("name of an existing file")
> .withArgument(abuilder
> .withName("file-name")
> .withValidator(FileValidator.getExistingFileInstance())
> .create())
> .create();
> Group options = gbuilder
> .withName("options")
> .withOption(fileNameOption)
> .create();
> Parser parser = new Parser();
> parser.setHelpTrigger("--help");
> parser.setGroup(options);
> CommandLine cl = parser.parseAndHelp(args);
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.