org.codehaus.groovy.runtime.metaclass
Class ThreadManagedMetaBeanProperty

java.lang.Object
  extended by groovy.lang.MetaProperty
      extended by groovy.lang.MetaBeanProperty
          extended by org.codehaus.groovy.runtime.metaclass.ThreadManagedMetaBeanProperty

public class ThreadManagedMetaBeanProperty
extends MetaBeanProperty

This MetaBeanProperty will create a pseudo property whose value is bound to an object using weak references. The values will go out of scope and be garabage collected when the the object is collected In fact, this class should be called ExpandoProperty

Since:
1.1
Author:
Graeme Rocher, Alex Tkachman

Nested Class Summary
(package private)  class ThreadManagedMetaBeanProperty.ThreadBoundGetter
          Accesses the ThreadBound state of the property as a getter
private  class ThreadManagedMetaBeanProperty.ThreadBoundSetter
          Sets the ThreadBound state of the property like a setter
 
Field Summary
private  java.lang.Class declaringClass
           
private  ThreadManagedMetaBeanProperty.ThreadBoundGetter getter
           
private  java.lang.Object initialValue
           
private  Closure initialValueCreator
           
private  ManagedConcurrentMap instance2Prop
           
private static java.util.concurrent.ConcurrentHashMap<java.lang.String,ManagedConcurrentMap> propName2Map
           
private  ThreadManagedMetaBeanProperty.ThreadBoundSetter setter
           
private static ReferenceBundle softBundle
           
private static CachedClass[] ZERO_ARGUMENT_LIST
           
 
Fields inherited from class groovy.lang.MetaProperty
name, PROPERTY_SET_PREFIX, type
 
Constructor Summary
ThreadManagedMetaBeanProperty(java.lang.Class declaringClass, java.lang.String name, java.lang.Class type, Closure initialValueCreator)
          Constructs a new ThreadManagedBeanProperty for the given arguments
ThreadManagedMetaBeanProperty(java.lang.Class declaringClass, java.lang.String name, java.lang.Class type, java.lang.Object iv)
          Constructs a new ThreadManagedBeanProperty for the given arguments
 
Method Summary
 MetaMethod getGetter()
          Get the getter method.
 java.lang.Object getInitialValue()
          Retrieves the initial value of the ThreadBound property
 java.lang.Object getInitialValue(java.lang.Object object)
           
private static ManagedConcurrentMap getInstance2PropName(java.lang.String name)
           
 MetaMethod getSetter()
          Get the setter method.
 void setInitialValueCreator(Closure callable)
          Closure responsible for creating the initial value of thread-managed bean properties
 
Methods inherited from class groovy.lang.MetaBeanProperty
getField, getModifiers, getProperty, setField, setProperty
 
Methods inherited from class groovy.lang.MetaProperty
getGetterName, getName, getSetterName, getType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ZERO_ARGUMENT_LIST

private static final CachedClass[] ZERO_ARGUMENT_LIST

propName2Map

private static final java.util.concurrent.ConcurrentHashMap<java.lang.String,ManagedConcurrentMap> propName2Map

instance2Prop

private final ManagedConcurrentMap instance2Prop

declaringClass

private java.lang.Class declaringClass

getter

private ThreadManagedMetaBeanProperty.ThreadBoundGetter getter

setter

private ThreadManagedMetaBeanProperty.ThreadBoundSetter setter

initialValue

private java.lang.Object initialValue

initialValueCreator

private Closure initialValueCreator

softBundle

private static final ReferenceBundle softBundle
Constructor Detail

ThreadManagedMetaBeanProperty

public ThreadManagedMetaBeanProperty(java.lang.Class declaringClass,
                                     java.lang.String name,
                                     java.lang.Class type,
                                     java.lang.Object iv)
Constructs a new ThreadManagedBeanProperty for the given arguments

Parameters:
declaringClass - The class that declares the property
name - The name of the property
type - The type of the property
iv - The properties initial value

ThreadManagedMetaBeanProperty

public ThreadManagedMetaBeanProperty(java.lang.Class declaringClass,
                                     java.lang.String name,
                                     java.lang.Class type,
                                     Closure initialValueCreator)
Constructs a new ThreadManagedBeanProperty for the given arguments

Parameters:
declaringClass - The class that declares the property
name - The name of the property
type - The type of the property
initialValueCreator - The closure responsible for creating the initial value
Method Detail

getInitialValue

public java.lang.Object getInitialValue()
Retrieves the initial value of the ThreadBound property

Returns:
The initial value

getInitialValue

public java.lang.Object getInitialValue(java.lang.Object object)

setInitialValueCreator

public void setInitialValueCreator(Closure callable)
Closure responsible for creating the initial value of thread-managed bean properties

Parameters:
callable - The closure responsible for creating the initial value

getInstance2PropName

private static ManagedConcurrentMap getInstance2PropName(java.lang.String name)

getGetter

public MetaMethod getGetter()
Description copied from class: MetaBeanProperty
Get the getter method.

Overrides:
getGetter in class MetaBeanProperty

getSetter

public MetaMethod getSetter()
Description copied from class: MetaBeanProperty
Get the setter method.

Overrides:
getSetter in class MetaBeanProperty


Copyright © ${year} The Codehaus. All Rights Reserved.