Groovy 1.7.0

groovy.lang
Interface MetaObjectProtocol


interface MetaObjectProtocol

An interface that defines the API usable by clients of Groovy's Meta Object Protocol (MOP). These methods are implemented by the reference implementation of the

link:

see:
MetaClassImpl
author:
John Wilson
author:
Graeme Rocher


Method Summary
Object getAttribute(Object object, String attribute)

Retrieves an attribute of an instance of the class returned by the getTheClass() method.

MetaMethod getMetaMethod(String name, Object[] args)

Retrieves an instance MetaMethod for the given name and argument values, using the types of the argument values to establish the chosen MetaMethod

MetaProperty getMetaProperty(String name)

Returns a MetaProperty for the given name or null if it doesn't exist

List getMethods()

Obtain a list of all the meta methods available on this meta class

List getProperties()

Obtain a list of all meta properties available on this meta class

Object getProperty(Object object, String property)

Retrieves a property of an instance of the class returned by the getTheClass() method.

MetaMethod getStaticMetaMethod(String name, Object[] args)

Retreives a static MetaMethod for the given name and argument values, using the types of the arguments to establish the chosen MetaMethod

Class getTheClass()

Retrieves that Java Class that the attached Meta behaviours apply to

MetaProperty hasProperty(Object obj, String name)

Returns true of the implementing MetaClass has a property of the given name

Note that this method will only return true for realised properties and does not take into account implementation of getProperty or propertyMissing

Object invokeConstructor(Object[] arguments)

Invokes a constructor for the given arguments.

Object invokeMethod(Object object, String methodName, Object[] arguments)

Invokes a method on the given Object with the given name and arguments.

Object invokeMethod(Object object, String methodName, Object arguments)

Invokes a method on the given object, with the given name and single argument.

Object invokeStaticMethod(Object object, String methodName, Object[] arguments)

Invokes a static method on the given Object with the given name and arguments.

List respondsTo(Object obj, String name, Object[] argTypes)

Returns an object satisfying Groovy truth if the implementing MetaClass responds to a method with the given name and arguments types.

List respondsTo(Object obj, String name)

Returns an object satisfying Groovy truth if the implementing MetaClass responds to a method with the given name regardless of arguments.

void setAttribute(Object object, String attribute, Object newValue)

Sets an attribute of an instance of the class returned by the getTheClass() method.

void setProperty(Object object, String property, Object newValue)

Sets a property of an instance of the class returned by the getTheClass() method.

 

Method Detail

getAttribute

public Object getAttribute(Object object, String attribute)

Retrieves an attribute of an instance of the class returned by the getTheClass() method.

What this means is largely down to the MetaClass implementation, however the default case would result in attempt to read a field of the instance.

see:
MetaClassImpl
param:
object An instance of the class returned by the getTheClass() method
param:
attribute The name of the attribute to retrieve the value for
return:
The attribute value


getMetaMethod

public MetaMethod getMetaMethod(String name, Object[] args)
Retrieves an instance MetaMethod for the given name and argument values, using the types of the argument values to establish the chosen MetaMethod
param:
name The name of the MetaMethod
param:
args The argument types
return:
A MetaMethod or null if it doesn't exist


getMetaProperty

public MetaProperty getMetaProperty(String name)
Returns a MetaProperty for the given name or null if it doesn't exist
param:
name The name of the MetaProperty
return:
A MetaProperty or null


getMethods

public List getMethods()
Obtain a list of all the meta methods available on this meta class
see:
MetaMethod
return:
A list of MetaMethod instances


getProperties

public List getProperties()
Obtain a list of all meta properties available on this meta class
see:
MetaProperty
return:
A list of MetaProperty instances


getProperty

public Object getProperty(Object object, String property)

Retrieves a property of an instance of the class returned by the getTheClass() method.

What this means is largely down to the MetaClass implementation, however the default case would result in an attempt to invoke a JavaBean getter, or if no such getter exists a public field of the instance.

see:
MetaClassImpl
param:
object An instance of the class returned by the getTheClass() method
param:
property The name of the property to retrieve the value for
return:
The properties value


getStaticMetaMethod

