Groovy Documentation

## grails.test
[Java] Class AbstractClosureProxy

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

    @SuppressWarnings("serial")
    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

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(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(Object[] objects)`
`protected void` | `doAfterCall(Object[] args)` This method is called after the target closure is invoked.
`protected void` | `doBeforeCall(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()`
`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#getDelegate(), groovy.lang.Closure#call(), groovy.lang.Closure#call(java.lang.Object), groovy.lang.Closure#call([Ljava.lang.Object;), groovy.lang.Closure#getMaximumNumberOfParameters(), groovy.lang.Closure#setResolveStrategy(int), groovy.lang.Closure#isCase(java.lang.Object), groovy.lang.Closure#getDirective(), groovy.lang.Closure#asWritable(), groovy.lang.Closure#getResolveStrategy(), groovy.lang.Closure#getThisObject(), groovy.lang.Closure#curry([Ljava.lang.Object;), groovy.lang.Closure#setDirective(int), groovy.lang.Closure#rcurry([Ljava.lang.Object;), groovy.lang.Closure#ncurry(int, [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()

Methods inherited from class java.lang.Object
java.lang.Object#wait(), java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#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(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(Object[] objects)

### doAfterCall

    protected void doAfterCall(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(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 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