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:
  • Method Details

    • getMetaClass

      MetaClass getMetaClass(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 it
    • setMetaClass

      void setMetaClass(Class theClass, MetaClass theMetaClass)
      Adds a metaclass to the registry for the given class
      Parameters:
      theClass - The class
      theMetaClass - The MetaClass for theClass
    • removeMetaClass

      void removeMetaClass(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

      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