Package groovy.lang
Interface MetaClassRegistry
- All Known Implementing Classes:
MetaClassRegistryImpl
public interface MetaClassRegistry
A MetaClassRegistry is an object that is responsible for managing the a cache of MetaClass instances. Each
java.lang.Class instance has an associated MetaClass and client code can query this interface for the MetaClass for
a given associated java.lang.Class
- See Also:
MetaClass
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
MetaClassRegistry.MetaClassCreationHandle
Class used as base for the creation of MetaClass implementations. -
Method Summary
Modifier and Type Method Description void
addMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
Adds a meta class change listener for constant meta classesvoid
addNonRemovableMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
Adds a meta class change listener for constant meta classes.MetaClass
getMetaClass(java.lang.Class theClass)
The main function of the registry If a meta class exists then return it otherwise create one, put it in the registry and return itMetaClassRegistry.MetaClassCreationHandle
getMetaClassCreationHandler()
Retrieves the MetaClassCreationHandle that is responsible for constructing MetaClass instancesMetaClassRegistryChangeEventListener[]
getMetaClassRegistryChangeEventListeners()
Returns all registered class change listener for constant meta classes.java.util.Iterator
iterator()
Gets a snapshot of the current constant meta classes and returns it as Iterator.void
removeMetaClass(java.lang.Class theClass)
Removes a cached MetaClass from the registryvoid
removeMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
Removes a meta class change listener for constant meta classesvoid
setMetaClass(java.lang.Class theClass, MetaClass theMetaClass)
Adds a metaclass to the registry for the given classvoid
setMetaClassCreationHandle(MetaClassRegistry.MetaClassCreationHandle handle)
Sets the MetaClassCreationHandle instance that is responsible for constructing instances
-
Method Details
-
getMetaClass
The main function of the registry If a meta class exists then return it otherwise create one, put it in the registry and return it -
setMetaClass
Adds a metaclass to the registry for the given class- Parameters:
theClass
- The classtheMetaClass
- The MetaClass for theClass
-
removeMetaClass
void removeMetaClass(java.lang.Class theClass)Removes a cached MetaClass from the registry- Parameters:
theClass
- The Java class of the MetaClass to remove
-
getMetaClassCreationHandler
MetaClassRegistry.MetaClassCreationHandle getMetaClassCreationHandler()Retrieves the MetaClassCreationHandle that is responsible for constructing MetaClass instances- Returns:
- The MetaClassCreationHandle instance
-
setMetaClassCreationHandle
Sets the MetaClassCreationHandle instance that is responsible for constructing instances- Parameters:
handle
- The handle instance
-
addMetaClassRegistryChangeEventListener
Adds a meta class change listener for constant meta classes- Parameters:
listener
- - the update listener
-
addNonRemovableMetaClassRegistryChangeEventListener
void addNonRemovableMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)Adds a meta class change listener for constant meta classes. This listener cannot be removed!- Parameters:
listener
- - the update listener
-
removeMetaClassRegistryChangeEventListener
Removes a meta class change listener for constant meta classes- Parameters:
listener
- - the update listener
-
getMetaClassRegistryChangeEventListeners
MetaClassRegistryChangeEventListener[] getMetaClassRegistryChangeEventListeners()Returns all registered class change listener for constant meta classes.- Returns:
- an array containing all change listener
-
iterator
java.util.Iterator iterator()Gets a snapshot of the current constant meta classes and returns it as Iterator. Modifications done using this Iterator will not cause a ConcurrentModificationException. If a MetaClass is removed using this Iterator, then the MetaClass will only be removed if the MetaClass was not replaced by another MetaClass in the meantime. If a MetaClass is added while using this Iterator, then it will be part of the Iteration. If a MetaClass replaces another constant meta class, then the Iteration might show two meta classes for the same class.Note: This Iterator may not used with multiple threads.
- Returns:
- Iterator for the constant meta classes
-