Skeleton implementation of a wrapper class for closures that allows you to intercept invocations of the closure. The wrapper can be used anywhere that the target closure can be used.
Fields inherited from class | Fields |
---|---|
class groovy.lang.Closure |
OWNER_FIRST, DELEGATE_FIRST, OWNER_ONLY, DELEGATE_ONLY, TO_SELF, DONE, SKIP, IDENTITY |
Constructor and description |
---|
AbstractClosureProxy
(groovy.lang.Closure<?> closure) Creates a new instance that wraps the target closure and sends profiling events to the given profiler log. |
Type Params | Return Type | Name and description |
---|---|---|
|
groovy.lang.Closure<?> |
asWritable() |
|
java.lang.Object |
call(java.lang.Object... objects) This is the important one: logs entry and exit of the closure call. |
|
protected groovy.lang.Closure<?> |
createWrapper(groovy.lang.Closure<?> c) Called when a new instance of the proxy needs to be created for the given closure. |
|
groovy.lang.Closure<?> |
curry(java.lang.Object... objects) |
|
protected void |
doAfterCall(java.lang.Object[] args) This method is called after the target closure is invoked. |
|
protected void |
doBeforeCall(java.lang.Object[] args) This method is called before the target closure is invoked. |
|
boolean |
equals(java.lang.Object obj) Compares based on identities, but unlike the standard implementation this one will return true if the given object is the
target closure for this wrapper as well. |
|
java.lang.Object |
getDelegate() |
|
int |
getDirective() |
|
int |
getMaximumNumberOfParameters() |
|
java.lang.Class<?>[] |
getParameterTypes() |
|
java.lang.Object |
getProperty(java.lang.String property) |
|
int |
getResolveStrategy() |
|
int |
hashCode() |
|
boolean |
isCase(java.lang.Object o) |
|
void |
setDelegate(java.lang.Object o) |
|
void |
setDirective(int i) |
|
void |
setProperty(java.lang.String s, java.lang.Object o) |
|
void |
setResolveStrategy(int i) |
Methods inherited from class | Name |
---|---|
class groovy.lang.Closure |
groovy.lang.Closure#call([Ljava.lang.Object;), groovy.lang.Closure#call(), groovy.lang.Closure#call(java.lang.Object), groovy.lang.Closure#run(), groovy.lang.Closure#setProperty(java.lang.String, java.lang.Object), groovy.lang.Closure#getProperty(java.lang.String), groovy.lang.Closure#clone(), groovy.lang.Closure#getParameterTypes(), groovy.lang.Closure#setDelegate(java.lang.Object), groovy.lang.Closure#getOwner(), groovy.lang.Closure#leftShift(groovy.lang.Closure), groovy.lang.Closure#leftShift(java.lang.Object), groovy.lang.Closure#rightShift(groovy.lang.Closure), groovy.lang.Closure#trampoline([Ljava.lang.Object;), groovy.lang.Closure#trampoline(), groovy.lang.Closure#dehydrate(), groovy.lang.Closure#rehydrate(java.lang.Object, java.lang.Object, java.lang.Object), groovy.lang.Closure#setDirective(int), groovy.lang.Closure#isCase(java.lang.Object), groovy.lang.Closure#asWritable(), groovy.lang.Closure#curry(java.lang.Object), groovy.lang.Closure#curry([Ljava.lang.Object;), groovy.lang.Closure#rcurry([Ljava.lang.Object;), groovy.lang.Closure#rcurry(java.lang.Object), groovy.lang.Closure#ncurry(int, java.lang.Object), groovy.lang.Closure#ncurry(int, [Ljava.lang.Object;), groovy.lang.Closure#memoize(), groovy.lang.Closure#memoizeAtMost(int), groovy.lang.Closure#memoizeAtLeast(int), groovy.lang.Closure#memoizeBetween(int, int), groovy.lang.Closure#getMaximumNumberOfParameters(), groovy.lang.Closure#setResolveStrategy(int), groovy.lang.Closure#getResolveStrategy(), groovy.lang.Closure#getThisObject(), groovy.lang.Closure#getDelegate(), groovy.lang.Closure#getDirective(), groovy.lang.Closure#invokeMethod(java.lang.String, java.lang.Object), groovy.lang.Closure#setMetaClass(groovy.lang.MetaClass), groovy.lang.Closure#getMetaClass(), groovy.lang.Closure#wait(long, int), groovy.lang.Closure#wait(long), groovy.lang.Closure#wait(), groovy.lang.Closure#equals(java.lang.Object), groovy.lang.Closure#toString(), groovy.lang.Closure#hashCode(), groovy.lang.Closure#getClass(), groovy.lang.Closure#notify(), groovy.lang.Closure#notifyAll() |
class groovy.lang.GroovyObjectSupport |
groovy.lang.GroovyObjectSupport#setProperty(java.lang.String, java.lang.Object), groovy.lang.GroovyObjectSupport#getProperty(java.lang.String), groovy.lang.GroovyObjectSupport#invokeMethod(java.lang.String, java.lang.Object), groovy.lang.GroovyObjectSupport#setMetaClass(groovy.lang.MetaClass), groovy.lang.GroovyObjectSupport#getMetaClass(), groovy.lang.GroovyObjectSupport#wait(long, int), groovy.lang.GroovyObjectSupport#wait(long), groovy.lang.GroovyObjectSupport#wait(), groovy.lang.GroovyObjectSupport#equals(java.lang.Object), groovy.lang.GroovyObjectSupport#toString(), groovy.lang.GroovyObjectSupport#hashCode(), groovy.lang.GroovyObjectSupport#getClass(), groovy.lang.GroovyObjectSupport#notify(), groovy.lang.GroovyObjectSupport#notifyAll() |
Creates a new instance that wraps the target closure and sends profiling events to the given profiler log.
closure
- The target closure to wrap.This is the important one: logs entry and exit of the closure call.
Called when a new instance of the proxy needs to be created for the given closure. Usually the implementation simply creates a new instance of the current class, copying over the existing proxy properties:
return new MyClosureProxy(c, this.field1, ...)
c
- The closure to wrap/proxy.This method is called after the target closure is invoked. It will be triggered whether or not an exception is thrown by the target closure.
args
- The arguments passed to the closure.This method is called before the target closure is invoked. This is a passive interceptor, so you cannot prevent the call to the target closure. You can modify the arguments, though, but it's not recommended unless you really know what you're doing.
args
- The arguments passed to the closure. Compares based on identities, but unlike the standard implementation
this one will return true
if the given object is the
target closure for this wrapper as well.