org.springframework.beans
Class PropertyValue

java.lang.Object
  extended by org.springframework.core.AttributeAccessorSupport
      extended by org.springframework.beans.BeanMetadataAttributeAccessor
          extended by org.springframework.beans.PropertyValue
All Implemented Interfaces:
java.io.Serializable, BeanMetadataElement, AttributeAccessor

public class PropertyValue
extends BeanMetadataAttributeAccessor
implements java.io.Serializable

Object to hold information and value for an individual bean property. Using an object here, rather than just storing all properties in a map keyed by property name, allows for more flexibility, and the ability to handle indexed properties etc in an optimized way.

Note that the value doesn't need to be the final required type: A BeanWrapper implementation should handle any necessary conversion, as this object doesn't know anything about the objects it will be applied to.

Since:
13 May 2001
Author:
Rod Johnson, Rob Harrop, Juergen Hoeller
See Also:
PropertyValues, BeanWrapper, Serialized Form

Field Summary
(package private)  java.lang.Boolean conversionNecessary
          Package-visible field that indicates whether conversion is necessary
private  boolean converted
           
private  java.lang.Object convertedValue
           
private  java.lang.String name
           
private  boolean optional
           
(package private)  java.beans.PropertyDescriptor resolvedDescriptor
          Package-visible field for caching the resolved PropertyDescriptor
(package private)  java.lang.Object resolvedTokens
          Package-visible field for caching the resolved property path tokens
private  java.lang.Object source
           
private  java.lang.Object value
           
 
Constructor Summary
PropertyValue(PropertyValue original)
          Copy constructor.
PropertyValue(PropertyValue original, java.lang.Object newValue)
          Constructor that exposes a new value for an original value holder.
PropertyValue(java.lang.String name, java.lang.Object value)
          Create a new PropertyValue instance.
 
Method Summary
 boolean equals(java.lang.Object other)
           
 java.lang.Object getConvertedValue()
          Return the converted value of the constructor argument, after processed type conversion.
 java.lang.String getName()
          Return the name of the property.
 PropertyValue getOriginalPropertyValue()
          Return the original PropertyValue instance for this value holder.
 java.lang.Object getValue()
          Return the value of the property.
 int hashCode()
           
 boolean isConverted()
          Return whether this holder contains a converted value already (true), or whether the value still needs to be converted (false).
 boolean isOptional()
           
 void setConvertedValue(java.lang.Object value)
          Set the converted value of the constructor argument, after processed type conversion.
 void setOptional(boolean optional)
           
 java.lang.String toString()
           
 
Methods inherited from class org.springframework.beans.BeanMetadataAttributeAccessor
addMetadataAttribute, getAttribute, getMetadataAttribute, getSource, removeAttribute, setAttribute, setSource
 
Methods inherited from class org.springframework.core.AttributeAccessorSupport
attributeNames, copyAttributesFrom, hasAttribute
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

name

private final java.lang.String name

value

private final java.lang.Object value

source

private java.lang.Object source

optional

private boolean optional

converted

private boolean converted

convertedValue

private java.lang.Object convertedValue

conversionNecessary

volatile java.lang.Boolean conversionNecessary
Package-visible field that indicates whether conversion is necessary


resolvedTokens

volatile java.lang.Object resolvedTokens
Package-visible field for caching the resolved property path tokens


resolvedDescriptor

volatile java.beans.PropertyDescriptor resolvedDescriptor
Package-visible field for caching the resolved PropertyDescriptor

Constructor Detail

PropertyValue

public PropertyValue(java.lang.String name,
                     java.lang.Object value)
Create a new PropertyValue instance.

Parameters:
name - the name of the property (never null)
value - the value of the property (possibly before type conversion)

PropertyValue

public PropertyValue(PropertyValue original)
Copy constructor.

Parameters:
original - the PropertyValue to copy (never null)

PropertyValue

public PropertyValue(PropertyValue original,
                     java.lang.Object newValue)
Constructor that exposes a new value for an original value holder. The original holder will be exposed as source of the new holder.

Parameters:
original - the PropertyValue to link to (never null)
newValue - the new value to apply
Method Detail

getName

public java.lang.String getName()
Return the name of the property.


getValue

public java.lang.Object getValue()
Return the value of the property.

Note that type conversion will not have occurred here. It is the responsibility of the BeanWrapper implementation to perform type conversion.


getOriginalPropertyValue

public PropertyValue getOriginalPropertyValue()
Return the original PropertyValue instance for this value holder.

Returns:
the original PropertyValue (either a source of this value holder or this value holder itself).

setOptional

public void setOptional(boolean optional)

isOptional

public boolean isOptional()

isConverted

public boolean isConverted()
Return whether this holder contains a converted value already (true), or whether the value still needs to be converted (false).


setConvertedValue

public void setConvertedValue(java.lang.Object value)
Set the converted value of the constructor argument, after processed type conversion.


getConvertedValue

public java.lang.Object getConvertedValue()
Return the converted value of the constructor argument, after processed type conversion.


equals

public boolean equals(java.lang.Object other)
Overrides:
equals in class AttributeAccessorSupport

hashCode

public int hashCode()
Overrides:
hashCode in class AttributeAccessorSupport

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object