Package org.springframework.beans

# Class MutablePropertyValues

java.lang.Object
org.springframework.beans.MutablePropertyValues

All Implemented Interfaces:
  `Serializable`, `Iterable<PropertyValue>`, `PropertyValues`

public class MutablePropertyValues extends Object implements PropertyValues, Serializable
The default implementation of the `PropertyValues` interface. Allows simple manipulation of properties, and provides constructors to support deep copy and construction from a Map.

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

## Constructor Summary

Constructors
Constructor
Description
`MutablePropertyValues()`
Creates a new empty MutablePropertyValues object.
`MutablePropertyValues(List<PropertyValue> propertyValueList)`
Construct a new MutablePropertyValues object using the given List of PropertyValue objects as-is.
`MutablePropertyValues(Map<?,?> original)`
Construct a new MutablePropertyValues object from a Map.
`MutablePropertyValues(PropertyValues original)`
Deep copy constructor.

## Method Summary

Modifier and Type
Method
Description
`MutablePropertyValues`
`add(String propertyName, Object propertyValue)`
Add a PropertyValue object, replacing any existing one for the corresponding property or getting merged with it (if applicable).
`void`
`addPropertyValue(String propertyName, Object propertyValue)`
Overloaded version of `addPropertyValue` that takes a property name and a property value.
`MutablePropertyValues`
`addPropertyValue(PropertyValue pv)`
Add a PropertyValue object, replacing any existing one for the corresponding property or getting merged with it (if applicable).
`MutablePropertyValues`
`addPropertyValues(Map<?,?> other)`
Add all property values from the given Map.
`MutablePropertyValues`
`addPropertyValues(PropertyValues other)`
Copy all given PropertyValues into this object.
`PropertyValues`
`changesSince(PropertyValues old)`
Return the changes since the previous PropertyValues.
`void`
`clearProcessedProperty(String propertyName)`
Clear the "processed" registration of the given property, if any.
`boolean`
`contains(String propertyName)`
Is there a property value (or other processing entry) for this property?
`boolean`
`equals(Object other)`
`Object`
`get(String propertyName)`
Get the raw property value, if any.
`PropertyValue`
`getPropertyValue(String propertyName)`
Return the property value with the given name, if any.
`List<PropertyValue>`
`getPropertyValueList()`
Return the underlying List of PropertyValue objects in its raw form.
`PropertyValue[]`
`getPropertyValues()`
Return an array of the PropertyValue objects held in this object.
`int`
`hashCode()`
`boolean`
`isConverted()`
Return whether this holder contains converted values only (`true`), or whether the values still need to be converted (`false`).
`boolean`
`isEmpty()`
Does this holder not contain any PropertyValue objects at all?
`Iterator<PropertyValue>`
`iterator()`
Return an `Iterator` over the property values.
`void`
`registerProcessedProperty(String propertyName)`
Register the specified property as "processed" in the sense of some processor calling the corresponding setter method outside the PropertyValue(s) mechanism.
`void`
`removePropertyValue(String propertyName)`
Overloaded version of `removePropertyValue` that takes a property name.
`void`
`removePropertyValue(PropertyValue pv)`
Remove the given PropertyValue, if contained.
`void`
`setConverted()`
Mark this holder as containing converted values only (i.e.
`void`
`setPropertyValueAt(PropertyValue pv, int i)`
Modify a PropertyValue object held in this object.
`int`
`size()`
Return the number of PropertyValue entries in the list.
`Spliterator<PropertyValue>`
`spliterator()`
Return a `Spliterator` over the property values.
`Stream<PropertyValue>`
`stream()`
Return a sequential `Stream` containing the property values.
`String`
`toString()`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface java.lang.Iterable

`forEach`

## Constructor Details

### MutablePropertyValues

public MutablePropertyValues()
Creates a new empty MutablePropertyValues object.

Property values can be added with the `add` method.

See Also:
  - `add(String, Object)`

### MutablePropertyValues

public MutablePropertyValues(@Nullable PropertyValues original)
Deep copy constructor. Guarantees PropertyValue references are independent, although it can't deep copy objects currently referenced by individual PropertyValue objects.

Parameters:
  `original` - the PropertyValues to copy
See Also:
  - `addPropertyValues(PropertyValues)`

### MutablePropertyValues

public MutablePropertyValues(@Nullable Map<?,?> original)
Construct a new MutablePropertyValues object from a Map.

Parameters:
  `original` - a Map with property values keyed by property name Strings
See Also:
  - `addPropertyValues(Map)`

### MutablePropertyValues

public MutablePropertyValues(@Nullable List<PropertyValue> propertyValueList)
Construct a new MutablePropertyValues object using the given List of PropertyValue objects as-is.

This is a constructor for advanced usage scenarios. It is not intended for typical programmatic use.

Parameters:
  `propertyValueList` - a List of PropertyValue objects

## Method Details

### getPropertyValueList

public List<PropertyValue> getPropertyValueList()
Return the underlying List of PropertyValue objects in its raw form. The returned List can be modified directly, although this is not recommended.

This is an accessor for optimized access to all PropertyValue objects. It is not intended for typical programmatic use.

### size

public int size()
Return the number of PropertyValue entries in the list.

### addPropertyValues

public MutablePropertyValues addPropertyValues(@Nullable PropertyValues other)
Copy all given PropertyValues into this object. Guarantees PropertyValue references are independent, although it can't deep copy objects currently referenced by individual PropertyValue objects.

Parameters:
  `other` - the PropertyValues to copy
Returns:
  this in order to allow for adding multiple property values in a chain

### addPropertyValues

public MutablePropertyValues addPropertyValues(@Nullable Map<?,?> other)
Add all property values from the given Map.

Parameters:
  `other` - a Map with property values keyed by property name, which must be a String
Returns:
  this in order to allow for adding multiple property values in a chain

### addPropertyValue

public MutablePropertyValues addPropertyValue(PropertyValue pv)
Add a PropertyValue object, replacing any existing one for the corresponding property or getting merged with it (if applicable).

Parameters:
  `pv` - the PropertyValue object to add
Returns:
  this in order to allow for adding multiple property values in a chain

### addPropertyValue

public void addPropertyValue(String propertyName, Object propertyValue)
Overloaded version of `addPropertyValue` that takes a property name and a property value.

Note: we recommend using the more concise and chaining-capable variant `add(String, Object)`.

Parameters:
  `propertyName` - name of the property
  `propertyValue` - value of the property
See Also:
  - `addPropertyValue(PropertyValue)`

### add

public MutablePropertyValues add(String propertyName, @Nullable Object propertyValue)
Add a PropertyValue object, replacing any existing one for the corresponding property or getting merged with it (if applicable).

Parameters:
  `propertyName` - name of the property
  `propertyValue` - value of the property
Returns:
  this in order to allow for adding multiple property values in a chain

### setPropertyValueAt

public void setPropertyValueAt(PropertyValue pv, int i)
Modify a PropertyValue object held in this object. Indexed from 0.

### removePropertyValue

public void removePropertyValue(PropertyValue pv)
Remove the given PropertyValue, if contained.

Parameters:
  `pv` - the PropertyValue to remove

### removePropertyValue

public void removePropertyValue(String propertyName)
Overloaded version of `removePropertyValue` that takes a property name.

Parameters:
  `propertyName` - name of the property
See Also:
  - `removePropertyValue(PropertyValue)`

### iterator

public Iterator<PropertyValue> iterator()
Description copied from interface: `PropertyValues`
Return an `Iterator` over the property values.

Specified by:
  `iterator` in interface `Iterable<PropertyValue>`
Specified by:
  `iterator` in interface `PropertyValues`

### spliterator

public Spliterator<PropertyValue> spliterator()
Description copied from interface: `PropertyValues`
Return a `Spliterator` over the property values.

Specified by:
  `spliterator` in interface `Iterable<PropertyValue>`
Specified by:
  `spliterator` in interface `PropertyValues`

### stream

public Stream<PropertyValue> stream()
Description copied from interface: `PropertyValues`
Return a sequential `Stream` containing the property values.

Specified by:
  `stream` in interface `PropertyValues`

### getPropertyValues

public PropertyValue[] getPropertyValues()
Description copied from interface: `PropertyValues`
Return an array of the PropertyValue objects held in this object.

Specified by:
  `getPropertyValues` in interface `PropertyValues`

### getPropertyValue

@Nullable public PropertyValue getPropertyValue(String propertyName)
Description copied from interface: `PropertyValues`
Return the property value with the given name, if any.

Specified by:
  `getPropertyValue` in interface `PropertyValues`
Parameters:
  `propertyName` - the name to search for
Returns:
  the property value, or `null` if none

### get

@Nullable public Object get(String propertyName)
Get the raw property value, if any.

Parameters:
  `propertyName` - the name to search for
Returns:
  the raw property value, or `null` if none found
Since:
  4.0
See Also:
  - `getPropertyValue(String)`
  - `PropertyValue.getValue()`

### changesSince

public PropertyValues changesSince(PropertyValues old)
Description copied from interface: `PropertyValues`
Return the changes since the previous PropertyValues. Subclasses should also override `equals`.

Specified by:
  `changesSince` in interface `PropertyValues`
Parameters:
  `old` - the old property values
Returns:
  the updated or new properties. Return empty PropertyValues if there are no changes.
See Also:
  - `Object.equals(java.lang.Object)`

### contains

public boolean contains(String propertyName)
Description copied from interface: `PropertyValues`
Is there a property value (or other processing entry) for this property?

Specified by:
  `contains` in interface `PropertyValues`
Parameters:
  `propertyName` - the name of the property we're interested in
Returns:
  whether there is a property value for this property

### isEmpty

public boolean isEmpty()
Description copied from interface: `PropertyValues`
Does this holder not contain any PropertyValue objects at all?

Specified by:
  `isEmpty` in interface `PropertyValues`

### registerProcessedProperty

public void registerProcessedProperty(String propertyName)
Register the specified property as "processed" in the sense of some processor calling the corresponding setter method outside the PropertyValue(s) mechanism.

This will lead to `true` being returned from a `contains(java.lang.String)` call for the specified property.

Parameters:
  `propertyName` - the name of the property.

### clearProcessedProperty

public void clearProcessedProperty(String propertyName)
Clear the "processed" registration of the given property, if any.

Since:
  3.2.13

### setConverted

public void setConverted()
Mark this holder as containing converted values only (i.e. no runtime resolution needed anymore).

### isConverted

public boolean isConverted()
Return whether this holder contains converted values only (`true`), or whether the values still need to be converted (`false`).

### equals

public boolean equals(@Nullable Object other)

Overrides:
  `equals` in class `Object`

### hashCode

public int hashCode()

Overrides:
  `hashCode` in class `Object`

### toString

public String toString()

Overrides:
  `toString` in class `Object`