## org.codehaus.groovy.runtime.metaclass
Class ThreadManagedMetaBeanProperty

This MetaBeanProperty will create a pseudo property whose value is bound to the current Thread using soft references. The values will go out of scope and be garabage collected when the Thread dies or when memory is required by the JVM

The property uses an InheritableThreadLocal instance internally so child threads will still be able to see the property

author:
  Graeme Rocher

since:
  1.1

Field Summary
`ThreadLocal` | `PROPERTY_INSTANCE_HOLDER`
`String` | `PROPERTY_SET_PREFIX`
`def` | `ZERO_ARGUMENT_LIST`
`Class` | `declaringClass`
`ThreadBoundGetter` | `getter`
`Object` | `initialValue`
`Closure` | `initialValueCreator`
`ThreadBoundSetter` | `setter`

Constructor Summary
`ThreadManagedMetaBeanProperty(Class declaringClass, String name, Class type, Object iv)` Constructs a new ThreadManagedBeanProperty for the given arguments
`ThreadManagedMetaBeanProperty(Class declaringClass, String name, Class type, Closure initialValueCreator)` Constructs a new ThreadManagedBeanProperty for the given arguments

Method Summary
`MetaMethod` | `getGetter()`
`Object` | `getInitialValue()` Retrieves the initial value of the ThreadBound property
`Object` | `getInitialValue(Object object)`
`MetaMethod` | `getSetter()`
`static Map` | `getThreadBoundPropertMap()`
`static Object` | `getThreadBoundPropertyValue(Object obj, String name, Object initialValue)`
`void` | `setInitialValueCreator(Closure callable)` Closure responsible for creating the initial value of thread-managed bean properties
`static Object` | `setThreadBoundPropertyValue(Object obj, String name, Object value)`

Constructor Detail

### ThreadManagedMetaBeanProperty

    public ThreadManagedMetaBeanProperty(Class declaringClass, String name, Class type, Object iv)

  Constructs a new ThreadManagedBeanProperty for the given arguments
  param:
    declaringClass The class that declares the property
  param:
    name The name of the property
  param:
    type The type of the property
  param:
    iv The properties initial value

### ThreadManagedMetaBeanProperty

    public ThreadManagedMetaBeanProperty(Class declaringClass, String name, Class type, Closure initialValueCreator)

  Constructs a new ThreadManagedBeanProperty for the given arguments
  param:
    declaringClass The class that declares the property
  param:
    name The name of the property
  param:
    type The type of the property
  param:
    initialValueCreator The closure responsible for creating the initial value

Method Detail

### getGetter

    public MetaMethod getGetter()

### getInitialValue

    public Object getInitialValue()

  Retrieves the initial value of the ThreadBound property
  return:
    The initial value

### getInitialValue

    public Object getInitialValue(Object object)

### getSetter

    public MetaMethod getSetter()

### getThreadBoundPropertMap

    static Map getThreadBoundPropertMap()

### getThreadBoundPropertyValue

    static Object getThreadBoundPropertyValue(Object obj, String name, Object initialValue)

### setInitialValueCreator

    public void setInitialValueCreator(Closure callable)

  Closure responsible for creating the initial value of thread-managed bean properties
  param:
    callable The closure responsible for creating the initial value

### setThreadBoundPropertyValue

    static Object setThreadBoundPropertyValue(Object obj, String name, Object value)