You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (Jira)" <ji...@apache.org> on 2020/07/23 14:17:05 UTC

[jira] [Closed] (GROOVY-9599) CliBuilder: Option with "type: String, defaultValue ''" (empty String) results in NullObject if default value is applied

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

Paul King closed GROOVY-9599.
-----------------------------

> CliBuilder: Option with "type: String, defaultValue ''" (empty String) results in NullObject if default value is applied
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: GROOVY-9599
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9599
>             Project: Groovy
>          Issue Type: Bug
>          Components: command line processing
>    Affects Versions: 2.5.11, 3.0.4
>            Reporter: Remko Popma
>            Assignee: Remko Popma
>            Priority: Major
>             Fix For: 3.0.5, 2.5.13
>
>
> This is a follow-up ticket for GROOVY-9519:
> After checking with Groovy 3.0.4, it seems that only the "Integer with defaultValue '0'" case was fixed, but not "String with defaultValue ''". The latter became even worse. It still ignores the defaultValue, but instead of creating a Boolean, it now creates a NullObject. Try this code:
> {code:java}
> @Grab('info.picocli:picocli-groovy:4.3.2')
> @GrabConfig(systemClassLoader=true)
> import groovy.cli.picocli.CliBuilder
> def cli = new CliBuilder(name: 'cliTest.groovy', stopAtNonOption: false)
> cli.h(type: Boolean, longOpt: 'help', usageHelp: true, required: false, 'Show usage information')
> cli.a(type: String, longOpt: 'optA', required: false, args: 1, defaultValue: '', 'Option a (optional)')
> def opts = cli.parse(args)
> opts || System.exit(1)
> if(opts.h) {
>   cli.usage()
>   System.exit(0)
> }
> println(opts.a.getClass())
> if (opts.a) {
>   println(opts.a)
> }
> {code}
> with Groovy 3.0.2:
> {code:java}
> % ~/tmp/groovy-3.0.2/bin/groovy ./cliTest.groovy
> class java.lang.Boolean
> {code}
> and with Groovy 3.0.4:
> {code:java}
> % ~/tmp/groovy-3.0.4/bin/groovy ./cliTest.groovy
> class org.codehaus.groovy.runtime.NullObject
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)