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
static class MetaClassRegistry.MetaClassCreationHandle
          Class used as base for the creation of MetaClass implementations.
 
Method Summary
 void addMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
          adds a meta class change listener for constant meta classes
 void addNonRemovableMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
          adds a meta class change listener for constant meta classes.
 MetaClass getMetaClass(java.lang.Class theClass)
           
 MetaClassRegistry.MetaClassCreationHandle getMetaClassCreationHandler()
          Retrieves the MetaClassCreationHandle that is responsible for constructing MetaClass instances
 MetaClassRegistryChangeEventListener[] 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 registry
 void removeMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
          removes a meta class change listener for constant meta classes
 void setMetaClass(java.lang.Class theClass, MetaClass theMetaClass)
           
 void setMetaClassCreationHandle(MetaClassRegistry.MetaClassCreationHandle handle)
          Sets the MetaClassCreationHandle instance that is responsible for constructing instances
 

Method Detail

getMetaClass

MetaClass getMetaClass(java.lang.Class theClass)

setMetaClass

void setMetaClass(java.lang.Class theClass,
                  MetaClass theMetaClass)

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

void setMetaClassCreationHandle(MetaClassRegistry.MetaClassCreationHandle handle)
Sets the MetaClassCreationHandle instance that is responsible for constructing instances

Parameters:
handle - The handle instance

addMetaClassRegistryChangeEventListener

void addMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
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

void removeMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
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.
This Iterator may not used in multiple threads.

Returns:
Iterator for the constant meta classes