public class MetaClassImpl extends Object
Allows methods to be dynamically added to existing classes at runtime
| Modifiers | Name | Description |
|---|---|---|
static class |
MetaClassImpl.Index |
|
static class |
MetaClassImpl.MetaConstructor |
| Modifiers | Name | Description |
|---|---|---|
static Object[] |
EMPTY_ARGUMENTS |
|
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 and description |
|---|
MetaClassImpl
(Class theClass, MetaMethod[] add) |
MetaClassImpl
(Class theClass) |
MetaClassImpl
(MetaClassRegistry registry, Class theClass, MetaMethod[] add) |
MetaClassImpl
(MetaClassRegistry registry, Class theClass) |
| Type | Name and description |
|---|---|
void |
addMetaBeanProperty(MetaBeanProperty mp) |
void |
addMetaMethod(MetaMethod method) |
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) |
protected void |
checkInitalised() |
protected Object |
chooseMethod(String methodName, Object methodOrList, Class[] arguments) |
protected void |
clearInvocationCaches() |
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)remove all method call cache entries. |
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) |
Object |
getAttribute(Object object, String attribute) |
ClassInfo |
getClassInfo() |
ClassNode |
getClassNode()return false: add method null: ignore method true: replace |
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() |
Object |
getProperty(Class sender, Object object, String name, boolean useSuper, boolean fromInsideClass) |
Object |
getProperty(Object object, String property) |
MetaClassRegistry |
getRegistry() |
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 |
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) |
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) |
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) |
MetaMethod |
retrieveConstructor(Object[] arguments) |
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) |
void |
setAttribute(Object object, String attribute, Object newValue) |
void |
setProperties(Object bean, Map map) |
void |
setProperty(Class sender, Object object, String name, Object newValue, boolean useSuper, boolean fromInsideClass) |
void |
setProperty(Object object, String property, Object newValue) |
String |
toString()@return the matching method which should be found |
remove all method call cache entries. This should be done if a method is added during runtime, but not by using a category.
return false: add method null: ignore method true: replace
todo these special cases should be special MetaClasses maybe
Invokes the given method on the object.
Copyright © 2003-2014 The Codehaus. All rights reserved.