org.codehaus.groovy.grails.commons.metaclass
Class ClosureInvokingDynamicMethod

java.lang.Object
  extended by org.codehaus.groovy.grails.commons.metaclass.ClosureInvokingDynamicMethod
All Implemented Interfaces:
Cloneable, DynamicMethodInvocation, StaticMethodInvocation

public class ClosureInvokingDynamicMethod
extends Object
implements DynamicMethodInvocation, StaticMethodInvocation, Cloneable

An implementation of DynamicMethodInvocation that invoces a closure

Since:
0.4

Created: Feb 2, 2007 Time: 6:55:57 PM

Author:
Graeme Rocher

Constructor Summary
ClosureInvokingDynamicMethod(String pattern, groovy.lang.Closure closure)
           
 
Method Summary
protected  Object clone()
          For thread safety when using a ClosureInvokingDynamicMethod it should ALWAYS be cloned first Weird behaviour will occur if a unique cloned instance is not used for each invocation
 Object invoke(Class clazz, String methodName, Object[] arguments)
          Invokes the actual method.
 Object invoke(Object target, String methodName, Object[] arguments)
          Invokes the actual method.
 boolean isMethodMatch(String methodName)
          Checks if a method name matches the criteria of the implementation class.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ClosureInvokingDynamicMethod

public ClosureInvokingDynamicMethod(String pattern,
                                    groovy.lang.Closure closure)
Method Detail

clone

protected Object clone()
                throws CloneNotSupportedException
For thread safety when using a ClosureInvokingDynamicMethod it should ALWAYS be cloned first Weird behaviour will occur if a unique cloned instance is not used for each invocation

Overrides:
clone in class Object
Returns:
A cloned instance
Throws:
CloneNotSupportedException

isMethodMatch

public boolean isMethodMatch(String methodName)
Description copied from interface: DynamicMethodInvocation

Checks if a method name matches the criteria of the implementation class.

Specified by:
isMethodMatch in interface DynamicMethodInvocation
Specified by:
isMethodMatch in interface StaticMethodInvocation
Parameters:
methodName - the static method name
Returns:
result of criteria match test

invoke

public Object invoke(Class clazz,
                     String methodName,
                     Object[] arguments)
Description copied from interface: StaticMethodInvocation

Invokes the actual method. The class, method name and arguments are provided. If no arguments are passed the argument array is empty.

Specified by:
invoke in interface StaticMethodInvocation
Parameters:
clazz - the class the static method is called on
methodName - the static method name
arguments - the arguments supplied
Returns:
the return value of the static method invocation

invoke

public Object invoke(Object target,
                     String methodName,
                     Object[] arguments)
Description copied from interface: DynamicMethodInvocation

Invokes the actual method. The target object and arguments are supplied.

Specified by:
invoke in interface DynamicMethodInvocation
Parameters:
target - the target on which the method is invoked.
arguments - the arguments passed in the method call @return the return value of the dynamic method invocation.


Copyright (c) 2005-2006 The Grails project