[Java] Class MetaClassRegistryImpl

  • org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl
All Implemented Interfaces and Traits:
MetaClassRegistry
public class MetaClassRegistryImpl
extends Object

A registry of MetaClass instances which caches introspection and reflection information and allows methods to be dynamically added to existing classes at runtime

Field Summary

Fields
Modifiers Name Description
static int DONT_LOAD_DEFAULT
static int LOAD_DEFAULT
static String MODULE_META_INF_FILE @deprecated Use instead

Properties Summary

Properties
Type Name and description
MetaClass metaClass
MetaClass metaClass

Constructor Summary

Constructors
Constructor and description
MetaClassRegistryImpl ()
MetaClassRegistryImpl (int loadDefault)
MetaClassRegistryImpl (boolean useAccessible)
@param useAccessible defines whether or not the AccessibleObject.setAccessible method will be called to enable access to all methods when using reflection
MetaClassRegistryImpl (int loadDefault, boolean useAccessible)

Methods Summary

Methods
Type Params Return Type Name and description
void addMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
Adds a listener for constant meta classes.
void addNonRemovableMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
Adds a listener for constant meta classes.
protected void fireConstantMetaClassUpdate(Object obj, Class c, MetaClass oldMC, MetaClass newMc)
Causes the execution of all registered listeners.
static MetaClassRegistry getInstance(int includeExtension)
Singleton of MetaClassRegistry.
FastArray getInstanceMethods()
MetaClass getMetaClass(Class theClass)
MetaClass getMetaClass(Object obj)
MetaClassRegistry.MetaClassCreationHandle getMetaClassCreationHandler()
Gets a handle internally used to create MetaClass implementations WARNING: experimental code, likely to change soon
MetaClassRegistryChangeEventListener[] getMetaClassRegistryChangeEventListeners()
Gets an array of all registered ConstantMetaClassListener instances.
ExtensionModuleRegistry getModuleRegistry()
FastArray getStaticMethods()
Iterator iterator()
Returns an iterator to iterate over all constant meta classes.
void registerExtensionModuleFromProperties(Properties properties, ClassLoader classLoader, Map<CachedClass, List<MetaMethod>> map)
void removeMetaClass(Class theClass)
void removeMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
Removes a constant meta class listener.
void setMetaClass(Class theClass, MetaClass theMetaClass)
Registers a new MetaClass in the registry to customize the type
void setMetaClass(Object obj, MetaClass theMetaClass)
void setMetaClassCreationHandle(MetaClassRegistry.MetaClassCreationHandle handle)
Sets a handle internally used to create MetaClass implementations.
boolean useAccessible()

Inherited Methods Summary

Inherited Methods
Methods inherited from class Name
class Object wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll

Field Detail

public static final int DONT_LOAD_DEFAULT

public static final int LOAD_DEFAULT

@Deprecated public static final String MODULE_META_INF_FILE

deprecated:
Use instead

Property Detail

MetaClass metaClass

MetaClass metaClass

Constructor Detail

public MetaClassRegistryImpl()

public MetaClassRegistryImpl(int loadDefault)

public MetaClassRegistryImpl(boolean useAccessible)

Parameters:
useAccessible - defines whether or not the AccessibleObject.setAccessible method will be called to enable access to all methods when using reflection

public MetaClassRegistryImpl(int loadDefault, boolean useAccessible)

Method Detail

public void addMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)

Adds a listener for constant meta classes.

Parameters:
listener - the listener

public void addNonRemovableMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)

Adds a listener for constant meta classes. This listener cannot be removed!

Parameters:
listener - the listener

protected void fireConstantMetaClassUpdate(Object obj, Class c, MetaClass oldMC, MetaClass newMc)

Causes the execution of all registered listeners. This method is used mostly internal to kick of the listener notification. It can also be used by subclasses to achieve the same.

Parameters:
obj - object instance if the MetaClass change is on a per-instance metaclass (or null if global)
c - the class
oldMC - the old MetaClass
newMc - the new MetaClass

public static MetaClassRegistry getInstance(int includeExtension)

Singleton of MetaClassRegistry.

Parameters:
includeExtension
Returns:
the registry

public FastArray getInstanceMethods()

public final MetaClass getMetaClass(Class theClass)

public MetaClass getMetaClass(Object obj)

public MetaClassRegistry.MetaClassCreationHandle getMetaClassCreationHandler()

Gets a handle internally used to create MetaClass implementations WARNING: experimental code, likely to change soon

Returns:
the handle

public MetaClassRegistryChangeEventListener[] getMetaClassRegistryChangeEventListeners()

Gets an array of all registered ConstantMetaClassListener instances.

public ExtensionModuleRegistry getModuleRegistry()

public FastArray getStaticMethods()

public Iterator iterator()

Returns an iterator to iterate over all constant meta classes. This iterator can be seen as making a snapshot of the current state of the registry. The snapshot will include all meta classes that has been used unless they are already collected. Collected meta classes will be skipped automatically, so you can expect that each element of the iteration is not null. Calling this method is thread safe, the usage of the iterator is not.

Returns:
the iterator.

public void registerExtensionModuleFromProperties(Properties properties, ClassLoader classLoader, Map<CachedClass, List<MetaMethod>> map)

public void removeMetaClass(Class theClass)

public void removeMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)

Removes a constant meta class listener.

Parameters:
listener - the listener

public void setMetaClass(Class theClass, MetaClass theMetaClass)

Registers a new MetaClass in the registry to customize the type

Parameters:
theClass
theMetaClass

public void setMetaClass(Object obj, MetaClass theMetaClass)

public void setMetaClassCreationHandle(MetaClassRegistry.MetaClassCreationHandle handle)

Sets a handle internally used to create MetaClass implementations. When replacing the handle with a custom version, you should reuse the old handle to keep custom logic and to use the default logic as fall back. WARNING: experimental code, likely to change soon

Parameters:
handle - the handle

public boolean useAccessible()

© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/2.5.14/html/gapi/org/codehaus/groovy/runtime/metaclass/MetaClassRegistryImpl.html