|
Groovy 1.8.4 | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectgroovy.lang.MetaClassImpl
public class MetaClassImpl extends Object
Allows methods to be dynamically added to existing classes at runtime
Nested Class Summary | |
---|---|
static class |
MetaClassImpl.Index
|
Field Summary | |
---|---|
protected static String |
INVOKE_METHOD_METHOD
|
protected static String |
METHOD_MISSING
|
protected static String |
PROPERTY_MISSING
|
protected static String |
STATIC_METHOD_MISSING
|
protected static String |
STATIC_PROPERTY_MISSING
|
protected MetaMethod |
getPropertyMethod
|
protected MetaMethod |
invokeMethodMethod
|
protected boolean |
isGroovyObject
|
protected boolean |
isMap
|
protected MetaMethodIndex |
metaMethodIndex
|
protected MetaClassRegistry |
registry
|
protected MetaMethod |
setPropertyMethod
|
protected CachedClass |
theCachedClass
|
protected Class |
theClass
|
Constructor Summary | |
MetaClassImpl(Class theClass, MetaMethod[] add)
|
|
MetaClassImpl(Class theClass)
|
|
MetaClassImpl(MetaClassRegistry registry, Class theClass, MetaMethod[] add)
|
|
MetaClassImpl(MetaClassRegistry registry, Class theClass)
|
Method Summary | |
---|---|
void
|
addMetaBeanProperty(MetaBeanProperty mp)
Adds a new MetaBeanProperty to this MetaClass |
void
|
addMetaMethod(MetaMethod method)
adds a MetaMethod to this class. |
protected void
|
addMetaMethodToIndex(MetaMethod method, Header header)
|
void
|
addNewInstanceMethod(Method method)
|
void
|
addNewStaticMethod(Method method)
|
protected void
|
applyPropertyDescriptors(PropertyDescriptor[] propertyDescriptors)
|
protected void
|
checkIfGroovyObjectMethod(MetaMethod metaMethod)
Checks if the metaMethod is a method from the GroovyObject interface such as setProperty, getProperty and invokeMethod |
protected void
|
checkInitalised()
checks if the initialisation of the class id complete. |
protected Object
|
chooseMethod(String methodName, Object methodOrList, Class[] arguments)
Chooses the correct method to use from a list of methods which match by name. |
protected void
|
clearInvocationCaches()
remove all method call cache entries. |
CallSite
|
createConstructorSite(CallSite site, Object[] args)
|
CallSite
|
createPogoCallCurrentSite(CallSite site, Class sender, Object[] args)
|
CallSite
|
createPogoCallSite(CallSite site, Object[] args)
|
CallSite
|
createPojoCallSite(CallSite site, Object receiver, Object[] args)
|
CallSite
|
createStaticSite(CallSite site, Object[] args)
|
protected void
|
dropMethodCache(String name)
|
protected void
|
dropStaticMethodCache(String name)
|
protected static MetaMethod
|
findMethodInClassHierarchy(Class instanceKlazz, String methodName, Class[] arguments, MetaClass metaClass)
|
protected MetaMethod
|
findMixinMethod(String methodName, Class[] arguments)
|
protected static MetaMethod
|
findOwnMethod(Class instanceKlazz, String methodName, Class[] arguments, MetaClass metaClass, MetaMethod method)
|
protected MetaBeanProperty
|
findPropertyInClassHierarchy(String propertyName, CachedClass theClass)
|
MetaMethod[]
|
getAdditionalMetaMethods()
|
Object
|
getAttribute(Class sender, Object receiver, String messageName, boolean useSuper)
|
Object
|
getAttribute(Class sender, Object object, String attribute, boolean useSuper, boolean fromInsideClass)
Looks up the given attribute (field) on the given object |
Object
|
getAttribute(Object object, String attribute)
|
ClassInfo
|
getClassInfo()
|
ClassNode
|
getClassNode()
|
MetaProperty
|
getEffectiveGetMetaProperty(Class sender, Object object, String name, boolean useSuper)
todo these special cases should be special MetaClasses maybe |
MetaMethod
|
getMetaMethod(String name, Object[] argTypes)
@see MetaObjectProtocol#getMetaMethod(String, Object[]) |
List
|
getMetaMethods()
|
MetaProperty
|
getMetaProperty(String name)
@see MetaObjectProtocol#getMetaProperty(String) |
MetaMethod
|
getMethodWithCaching(Class sender, String methodName, Object[] arguments, boolean isCallToSuper)
|
MetaMethod
|
getMethodWithoutCaching(Class sender, String methodName, Class[] arguments, boolean isCallToSuper)
|
List
|
getMethods()
|
List
|
getProperties()
Get all the properties defined for this type |
Object
|
getProperty(Class sender, Object object, String name, boolean useSuper, boolean fromInsideClass)
@return the given property's value on the object |
Object
|
getProperty(Object object, String property)
|
MetaMethod
|
getStaticMetaMethod(String name, Object[] argTypes)
@see MetaObjectProtocol#getStaticMetaMethod(String, Object[]) |
protected Object
|
getSubclassMetaMethods(String methodName)
|
protected LinkedList
|
getSuperClasses()
|
CachedClass
|
getTheCachedClass()
|
Class
|
getTheClass()
|
int
|
getVersion()
|
MetaProperty
|
hasProperty(Object obj, String name)
@see MetaObjectProtocol#hasProperty(Object,String) |
void
|
incVersion()
|
void
|
initialize()
|
Object
|
invokeConstructor(Object[] arguments)
|
Object
|
invokeConstructorAt(Class at, Object[] arguments)
Warning, this method will be removed |
Object
|
invokeMethod(Object object, String methodName, Object arguments)
|
Object
|
invokeMethod(Object object, String methodName, Object[] originalArguments)
Invokes the given method on the object. |
Object
|
invokeMethod(Class sender, Object object, String methodName, Object[] originalArguments, boolean isCallToSuper, boolean fromInsideClass)
Invokes the given method on the object. |
Object
|
invokeMissingMethod(Object instance, String methodName, Object[] arguments)
|
Object
|
invokeMissingProperty(Object instance, String propertyName, Object optionalValue, boolean isGetter)
|
Object
|
invokeStaticMethod(Object object, String methodName, Object[] arguments)
|
protected Object
|
invokeStaticMissingProperty(Object instance, String propertyName, Object optionalValue, boolean isGetter)
Hook to deal with the case of MissingProperty for static properties. |
boolean
|
isGroovyObject()
|
protected boolean
|
isInitialized()
|
boolean
|
isModified()
|
protected void
|
onGetPropertyFoundInHierarchy(MetaMethod method)
|
protected void
|
onInvokeMethodFoundInHierarchy(MetaMethod method)
|
protected void
|
onMixinMethodFound(MetaMethod method)
|
protected void
|
onSetPropertyFoundInHierarchy(MetaMethod method)
|
protected void
|
onSuperMethodFoundInHierarchy(MetaMethod method)
|
protected void
|
onSuperPropertyFoundInHierarchy(MetaBeanProperty property)
|
MetaMethod
|
pickMethod(String methodName, Class[] arguments)
|
List
|
respondsTo(Object obj, String name, Object[] argTypes)
@see MetaObjectProtocol#respondsTo(Object, String, Object[]) |
List
|
respondsTo(Object obj, String name)
@see MetaObjectProtocol#respondsTo(Object, String) |
Constructor
|
retrieveConstructor(Class[] arguments)
|
protected MetaMethod
|
retrieveMethod(String methodName, Class[] arguments)
@deprecated use pickMethod instead |
MetaMethod
|
retrieveStaticMethod(String methodName, Object[] arguments)
|
int
|
selectConstructorAndTransformArguments(int numberOfConstructors, Object[] arguments)
|
void
|
setAttribute(Class sender, Object object, String attribute, Object newValue, boolean useSuper, boolean fromInsideClass)
Sets the given attribute (field) on the given object |
void
|
setAttribute(Object object, String attribute, Object newValue)
|
void
|
setProperties(Object bean, Map map)
Sets a number of bean properties from the given Map where the keys are the String names of properties and the values are the values of the properties to set |
void
|
setProperty(Class sender, Object object, String name, Object newValue, boolean useSuper, boolean fromInsideClass)
Sets the property value on an object |
void
|
setProperty(Object object, String property, Object newValue)
|
String
|
toString()
todo there is no CompileUnit in scope so class name checking won't work but that mostly affects the bytecode generation rather than viewing the AST |
Methods inherited from class Object | |
---|---|
wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll |
Field Detail |
---|
protected static final String INVOKE_METHOD_METHOD
protected static final String METHOD_MISSING
protected static final String PROPERTY_MISSING
protected static final String STATIC_METHOD_MISSING
protected static final String STATIC_PROPERTY_MISSING
protected MetaMethod getPropertyMethod
protected MetaMethod invokeMethodMethod
protected final boolean isGroovyObject
protected final boolean isMap
protected final MetaMethodIndex metaMethodIndex
protected MetaClassRegistry registry
protected MetaMethod setPropertyMethod
protected final CachedClass theCachedClass
protected final Class theClass
Constructor Detail |
---|
public MetaClassImpl(Class theClass, MetaMethod[] add)
public MetaClassImpl(Class theClass)
public MetaClassImpl(MetaClassRegistry registry, Class theClass, MetaMethod[] add)
public MetaClassImpl(MetaClassRegistry registry, Class theClass)
Method Detail |
---|
public void addMetaBeanProperty(MetaBeanProperty mp)
mp
- The MetaBeanProperty
public void addMetaMethod(MetaMethod method)
method
- the MetaMethod
protected void addMetaMethodToIndex(MetaMethod method, Header header)
public void addNewInstanceMethod(Method method)
public void addNewStaticMethod(Method method)
protected void applyPropertyDescriptors(PropertyDescriptor[] propertyDescriptors)
protected final void checkIfGroovyObjectMethod(MetaMethod metaMethod)
metaMethod
- The metaMethod instance
protected void checkInitalised()
protected Object chooseMethod(String methodName, Object methodOrList, Class[] arguments)
methodOrList
- the possible methods to choose from
protected void clearInvocationCaches()
public CallSite createConstructorSite(CallSite site, Object[] args)
public CallSite createPogoCallCurrentSite(CallSite site, Class sender, Object[] args)
public CallSite createPogoCallSite(CallSite site, Object[] args)
public CallSite createPojoCallSite(CallSite site, Object receiver, Object[] args)
public CallSite createStaticSite(CallSite site, Object[] args)
protected void dropMethodCache(String name)
protected void dropStaticMethodCache(String name)
protected static MetaMethod findMethodInClassHierarchy(Class instanceKlazz, String methodName, Class[] arguments, MetaClass metaClass)
protected MetaMethod findMixinMethod(String methodName, Class[] arguments)
protected static MetaMethod findOwnMethod(Class instanceKlazz, String methodName, Class[] arguments, MetaClass metaClass, MetaMethod method)
protected MetaBeanProperty findPropertyInClassHierarchy(String propertyName, CachedClass theClass)
public MetaMethod[] getAdditionalMetaMethods()
public Object getAttribute(Class sender, Object receiver, String messageName, boolean useSuper)
public Object getAttribute(Class sender, Object object, String attribute, boolean useSuper, boolean fromInsideClass)
public Object getAttribute(Object object, String attribute)
public ClassInfo getClassInfo()
public ClassNode getClassNode()
public MetaProperty getEffectiveGetMetaProperty(Class sender, Object object, String name, boolean useSuper)
public MetaMethod getMetaMethod(String name, Object[] argTypes)
public List getMetaMethods()
public MetaProperty getMetaProperty(String name)
public MetaMethod getMethodWithCaching(Class sender, String methodName, Object[] arguments, boolean isCallToSuper)
public MetaMethod getMethodWithoutCaching(Class sender, String methodName, Class[] arguments, boolean isCallToSuper)
public List getMethods()
public List getProperties()
public Object getProperty(Class sender, Object object, String name, boolean useSuper, boolean fromInsideClass)
public Object getProperty(Object object, String property)
public MetaMethod getStaticMetaMethod(String name, Object[] argTypes)
protected Object getSubclassMetaMethods(String methodName)
protected LinkedList getSuperClasses()
public final CachedClass getTheCachedClass()
public Class getTheClass()
public int getVersion()
public MetaProperty hasProperty(Object obj, String name)
public void incVersion()
public void initialize()
public Object invokeConstructor(Object[] arguments)
public Object invokeConstructorAt(Class at, Object[] arguments)
public Object invokeMethod(Object object, String methodName, Object arguments)
public Object invokeMethod(Object object, String methodName, Object[] originalArguments)
public Object invokeMethod(Class sender, Object object, String methodName, Object[] originalArguments, boolean isCallToSuper, boolean fromInsideClass)
public Object invokeMissingMethod(Object instance, String methodName, Object[] arguments)
public Object invokeMissingProperty(Object instance, String propertyName, Object optionalValue, boolean isGetter)
public Object invokeStaticMethod(Object object, String methodName, Object[] arguments)
protected Object invokeStaticMissingProperty(Object instance, String propertyName, Object optionalValue, boolean isGetter)
instance
- The instancepropertyName
- The name of the propertyoptionalValue
- The value in the case of a setterisGetter
- True if its a getter
public boolean isGroovyObject()
protected boolean isInitialized()
public boolean isModified()
protected void onGetPropertyFoundInHierarchy(MetaMethod method)
protected void onInvokeMethodFoundInHierarchy(MetaMethod method)
protected void onMixinMethodFound(MetaMethod method)
protected void onSetPropertyFoundInHierarchy(MetaMethod method)
protected void onSuperMethodFoundInHierarchy(MetaMethod method)
protected void onSuperPropertyFoundInHierarchy(MetaBeanProperty property)
public MetaMethod pickMethod(String methodName, Class[] arguments)
public List respondsTo(Object obj, String name, Object[] argTypes)
public List respondsTo(Object obj, String name)
public Constructor retrieveConstructor(Class[] arguments)
protected MetaMethod retrieveMethod(String methodName, Class[] arguments)
public MetaMethod retrieveStaticMethod(String methodName, Object[] arguments)
public int selectConstructorAndTransformArguments(int numberOfConstructors, Object[] arguments)
public void setAttribute(Class sender, Object object, String attribute, Object newValue, boolean useSuper, boolean fromInsideClass)
public void setAttribute(Object object, String attribute, Object newValue)
public void setProperties(Object bean, Map map)
public void setProperty(Class sender, Object object, String name, Object newValue, boolean useSuper, boolean fromInsideClass)
public void setProperty(Object object, String property, Object newValue)
public String toString()
Copyright © 2003-2011 The Codehaus. All rights reserved.