[
https://issues.apache.org/jira/browse/CLI-220?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13044965#comment-13044965
]
Emmanuel Bourg commented on CLI-220:
------------------------------------
I agree it's not really nice to have a list of mixed types, but that's how it
was done and it can't be changed without breaking the backward compatibility.
What we can do is to add helper methods in the exception to simplify the
processing, but what kind of string would you expect for a missing group of
options?
> MissingOptionException.getMissingOptions() returns OptionGroup, not just
> String
> -------------------------------------------------------------------------------
>
> Key: CLI-220
> URL: https://issues.apache.org/jira/browse/CLI-220
> Project: Commons CLI
> Issue Type: Bug
> Components: CLI-1.x, Documentation
> Affects Versions: 1.2
> Reporter: Joe Casadonte
> Priority: Minor
> Fix For: 1.3
>
>
> The following code:
> {code:title=Test.java|borderStyle=solid}
> import java.util.List;
> import org.apache.commons.cli.CommandLine;
> import org.apache.commons.cli.CommandLineParser;
> import org.apache.commons.cli.GnuParser;
> import org.apache.commons.cli.MissingOptionException;
> import org.apache.commons.cli.Option;
> import org.apache.commons.cli.OptionBuilder;
> import org.apache.commons.cli.OptionGroup;
> import org.apache.commons.cli.Options;
> public class Test {
> public static void main(String[] argv)
> {
> Option opt_foo =
> OptionBuilder.hasArg(false)
> .isRequired(true)
> .withDescription("option foo")
> .create("foo");
> Option opt_bar =
> OptionBuilder.hasArg(false)
> .isRequired(false)
> .withDescription("option bar")
> .create("bar");
> Option opt_baz =
> OptionBuilder.hasArg(false)
> .isRequired(false)
> .withDescription("option baz")
> .create("baz");
> OptionGroup optgrp = new OptionGroup();
> optgrp.setRequired(true);
> optgrp.addOption(opt_bar)
> .addOption(opt_baz);
> Options optsdef = new Options();
> optsdef.addOption(opt_foo)
> .addOptionGroup(optgrp);
> try {
> CommandLineParser parser = new GnuParser();
> CommandLine cmdline = parser.parse(optsdef, argv);
> }
> catch (MissingOptionException ex) {
> List opts = ex.getMissingOptions();
> for (Object option : opts) {
> System.out.println("OPT: " +
> option.getClass().getName());
> }
> }
> catch (Exception ex) {
> ex.printStackTrace();
> System.exit(1);
> }
> }
> }
> {code}
> produces the following output:
> {code}
> </tmp/MissingOptionException> $ javac -cp commons-cli-1.2.jar Test.java
> </tmp/MissingOptionException> $ java -cp commons-cli-1.2.jar:. Test
> OPT: java.lang.String
> OPT: org.apache.commons.cli.OptionGroup
> {code}
> The JavaDoc for MissingOptionException.getMissingOptions() says:
> {quote}
> Return the list of options (as strings) missing in the command line parsed.
> {quote}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira