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

Eric Milles updated GROOVY-10893:
---------------------------------
    Description: 
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.

  was:
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.


> 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: Improvement
>            Reporter: Eric Milles
>            Priority: Minor
>
> 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)

Reply via email to