[jira] [Commented] (CLI-230) Unable to properly require options
[ https://issues.apache.org/jira/browse/CLI-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13575868#comment-13575868 ] Thomas Neidhart commented on CLI-230: - In the current CLI version, it is not advised to alter Option objects after they have been added to an Options instance, as the changes will not be reflected, thus you should do something like that: {noformat} Options options = new Options(); Option o = OptionBuilder.withLongOpt(foo).isRequired().create(f); options.addOption(o); {noformat} There are several flaws in the current API design of CLI, which will hopefully corrected with CLI2, but we can not do it right now as it would break binary/backwards compatibility. Unable to properly require options -- Key: CLI-230 URL: https://issues.apache.org/jira/browse/CLI-230 Project: Commons CLI Issue Type: Bug Components: CLI-1.x, Options definition Affects Versions: 1.2 Environment: windows jdk1.6.0_21 Reporter: Alexander Fast Having some problems setting options as required. Have I misunderstood the documentation? * In test1() the option is required but also supplied, I expect to get no exceptions. * In test2() the option is required but *not* supplied, I expect to get an exception. {code:java} public class Testing { public static void main(String[] args) { System.out.println(Begin test 1); test1(); System.out.println(End test 1); System.out.println(Begin test 2); test2(); System.out.println(End test 2); } private static void test1() { String[] args = new String[] { --foo }; Options options = new Options(); options.addOption(f, foo, false, ); options.getRequiredOptions().add(options.getOption(foo)); GnuParser parser = new GnuParser(); try { parser.parse(options, args); } catch (ParseException e) { // didn't expect to get MissingOptionException here System.out.println(ERROR: + e.getMessage()); } } private static void test2() { String[] args = new String[] { }; Options options = new Options(); options.addOption(f, foo, false, ); options.getOption(f).setRequired(true); GnuParser parser = new GnuParser(); try { parser.parse(options, args); } catch (ParseException e) { // expected to get MissingOptionException here System.out.println(ERROR: + e.getMessage()); } } } {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (CLI-230) Unable to properly require options
[ https://issues.apache.org/jira/browse/CLI-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13575880#comment-13575880 ] Thomas Neidhart commented on CLI-230: - Actually, Options.getRequiredOptions() should return an unmodifiable list, adding there something really breaks some internal logic. Unable to properly require options -- Key: CLI-230 URL: https://issues.apache.org/jira/browse/CLI-230 Project: Commons CLI Issue Type: Bug Components: CLI-1.x, Options definition Affects Versions: 1.2 Environment: windows jdk1.6.0_21 Reporter: Alexander Fast Having some problems setting options as required. Have I misunderstood the documentation? * In test1() the option is required but also supplied, I expect to get no exceptions. * In test2() the option is required but *not* supplied, I expect to get an exception. {code:java} public class Testing { public static void main(String[] args) { System.out.println(Begin test 1); test1(); System.out.println(End test 1); System.out.println(Begin test 2); test2(); System.out.println(End test 2); } private static void test1() { String[] args = new String[] { --foo }; Options options = new Options(); options.addOption(f, foo, false, ); options.getRequiredOptions().add(options.getOption(foo)); GnuParser parser = new GnuParser(); try { parser.parse(options, args); } catch (ParseException e) { // didn't expect to get MissingOptionException here System.out.println(ERROR: + e.getMessage()); } } private static void test2() { String[] args = new String[] { }; Options options = new Options(); options.addOption(f, foo, false, ); options.getOption(f).setRequired(true); GnuParser parser = new GnuParser(); try { parser.parse(options, args); } catch (ParseException e) { // expected to get MissingOptionException here System.out.println(ERROR: + e.getMessage()); } } } {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (CLI-230) Unable to properly require options
[ https://issues.apache.org/jira/browse/CLI-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13575881#comment-13575881 ] Alexander Fast commented on CLI-230: Thank you for a swift response. I had indeed missed the part about not being allowed to alter Options after they've been added. The code now works. Although my IDE (IntelliJ Idea 12.0.3) gives me the following warning: {quote} Static member 'org.apache.commons.cli.OptionBuilder.isRequired()' accessed via instance reference. Shows references to static methods and fields via class instance rather than a class itself. {quote} Closing issue. Unable to properly require options -- Key: CLI-230 URL: https://issues.apache.org/jira/browse/CLI-230 Project: Commons CLI Issue Type: Bug Components: CLI-1.x, Options definition Affects Versions: 1.2 Environment: windows jdk1.6.0_21 Reporter: Alexander Fast Having some problems setting options as required. Have I misunderstood the documentation? * In test1() the option is required but also supplied, I expect to get no exceptions. * In test2() the option is required but *not* supplied, I expect to get an exception. {code:java} public class Testing { public static void main(String[] args) { System.out.println(Begin test 1); test1(); System.out.println(End test 1); System.out.println(Begin test 2); test2(); System.out.println(End test 2); } private static void test1() { String[] args = new String[] { --foo }; Options options = new Options(); options.addOption(f, foo, false, ); options.getRequiredOptions().add(options.getOption(foo)); GnuParser parser = new GnuParser(); try { parser.parse(options, args); } catch (ParseException e) { // didn't expect to get MissingOptionException here System.out.println(ERROR: + e.getMessage()); } } private static void test2() { String[] args = new String[] { }; Options options = new Options(); options.addOption(f, foo, false, ); options.getOption(f).setRequired(true); GnuParser parser = new GnuParser(); try { parser.parse(options, args); } catch (ParseException e) { // expected to get MissingOptionException here System.out.println(ERROR: + e.getMessage()); } } } {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (CLI-230) Unable to properly require options
[ https://issues.apache.org/jira/browse/CLI-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13575882#comment-13575882 ] Alexander Fast commented on CLI-230: {quote} Actually, Options.getRequiredOptions() should return an unmodifiable list, adding there something really breaks some internal logic. {quote} Agreed, I thought that was strange as well (got warnings about unchecked when adding typed stuff to the list). Unable to properly require options -- Key: CLI-230 URL: https://issues.apache.org/jira/browse/CLI-230 Project: Commons CLI Issue Type: Bug Components: CLI-1.x, Options definition Affects Versions: 1.2 Environment: windows jdk1.6.0_21 Reporter: Alexander Fast Having some problems setting options as required. Have I misunderstood the documentation? * In test1() the option is required but also supplied, I expect to get no exceptions. * In test2() the option is required but *not* supplied, I expect to get an exception. {code:java} public class Testing { public static void main(String[] args) { System.out.println(Begin test 1); test1(); System.out.println(End test 1); System.out.println(Begin test 2); test2(); System.out.println(End test 2); } private static void test1() { String[] args = new String[] { --foo }; Options options = new Options(); options.addOption(f, foo, false, ); options.getRequiredOptions().add(options.getOption(foo)); GnuParser parser = new GnuParser(); try { parser.parse(options, args); } catch (ParseException e) { // didn't expect to get MissingOptionException here System.out.println(ERROR: + e.getMessage()); } } private static void test2() { String[] args = new String[] { }; Options options = new Options(); options.addOption(f, foo, false, ); options.getOption(f).setRequired(true); GnuParser parser = new GnuParser(); try { parser.parse(options, args); } catch (ParseException e) { // expected to get MissingOptionException here System.out.println(ERROR: + e.getMessage()); } } } {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (CLI-230) Unable to properly require options
[ https://issues.apache.org/jira/browse/CLI-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13576032#comment-13576032 ] Thomas Neidhart commented on CLI-230: - Ok good, it is advised to ask questions first on the user mailinglist (u...@commons.apache.org) with the prefix [cli]. The warnings you get when using the OptionBuilder are due to the fact that all methods there are static. The 1.3 release will provide a different way to build options using a Builder class in the Option class itself. The problem with the required options list will need a fix though to prevent such mistakes. Unable to properly require options -- Key: CLI-230 URL: https://issues.apache.org/jira/browse/CLI-230 Project: Commons CLI Issue Type: Bug Components: CLI-1.x, Options definition Affects Versions: 1.2 Environment: windows jdk1.6.0_21 Reporter: Alexander Fast Having some problems setting options as required. Have I misunderstood the documentation? * In test1() the option is required but also supplied, I expect to get no exceptions. * In test2() the option is required but *not* supplied, I expect to get an exception. {code:java} public class Testing { public static void main(String[] args) { System.out.println(Begin test 1); test1(); System.out.println(End test 1); System.out.println(Begin test 2); test2(); System.out.println(End test 2); } private static void test1() { String[] args = new String[] { --foo }; Options options = new Options(); options.addOption(f, foo, false, ); options.getRequiredOptions().add(options.getOption(foo)); GnuParser parser = new GnuParser(); try { parser.parse(options, args); } catch (ParseException e) { // didn't expect to get MissingOptionException here System.out.println(ERROR: + e.getMessage()); } } private static void test2() { String[] args = new String[] { }; Options options = new Options(); options.addOption(f, foo, false, ); options.getOption(f).setRequired(true); GnuParser parser = new GnuParser(); try { parser.parse(options, args); } catch (ParseException e) { // expected to get MissingOptionException here System.out.println(ERROR: + e.getMessage()); } } } {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira