org.codehaus.groovy.runtime.metaclass
Class MetaClassRegistryImpl

java.lang.Object
  extended by org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl
All Implemented Interfaces:
MetaClassRegistry

public class MetaClassRegistryImpl
extends Object
implements MetaClassRegistry

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

Version:
$Revision: 10896 $
Author:
James Strachan, John Wilson, Jochen Theodorou, Graeme Rocher, Alex Tkachman

Nested Class Summary
 
Nested classes/interfaces inherited from interface groovy.lang.MetaClassRegistry
MetaClassRegistry.MetaClassCreationHandle
 
Field Summary
static int DONT_LOAD_DEFAULT
           
static int LOAD_DEFAULT
           
 
Constructor Summary
MetaClassRegistryImpl()
           
MetaClassRegistryImpl(boolean useAccessible)
           
MetaClassRegistryImpl(int loadDefault)
           
MetaClassRegistryImpl(int loadDefault, boolean useAccessible)
           
 
Method Summary
static MetaClassRegistry getInstance(int includeExtension)
          Singleton of MetaClassRegistry.
 FastArray getInstanceMethods()
           
 MetaClass getMetaClass(Class theClass)
           
 MetaClassRegistry.MetaClassCreationHandle getMetaClassCreationHandler()
          Gets a handle internally used to create MetaClass implementations WARNING: experimental code, likely to change soon
 FastArray getStaticMethods()
           
 void removeMetaClass(Class theClass)
          Removes a cached MetaClass from the registry
 void setMetaClass(Class theClass, MetaClass theMetaClass)
          Registers a new MetaClass in the registry to customize the type
 void setMetaClassCreationHandle(MetaClassRegistry.MetaClassCreationHandle handle)
          Sets a handle internally used to create MetaClass implementations.
 boolean useAccessible()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOAD_DEFAULT

public static final int LOAD_DEFAULT
See Also:
Constant Field Values

DONT_LOAD_DEFAULT

public static final int DONT_LOAD_DEFAULT
See Also:
Constant Field Values
Constructor Detail

MetaClassRegistryImpl

public MetaClassRegistryImpl()

MetaClassRegistryImpl

public MetaClassRegistryImpl(int loadDefault)

MetaClassRegistryImpl

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

MetaClassRegistryImpl

public MetaClassRegistryImpl(int loadDefault,
                             boolean useAccessible)
Method Detail

getMetaClass

public MetaClass getMetaClass(Class theClass)
Specified by:
getMetaClass in interface MetaClassRegistry

removeMetaClass

public void removeMetaClass(Class theClass)
Description copied from interface: MetaClassRegistry
Removes a cached MetaClass from the registry

Specified by:
removeMetaClass in interface MetaClassRegistry
Parameters:
theClass - The Java class of the MetaClass to remove

setMetaClass

public void setMetaClass(Class theClass,
                         MetaClass theMetaClass)
Registers a new MetaClass in the registry to customize the type

Specified by:
setMetaClass in interface MetaClassRegistry
Parameters:
theClass -
theMetaClass -

useAccessible

public boolean useAccessible()

getMetaClassCreationHandler

public MetaClassRegistry.MetaClassCreationHandle getMetaClassCreationHandler()
Gets a handle internally used to create MetaClass implementations WARNING: experimental code, likely to change soon

Specified by:
getMetaClassCreationHandler in interface MetaClassRegistry
Returns:
the handle

setMetaClassCreationHandle

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 resuse the old handle to keep custom logic and to use the default logic as fallback. WARNING: experimental code, likely to change soon

Specified by:
setMetaClassCreationHandle in interface MetaClassRegistry
Parameters:
handle - the handle

getInstance

public static MetaClassRegistry getInstance(int includeExtension)
Singleton of MetaClassRegistry. Shall we use threadlocal to store the instance?

Parameters:
includeExtension -

getInstanceMethods

public FastArray getInstanceMethods()

getStaticMethods

public FastArray getStaticMethods()

Copyright © 2003-2008 The Codehaus. All rights reserved.