[ https://issues.apache.org/jira/browse/GROOVY-4610?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17346234#comment-17346234 ]
Eric Milles commented on GROOVY-4610: ------------------------------------- https://github.com/apache/groovy/pull/1577 > GroovyInterceptable (AOP) not working with closures > --------------------------------------------------- > > Key: GROOVY-4610 > URL: https://issues.apache.org/jira/browse/GROOVY-4610 > Project: Groovy > Issue Type: Bug > Components: groovy-runtime > Environment: JDK 1.6.x, Grails 1.2.1 > Reporter: Sunny Thandassery > Priority: Major > > I've got a grails app with service classes that implement > {{GroovyInterceptable}}: > {code:groovy} > class customerService implements GroovyInterceptable { > private List<Customer> customers > def invokeMethod(String name, args) { > log.debug "=======>INVOKING method [$name] with args:$args" > } > void foo() { > customers.each { doSomething(it) } > } > void doSomething(Customer cust) { > log.debug "doSomething invoked with $cust" > } > } > {code} > If I call foo() or doSomething() *directly* from another class, the > invokeMethod gets called like it is supposed to. However, when foo() calls > doSomething(), that call is not intercepted in invokeMethod. > If I change from > {code:groovy} > customers.each { doSomething(it) } > {code} > to > {code:groovy} > for(Customer cust: customers) { doSomething(cust) } > {code} > then the invokeMethod gets called just fine. > There appears to be an {{ExpandoMetaClass}} bug that prevents closures and > {{GroovyInterceptable}} from working together. -- This message was sent by Atlassian Jira (v8.3.4#803005)