public MetaMethod getStaticMetaMethod(String name, Object[] args)
Retreives a static MetaMethod for the given name and argument values, using the types of the arguments to establish the chosen MetaMethod
param:
name The name of the MetaMethod
param:
args The argument types
return:
A MetaMethod or null if it doesn't exist


getTheClass

public Class getTheClass()
Retrieves that Java Class that the attached Meta behaviours apply to
return:
The java.lang.Class instance


hasProperty

public MetaProperty hasProperty(Object obj, String name)

Returns true of the implementing MetaClass has a property of the given name

Note that this method will only return true for realised properties and does not take into account implementation of getProperty or propertyMissing

param:
obj The object to inspect
param:
name The name of the property
return:
The MetaProperty or null if it doesn't exist


invokeConstructor

public Object invokeConstructor(Object[] arguments)
Invokes a constructor for the given arguments. The MetaClass will attempt to pick the best argument which matches the types of the objects passed within the arguments array
param:
arguments The arguments to the constructor
return:
An instance of the java.lang.Class that this MetaObjectProtocol object applies to


invokeMethod

public Object invokeMethod(Object object, String methodName, Object[] arguments)

Invokes a method on the given Object with the given name and arguments. The MetaClass will attempt to pick the best method for the given name and arguments. If a method cannot be invoked a MissingMethodException will be thrown.

see:
MissingMethodException
param:
object The instance which the method is invoked on
param:
methodName The name of the method
param:
arguments The arguments to the method
return:
The return value of the method which is null if the return type is void


invokeMethod

public Object invokeMethod(Object object, String methodName, Object arguments)

Invokes a method on the given object, with the given name and single argument.

see:
#invokeMethod(Object, String, Object[])
param:
object The Object to invoke the method on
param:
methodName The name of the method
param:
arguments The argument to the method
return:
The return value of the method which is null if the return type is void


invokeStaticMethod

public Object invokeStaticMethod(Object object, String methodName, Object[] arguments)

Invokes a static method on the given Object with the given name and arguments.

The Object can either be an instance of the class that this MetaObjectProtocol instance applies to or the java.lang.Class instance itself. If a method cannot be invoked a MissingMethodException is will be thrown

see:
MissingMethodException
param:
object An instance of the class returned by the getTheClass() method or the class itself
param:
methodName The name of the method
param:
arguments The arguments to the method
return:
The return value of the method which is null if the return type is void


respondsTo

public List respondsTo(Object obj, String name, Object[] argTypes)

Returns an object satisfying Groovy truth if the implementing MetaClass responds to a method with the given name and arguments types.

Note that this method's return value is based on realised methods and does not take into account objects or classes that implement invokeMethod or methodMissing

This method is "safe" in that it will always return a value and never throw an exception

param:
obj The object to inspect
param:
name The name of the method of interest
param:
argTypes The argument types to match against
return:
A List of MetaMethods matching the argument types which will be empty if no matching methods exist


respondsTo

public List respondsTo(Object obj, String name)

Returns an object satisfying Groovy truth if the implementing MetaClass responds to a method with the given name regardless of arguments. In other words this method will return for foo() and foo(String).

Note that this method's return value is based on realised methods and does not take into account objects or classes that implement invokeMethod or methodMissing

This method is "safe" in that it will always return a value and never throw an exception

param:
obj The object to inspect
param:
name The name of the method of interest
return:
A List of MetaMethods which will be empty if no methods with the given name exist


setAttribute

public void setAttribute(Object object, String attribute, Object newValue)

Sets an attribute of an instance of the class returned by the getTheClass() method.

What this means is largely down to the MetaClass implementation, however the default case would result in an attempt to set a field of the instance.

see:
MetaClassImpl
param:
object An instance of the class returned by the getTheClass() method
param:
attribute The name of the attribute to set
param:
newValue The new value of the attribute


setProperty

public void setProperty(Object object, String property, Object newValue)

Sets a property of an instance of the class returned by the getTheClass() method.

What this means is largely down to the MetaClass implementation, however the default case would result in an attempt to invoke a JavaBean setter, or if no such setter exists to set a public field of the instance.

see:
MetaClassImpl
param:
object An instance of the class returned by the getTheClass() method
param:
property The name of the property to set
param:
newValue The new value of the property


 

Copyright © 2003-2009 The Codehaus. All rights reserved.