开发者

GroovyInterceptable (AOP) and closures

I've got a grails app with Service classes that inherit from Groovy's GroovyInterceptable:

class customerSerrvice 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" }

}

The above is a greatly simplified representation, but it gives you the idea. 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

customers.each { doSomething(it) }

to

for(Customer cust: customers) { doSomething(cust) }

then the invokeMethod gets called just fine.

So is there something abo开发者_如何学Gout closures and GroovyInterceptable that don't go together? Is there any way to get the invokeMethod to work with closures short of changing them all out?

Thanks


Confirmed as a bug, old link: http://jira.codehaus.org/browse/GROOVY-4610, new link: https://issues.apache.org/jira/browse/GROOVY-4610

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