Eric Milles created GROOVY-10893:
------------------------------------
Summary: collectEntries one or more entry values for each
iteration but not zero
Key: GROOVY-10893
URL: https://issues.apache.org/jira/browse/GROOVY-10893
Project: Groovy
Issue Type: Bug
Reporter: Eric Milles
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)