Groovy Documentation

grails.test
[Java] Class AbstractClosureProxy

java.lang.Object
  groovy.lang.GroovyObjectSupport
      groovy.lang.Closure
          grails.test.AbstractClosureProxy

@SuppressWarnings({ "serial", "rawtypes" })
public abstract class AbstractClosureProxy
extends groovy.lang.Closure

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.


Field Summary
 
Fields inherited from class groovy.lang.Closure
OWNER_FIRST, DELEGATE_FIRST, OWNER_ONLY, DELEGATE_ONLY, TO_SELF, DONE, SKIP, IDENTITY
 
Constructor Summary
AbstractClosureProxy(groovy.lang.Closure closure)

Creates a new instance that wraps the target closure and sends profiling events to the given profiler log.

 
Method Summary
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 groovy.lang.Closure
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(java.lang.Object), groovy.lang.Closure#leftShift(groovy.lang.Closure), groovy.lang.Closure#rightShift(groovy.lang.Closure), groovy.lang.Closure#call(), groovy.lang.Closure#call([Ljava.lang.Object;), groovy.lang.Closure#call(java.lang.Object), groovy.lang.Closure#isCase(java.lang.Object), 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#asWritable(), groovy.lang.Closure#curry([Ljava.lang.Object;), groovy.lang.Closure#rcurry(java.lang.Object), groovy.lang.Closure#rcurry([Ljava.lang.Object;), groovy.lang.Closure#ncurry(int, java.lang.Object), groovy.lang.Closure#ncurry(int, [Ljava.lang.Object;), groovy.lang.Closure#setDirective(int), groovy.lang.Closure#memoize(), groovy.lang.Closure#memoizeAtMost(int), groovy.lang.Closure#memoizeAtLeast(int), groovy.lang.Closure#memoizeBetween(int, int), groovy.lang.Closure#trampoline(), groovy.lang.Closure#trampoline([Ljava.lang.Object;), groovy.lang.Closure#getMetaClass(), groovy.lang.Closure#setMetaClass(groovy.lang.MetaClass), groovy.lang.Closure#invokeMethod(java.lang.String, java.lang.Object), groovy.lang.Closure#wait(), groovy.lang.Closure#wait(long), groovy.lang.Closure#wait(long, int), 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()
 
Methods inherited from class groovy.lang.GroovyObjectSupport
groovy.lang.GroovyObjectSupport#setProperty(java.lang.String, java.lang.Object), groovy.lang.GroovyObjectSupport#getProperty(java.lang.String), groovy.lang.GroovyObjectSupport#getMetaClass(), groovy.lang.GroovyObjectSupport#setMetaClass(groovy.lang.MetaClass), groovy.lang.GroovyObjectSupport#invokeMethod(java.lang.String, java.lang.Object), groovy.lang.GroovyObjectSupport#wait(), groovy.lang.GroovyObjectSupport#wait(long), groovy.lang.GroovyObjectSupport#wait(long, int), 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()
 

Constructor Detail

AbstractClosureProxy

public AbstractClosureProxy(groovy.lang.Closure closure)
Creates a new instance that wraps the target closure and sends profiling events to the given profiler log.
Parameters:
closure - The target closure to wrap.


 
Method Detail

asWritable

@Override
public groovy.lang.Closure asWritable()


call

@Override
public java.lang.Object call(java.lang.Object... objects)
This is the important one: logs entry and exit of the closure call.


createWrapper

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. Usually the implementation simply creates a new instance of the current class, copying over the existing proxy properties:
    return new MyClosureProxy(c, this.field1, ...)
 
Parameters:
c - The closure to wrap/proxy.


curry

@Override
public groovy.lang.Closure curry(java.lang.Object... objects)


doAfterCall

protected void doAfterCall(java.lang.Object[] args)
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.
Parameters:
args - The arguments passed to the closure.


doBeforeCall

protected void doBeforeCall(java.lang.Object[] args)
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.
Parameters:
args - The arguments passed to the closure.


equals

@Override
public 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.


getDelegate

@Override
public java.lang.Object getDelegate()


getDirective

@Override
public int getDirective()


getMaximumNumberOfParameters

@Override
public int getMaximumNumberOfParameters()


getParameterTypes

@Override
public java.lang.Class[] getParameterTypes()


getProperty

@Override
public java.lang.Object getProperty(java.lang.String property)


getResolveStrategy

@Override
public int getResolveStrategy()


hashCode

@Override
public int hashCode()


isCase

@Override
public boolean isCase(java.lang.Object o)


setDelegate

@Override
public void setDelegate(java.lang.Object o)


setDirective

@Override
public void setDirective(int i)


setProperty

@Override
public void setProperty(java.lang.String s, java.lang.Object o)


setResolveStrategy

@Override
public void setResolveStrategy(int i)


 

Groovy Documentation