|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectgroovy.lang.MetaClass
public abstract class MetaClass
Base class for meta class implementations. The meta class is used to invoke methods or to get fields/properties. For proper initialization of this class it is not enough to only call the constructor, the initialize() must be called too. The invoke methods should check that initialize() was called. Adding methods is valid unless initilise method was called. Therefore addNewStaticMethod and addNewInstanceMethod should check that that initilise awas not called before.
Field Summary | |
---|---|
protected static java.util.logging.Logger |
log
|
static java.lang.Object |
NO_METHOD_FOUND
|
protected java.lang.Class |
theClass
|
protected static boolean |
useReflection
|
Constructor Summary | |
---|---|
protected |
MetaClass(java.lang.Class theClass)
|
Method Summary | |
---|---|
abstract void |
addNewInstanceMethod(java.lang.reflect.Method method)
adds a new instance method to this meta class. |
abstract void |
addNewStaticMethod(java.lang.reflect.Method method)
adds a new static method to this meta class. |
java.lang.Object |
getAttribute(java.lang.Class sender,
java.lang.Object receiver,
java.lang.String messageName,
boolean useSuper)
|
abstract java.lang.Object |
getAttribute(java.lang.Object object,
java.lang.String attribute)
|
abstract ClassNode |
getClassNode()
|
abstract java.util.List |
getMetaMethods()
|
abstract java.util.List |
getMethods()
|
abstract java.util.List |
getProperties()
|
java.lang.Object |
getProperty(java.lang.Class sender,
java.lang.Object receiver,
java.lang.String messageName,
boolean useSuper,
boolean fromInsideClass)
|
abstract java.lang.Object |
getProperty(java.lang.Object object,
java.lang.String property)
|
abstract void |
initialize()
complete the initlialisation process. |
abstract java.lang.Object |
invokeConstructor(java.lang.Object[] arguments)
|
java.lang.Object |
invokeConstructorAt(java.lang.Class at,
java.lang.Object[] arguments)
Deprecated. |
java.lang.Object |
invokeMethod(java.lang.Class sender,
java.lang.Object receiver,
java.lang.String methodName,
java.lang.Object[] arguments,
boolean isCallToSuper,
boolean fromInsideClass)
|
java.lang.Object |
invokeMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object arguments)
|
abstract java.lang.Object |
invokeMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object[] arguments)
|
java.lang.Object |
invokeMissingMethod(java.lang.Object instance,
java.lang.String methodName,
java.lang.Object[] arguments)
|
abstract java.lang.Object |
invokeStaticMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object[] arguments)
|
boolean |
isGroovyObject()
|
static boolean |
isUseReflection()
|
abstract MetaMethod |
pickMethod(java.lang.String methodName,
java.lang.Class[] arguments)
Deprecated. |
protected abstract MetaMethod |
retrieveMethod(java.lang.String methodName,
java.lang.Class[] arguments)
Deprecated. |
void |
setAttribute(java.lang.Class sender,
java.lang.Object receiver,
java.lang.String messageName,
java.lang.Object messageValue,
boolean useSuper,
boolean fromInsideClass)
|
abstract void |
setAttribute(java.lang.Object object,
java.lang.String attribute,
java.lang.Object newValue)
|
void |
setProperty(java.lang.Class sender,
java.lang.Object receiver,
java.lang.String messageName,
java.lang.Object messageValue,
boolean useSuper,
boolean fromInsideClass)
|
abstract void |
setProperty(java.lang.Object object,
java.lang.String property,
java.lang.Object newValue)
|
static void |
setUseReflection(boolean useReflection)
Allows reflection to be enabled in situations where bytecode generation of method invocations causes issues. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final java.util.logging.Logger log
protected static boolean useReflection
public static final java.lang.Object NO_METHOD_FOUND
protected final java.lang.Class theClass
Constructor Detail |
---|
protected MetaClass(java.lang.Class theClass)
Method Detail |
---|
public static boolean isUseReflection()
public static void setUseReflection(boolean useReflection)
useReflection
- public boolean isGroovyObject()
public java.lang.Object invokeMissingMethod(java.lang.Object instance, java.lang.String methodName, java.lang.Object[] arguments)
public java.lang.Object invokeMethod(java.lang.Object object, java.lang.String methodName, java.lang.Object arguments)
public java.lang.Object invokeMethod(java.lang.Class sender, java.lang.Object receiver, java.lang.String methodName, java.lang.Object[] arguments, boolean isCallToSuper, boolean fromInsideClass)
public java.lang.Object getProperty(java.lang.Class sender, java.lang.Object receiver, java.lang.String messageName, boolean useSuper, boolean fromInsideClass)
public void setProperty(java.lang.Class sender, java.lang.Object receiver, java.lang.String messageName, java.lang.Object messageValue, boolean useSuper, boolean fromInsideClass)
public java.lang.Object getAttribute(java.lang.Class sender, java.lang.Object receiver, java.lang.String messageName, boolean useSuper)
public void setAttribute(java.lang.Class sender, java.lang.Object receiver, java.lang.String messageName, java.lang.Object messageValue, boolean useSuper, boolean fromInsideClass)
public abstract java.lang.Object invokeConstructor(java.lang.Object[] arguments)
public abstract java.lang.Object invokeMethod(java.lang.Object object, java.lang.String methodName, java.lang.Object[] arguments)
public abstract java.lang.Object invokeStaticMethod(java.lang.Object object, java.lang.String methodName, java.lang.Object[] arguments)
public abstract java.lang.Object getProperty(java.lang.Object object, java.lang.String property)
public abstract void setProperty(java.lang.Object object, java.lang.String property, java.lang.Object newValue)
public abstract java.lang.Object getAttribute(java.lang.Object object, java.lang.String attribute)
public abstract void setAttribute(java.lang.Object object, java.lang.String attribute, java.lang.Object newValue)
public abstract void addNewInstanceMethod(java.lang.reflect.Method method)
method
- the method to be addedpublic abstract void addNewStaticMethod(java.lang.reflect.Method method)
method
- the method to be addedpublic abstract void initialize()
public abstract java.util.List getProperties()
public abstract ClassNode getClassNode()
public abstract java.util.List getMetaMethods()
public abstract java.util.List getMethods()
public java.lang.Object invokeConstructorAt(java.lang.Class at, java.lang.Object[] arguments)
public abstract MetaMethod pickMethod(java.lang.String methodName, java.lang.Class[] arguments)
protected abstract MetaMethod retrieveMethod(java.lang.String methodName, java.lang.Class[] arguments)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |