groovy.lang
Class Closure

java.lang.Object
  extended bygroovy.lang.GroovyObjectSupport
      extended bygroovy.lang.Closure
All Implemented Interfaces:
Cloneable, GroovyObject, Runnable
Direct Known Subclasses:
IteratorClosureAdapter, MethodClosure

public abstract class Closure
extends GroovyObjectSupport
implements Cloneable, Runnable

Represents any closure object in Groovy.

Version:
$Revision: 1.34 $
Author:
James Strachan

Constructor Summary
Closure(Object delegate)
           
 
Method Summary
 Closure asWritable()
           
 Object call()
          Invokes the closure without any parameters, returning any value if applicable.
 Object call(Object arguments)
          Invokes the closure, returning any value if applicable.
 Object clone()
          Allows the closure to be cloned
 Closure curry(Object arguments)
          Support for closure currying
 Object getDelegate()
           
protected  MetaMethod getDoCallMethod()
           
protected static Object[] getParameters(Object arguments)
           
 Class[] getParameterTypes()
           
 Object getProperty(String property)
           
 Object invokeMethod(String method, Object arguments)
          Invokes the given method
 void run()
           
 void setDelegate(Object delegate)
          Allows the delegate to be changed such as when performing markup building
 void setProperty(String property, Object newValue)
          Sets the given property to the new value
protected static Object throwRuntimeException(Throwable throwable)
           
 
Methods inherited from class groovy.lang.GroovyObjectSupport
getMetaClass, setMetaClass
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Closure

public Closure(Object delegate)
Method Detail

invokeMethod

public Object invokeMethod(String method,
                           Object arguments)
Description copied from interface: GroovyObject
Invokes the given method

Specified by:
invokeMethod in interface GroovyObject
Overrides:
invokeMethod in class GroovyObjectSupport

getProperty

public Object getProperty(String property)
Specified by:
getProperty in interface GroovyObject
Overrides:
getProperty in class GroovyObjectSupport

setProperty

public void setProperty(String property,
                        Object newValue)
Description copied from interface: GroovyObject
Sets the given property to the new value

Specified by:
setProperty in interface GroovyObject
Overrides:
setProperty in class GroovyObjectSupport

call

public Object call()
Invokes the closure without any parameters, returning any value if applicable.

Returns:
the value if applicable or null if there is no return statement in the closure

call

public Object call(Object arguments)
Invokes the closure, returning any value if applicable.

Parameters:
arguments - could be a single value or a List of values
Returns:
the value if applicable or null if there is no return statement in the closure

getParameters

protected static Object[] getParameters(Object arguments)

getDoCallMethod

protected MetaMethod getDoCallMethod()

throwRuntimeException

protected static Object throwRuntimeException(Throwable throwable)

getDelegate

public Object getDelegate()
Returns:
the delegate Object to which method calls will go which is typically the outer class when the closure is constructed

setDelegate

public void setDelegate(Object delegate)
Allows the delegate to be changed such as when performing markup building

Parameters:
delegate -

getParameterTypes

public Class[] getParameterTypes()
Returns:
the parameter types of this closure

asWritable

public Closure asWritable()
Returns:
a version of this closure which implements Writable

run

public void run()
Specified by:
run in interface Runnable

curry

public Closure curry(Object arguments)
Support for closure currying

Parameters:
arguments -

clone

public Object clone()
             throws CloneNotSupportedException
Allows the closure to be cloned

Throws:
CloneNotSupportedException


Copyright © 2003-2004 The Codehaus. All Rights Reserved.