[
https://issues.apache.org/jira/browse/GROOVY-10893?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul King closed GROOVY-10893.
------------------------------
> collectEntries accepts one or more entry values for each iteration but not
> zero (via null)
> ------------------------------------------------------------------------------------------
>
> Key: GROOVY-10893
> URL: https://issues.apache.org/jira/browse/GROOVY-10893
> Project: Groovy
> Issue Type: Improvement
> Components: groovy-jdk
> Reporter: Eric Milles
> Assignee: Eric Milles
> Priority: Minor
> Fix For: 4.0.14, 3.0.19
>
>
> The {{collectEntries}} extension methods accept one entry (as an entry,
> array, list or map). And it accepts multiple entries (via a map). However,
> it does not let you return no entry (as null). You can probably return an
> empty map...
> Similar to {{findResults}}, I'd like to be able to conditionally return an
> entry or entries:
> {code:groovy}
> def map = list.collectEntries { item ->
> if (item ...) {
> def key = ..., val = ...;
> Collections.singletonMap(key, val)
> }
> }
> {code}
> {{org.codehaus.groovy.runtime.DefaultGroovyMethods#addEntry(Map,Object)}}
> could check for null before calling {{asType(newEntry, Map.Entry.class)}}.
> {{collectMany}} has a similar issue. I need to write "if \(x\) y else
> Collections.emptyList()" instead of just "if \(x\) y" in the closure block.
> A simple null check in
> {{org.codehaus.groovy.runtime.DefaultGroovyMethods#collectMany(Iterable,Collection,Closure)}}
> could take care of this.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)