Puneet Behl created GROOVY-9662:
-----------------------------------
Summary: Groovy 3.0.5: Closure delegate is not working properly
Key: GROOVY-9662
URL: https://issues.apache.org/jira/browse/GROOVY-9662
Project: Groovy
Issue Type: Bug
Affects Versions: 3.0.5, 3.0.4, 3.0.3, 3.0.2
Reporter: Puneet Behl
In Grails Views, we are using closures to generate JSON using
`StreamingJsonBuilder`. The HAL implementation for an entity now generates an
incorrect JSON after updating to Groovy 3.
Here is the problem code snipped from Grails Views:
{code:java}
jsonDelegate.call(LINKS_ATTRIBUTE) {
call(SELF_ATTRIBUTE) {
call HREF_ATTRIBUTE, viewHelper.link(resource: object, method:
HttpMethod.GET, absolute: true)
call HREFLANG_ATTRIBUTE, locale.toString()
call TYPE_ATTRIBUTE, contentType
}
Set<Link> links = getLinks(object)
for (link in links) {
call(link.rel) {
call HREF_ATTRIBUTE, link.href
call HREFLANG_ATTRIBUTE, link.hreflang?.toString() ?:
locale.toString()
def linkType = link.contentType
if (linkType) {
call TYPE_ATTRIBUTE, linkType
}
}
}
}
{code}
Although the `resolveStatergy` for the closures is `DELEGATE_FIRST` but I
believe that is not working correctly because it works if the change the above
to:
{code:java}
delegate.call (...
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)