Groovy 1.7.9

org.codehaus.groovy.runtime.metaclass
[Java] Class MetaClassRegistryImpl

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

public class MetaClassRegistryImpl
extends Object

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

Authors:
James Strachan
John Wilson
Jochen Theodorou
Graeme Rocher
Alex Tkachman
Version:
\$Revision: 21040 \$


Field Summary
static int DONT_LOAD_DEFAULT

static int LOAD_DEFAULT

 
Constructor Summary
MetaClassRegistryImpl()

MetaClassRegistryImpl(int loadDefault)

MetaClassRegistryImpl(boolean useAccessible)

@param useAccessible defines whether or not the AccessibleObject.setAccessible method will be called to enable access to all methods when using reflection

MetaClassRegistryImpl(int loadDefault, boolean useAccessible)

 
Method Summary
void addMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)

Adds a listener for constant meta classes.

protected void fireConstantMetaClassUpdate(Class c, MetaClass newMc)

Causes the execution of all registered listeners.

static MetaClassRegistry getInstance(int includeExtension)

Singleton of MetaClassRegistry.

FastArray getInstanceMethods()

MetaClass getMetaClass(Class theClass)

MetaClass getMetaClass(Object obj)

MetaClassCreationHandle getMetaClassCreationHandler()

Gets a handle internally used to create MetaClass implementations WARNING: experimental code, likely to change soon

MetaClassRegistryChangeEventListener[] getMetaClassRegistryChangeEventListeners()

Gets an array of of all registered ConstantMetaClassListener instances.

FastArray getStaticMethods()

Iterator iterator()

Returns an iterator to iterate over all constant meta classes.

void removeMetaClass(Class theClass)

void removeMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)

Removes a constant meta class listener.

void setMetaClass(Class theClass, MetaClass theMetaClass)

Registers a new MetaClass in the registry to customize the type

void setMetaClass(Object obj, MetaClass theMetaClass)

void setMetaClassCreationHandle(MetaClassCreationHandle handle)

Sets a handle internally used to create MetaClass implementations.

boolean useAccessible()

 
Methods inherited from class Object
wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll
 

Field Detail

DONT_LOAD_DEFAULT

public static final int DONT_LOAD_DEFAULT


LOAD_DEFAULT

public static final int LOAD_DEFAULT


 
Constructor Detail

MetaClassRegistryImpl

public MetaClassRegistryImpl()


MetaClassRegistryImpl

public MetaClassRegistryImpl(int loadDefault)


MetaClassRegistryImpl

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


MetaClassRegistryImpl

public MetaClassRegistryImpl(int loadDefault, boolean useAccessible)


 
Method Detail

addMetaClassRegistryChangeEventListener

public void addMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
Adds a listener for constant meta classes.
Parameters:
listener - the listener


fireConstantMetaClassUpdate

protected void fireConstantMetaClassUpdate(Class c, MetaClass newMc)
Causes the execution of all registered listeners. This method is used mostly internal to kick of the listener notification. It can also be used by subclasses to achieve the same.
Parameters:
c - the class
newMc - the new MetaClass


getInstance

public static MetaClassRegistry getInstance(int includeExtension)
Singleton of MetaClassRegistry.
Parameters:
includeExtension
Returns:
the registry


getInstanceMethods

public FastArray getInstanceMethods()


getMetaClass

public final MetaClass getMetaClass(Class theClass)


getMetaClass

public MetaClass getMetaClass(Object obj)


getMetaClassCreationHandler

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


getMetaClassRegistryChangeEventListeners

public MetaClassRegistryChangeEventListener[] getMetaClassRegistryChangeEventListeners()
Gets an array of of all registered ConstantMetaClassListener instances.


getStaticMethods

public FastArray getStaticMethods()


iterator

public Iterator iterator()
Returns an iterator to iterate over all constant meta classes. This iterator can be seen as making a snapshot of the current state of the registry. The snapshot will include all meta classes that has been used unless they are already collected. Collected meta classes will be skipped automatically, so you can expect that each element of the iteration is not null. Calling this method is thread safe, the usage of the iterator is not.
Returns:
the iterator.


removeMetaClass

public void removeMetaClass(Class theClass)


removeMetaClassRegistryChangeEventListener

public void removeMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener)
Removes a constant meta class listener.
Parameters:
listener - the listener


setMetaClass

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


setMetaClass

public void setMetaClass(Object obj, MetaClass theMetaClass)


setMetaClassCreationHandle

public void setMetaClassCreationHandle(MetaClassCreationHandle handle)
Sets a handle internally used to create MetaClass implementations. When replacing the handle with a custom version, you should reuse the old handle to keep custom logic and to use the default logic as fall back. WARNING: experimental code, likely to change soon
Parameters:
handle - the handle


useAccessible

public boolean useAccessible()


 

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