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

java.lang.Object
  extended by org.codehaus.groovy.grails.commons.metaclass.AbstractDynamicMethods
All Implemented Interfaces:
DynamicMethods
Direct Known Subclasses:
AbstractDynamicMethodsInterceptor, DefaultDynamicMethods

public abstract class AbstractDynamicMethods
extends Object
implements DynamicMethods

Provides the base implementation responsible for performing dynamic method invocation such as the dynamic finders in GORM.

Since:
0.1
Author:
Steven Devijver, Graeme Rocher

Field Summary
protected  Class<?> clazz
           
protected  Collection<DynamicConstructor> dynamicConstructors
           
protected  Collection<DynamicMethodInvocation> dynamicMethodInvocations
           
protected  Map<String,DynamicProperty> dynamicProperties
           
protected  Collection<StaticMethodInvocation> staticMethodInvocations
           
 
Constructor Summary
AbstractDynamicMethods()
          A non-registering constructor that simple creates an instance
AbstractDynamicMethods(Class<?> theClass)
          Creates and registers a DelegatingMetaClass instance in the registry that delegates to this class.
AbstractDynamicMethods(Class<?> theClass, boolean inRegistry)
          Creates and optionally registers a DelegatingMetaClass in the MetaClasRegistry that delegates to this class.
 
Method Summary
 void addDynamicConstructor(DynamicConstructor constructor)
          Adds a dynamic constructor.
 void addDynamicMethodInvocation(DynamicMethodInvocation methodInvocation)
          Adds a new dynamic method invocation.
 void addDynamicProperty(DynamicProperty property)
          Adds a new dynamic property.
 void addStaticMethodInvocation(StaticMethodInvocation methodInvocation)
          Adds a new static method invocation.
 DynamicMethodInvocation getDynamicMethod(String methodSignature)
          Retrieves a dynamic method for the specified method name.
 DynamicProperty getDynamicProperty(String propertyName)
          Retrieves a dynamic property for the specified property name.
 Object getProperty(Object object, String propertyName, InvocationCallback callback)
          Attempts to get a dynamic property.
 Object invokeConstructor(Object[] arguments, InvocationCallback callBack)
          Attempts to invoke a dynamic constructor.
 Object invokeMethod(Object object, String methodName, Object[] arguments, InvocationCallback callback)
          Attempts to invoke a dynamic method with the specified name and arguments.
 Object invokeStaticMethod(Object object, String methodName, Object[] arguments, InvocationCallback callBack)
          Attempts to invoke a dynamic static method with the specified name and arguments.
 void setProperty(Object object, String propertyName, Object newValue, InvocationCallback callback)
          Attempts to set a dynamic property.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

dynamicMethodInvocations

protected Collection<DynamicMethodInvocation> dynamicMethodInvocations

staticMethodInvocations

protected Collection<StaticMethodInvocation> staticMethodInvocations

dynamicConstructors

protected Collection<DynamicConstructor> dynamicConstructors

dynamicProperties

protected Map<String,DynamicProperty> dynamicProperties

clazz

protected Class<?> clazz
Constructor Detail

AbstractDynamicMethods

public AbstractDynamicMethods(Class<?> theClass)
Creates and registers a DelegatingMetaClass instance in the registry that delegates to this class.

Parameters:
theClass -

AbstractDynamicMethods

public AbstractDynamicMethods(Class<?> theClass,
                              boolean inRegistry)
Creates and optionally registers a DelegatingMetaClass in the MetaClasRegistry that delegates to this class.

Parameters:
theClass -
inRegistry -

AbstractDynamicMethods

public AbstractDynamicMethods()
A non-registering constructor that simple creates an instance

Method Detail

addDynamicConstructor

public void addDynamicConstructor(DynamicConstructor constructor)
Description copied from interface: DynamicMethods
Adds a dynamic constructor.

Specified by:
addDynamicConstructor in interface DynamicMethods
Parameters:
constructor - The constructor to add

addDynamicMethodInvocation

public void addDynamicMethodInvocation(DynamicMethodInvocation methodInvocation)
Description copied from interface: DynamicMethods
Adds a new dynamic method invocation.

Specified by:
addDynamicMethodInvocation in interface DynamicMethods

addStaticMethodInvocation

public void addStaticMethodInvocation(StaticMethodInvocation methodInvocation)
Description copied from interface: DynamicMethods
Adds a new static method invocation.

Specified by:
addStaticMethodInvocation in interface DynamicMethods

addDynamicProperty

public void addDynamicProperty(DynamicProperty property)
Description copied from interface: DynamicMethods
Adds a new dynamic property.

Specified by:
addDynamicProperty in interface DynamicMethods

getProperty

public Object getProperty(Object object,
                          String propertyName,
                          InvocationCallback callback)
Description copied from interface: DynamicMethods
Attempts to get a dynamic property. If successful the InvocationCallback instance is marked as invoked.

Specified by:
getProperty in interface DynamicMethods
Parameters:
object - The instance
propertyName - The property name to get
callback - The callback object
Returns:
The property value if it exists

setProperty

public void setProperty(Object object,
                        String propertyName,
                        Object newValue,
                        InvocationCallback callback)
Description copied from interface: DynamicMethods
Attempts to set a dynamic property. If successful the InvocationCallback instance is marked as invoked.

Specified by:
setProperty in interface DynamicMethods
Parameters:
object - The instance
propertyName - The property name to set
callback - The callback object

invokeMethod

public Object invokeMethod(Object object,
                           String methodName,
                           Object[] arguments,
                           InvocationCallback callback)
Description copied from interface: DynamicMethods
Attempts to invoke a dynamic method with the specified name and arguments. If successful the callback object is marked as invoked.

Specified by:
invokeMethod in interface DynamicMethods
Parameters:
object - The instance to invoke on
methodName - The name of the method
arguments - The arguments of the method
callback - The callback object
Returns:
The method return value

invokeConstructor

public Object invokeConstructor(Object[] arguments,
                                InvocationCallback callBack)
Description copied from interface: DynamicMethods
Attempts to invoke a dynamic constructor. If successful the callback object is marked as invoked.

Specified by:
invokeConstructor in interface DynamicMethods
Parameters:
arguments - The arguments
callBack - The callback object
Returns:
The constructed instance

invokeStaticMethod

public Object invokeStaticMethod(Object object,
                                 String methodName,
                                 Object[] arguments,
                                 InvocationCallback callBack)
Description copied from interface: DynamicMethods
Attempts to invoke a dynamic static method with the specified name and arguments. If successful the callback object is marked as invoked.

Specified by:
invokeStaticMethod in interface DynamicMethods
Parameters:
object - The instance to invoke on
methodName - The name of the method
arguments - The arguments of the method
callBack - The callback object
Returns:
The method return value

getDynamicProperty

public DynamicProperty getDynamicProperty(String propertyName)
Description copied from interface: DynamicMethods
Retrieves a dynamic property for the specified property name.

Specified by:
getDynamicProperty in interface DynamicMethods
Parameters:
propertyName - The name of the property
Returns:
A DynamicProperty instance of null if none exists

getDynamicMethod

public DynamicMethodInvocation getDynamicMethod(String methodSignature)
Description copied from interface: DynamicMethods
Retrieves a dynamic method for the specified method name.

Specified by:
getDynamicMethod in interface DynamicMethods
Parameters:
methodSignature - Then signature of the method
Returns:
The method instance or null if non exists