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
    • Method Detail

      • 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