org.springframework.core.env

## Class MutablePropertySources

- java.lang.Object
- - org.springframework.core.env.MutablePropertySources

All Implemented Interfaces:
  Iterable<PropertySource<?>>, PropertySources

    public class MutablePropertySources
    extends Object
    implements PropertySources

Default implementation of the `PropertySources` interface. Allows manipulation of contained property sources and provides a constructor for copying an existing `PropertySources` instance.

Where precedence is mentioned in methods such as `addFirst(org.springframework.core.env.PropertySource<?>)` and `addLast(org.springframework.core.env.PropertySource<?>)`, this is with regard to the order in which property sources will be searched when resolving a given property with a `PropertyResolver`.

Since:
  3.1
Author:
  Chris Beams
See Also:
  `PropertySourcesPropertyResolver`

### Constructor Summary

Constructors
Constructor and Description
`MutablePropertySources()` Create a new `MutablePropertySources` object.
`MutablePropertySources(PropertySources propertySources)` Create a new `MutablePropertySources` from the given propertySources object, preserving the original order of contained `PropertySource` objects.

### Method Summary

Methods
`void` `addAfter(String relativePropertySourceName, PropertySource<?> propertySource)` Add the given property source object with precedence immediately lower than than the named relative property source.
`void` `addBefore(String relativePropertySourceName, PropertySource<?> propertySource)` Add the given property source object with precedence immediately higher than the named relative property source.
`void` `addFirst(PropertySource<?> propertySource)` Add the given property source object with highest precedence.
`void` `addLast(PropertySource<?> propertySource)` Add the given property source object with lowest precedence.
`protected void` `assertLegalRelativeAddition(String relativePropertySourceName, PropertySource<?> propertySource)` Ensure that the given property source is not being added relative to itself.
`boolean` `contains(String name)` Return whether a property source with the given name is contained.
`PropertySource<?>` `get(String name)` Return the property source with the given name, `null` if not found.
`Iterator<PropertySource<?>>` `iterator()`
`int` `precedenceOf(PropertySource<?> propertySource)` Return the precedence of the given property source, `-1` if not found.
`PropertySource<?>` `remove(String name)` Remove and return the property source with the given name, `null` if not found.
`protected void` `removeIfPresent(PropertySource<?> propertySource)` Log the removal of the given propertySource if it is present.
`void` `replace(String name, PropertySource<?> propertySource)` Replace the property source with the given name with the given property source object.
`int` `size()` Return the number of `PropertySource` objects contained.
`String` `toString()`

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

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

### Constructor Detail

#### MutablePropertySources

    public MutablePropertySources()

Create a new `MutablePropertySources` object.

#### MutablePropertySources

    public MutablePropertySources(PropertySources propertySources)

Create a new `MutablePropertySources` from the given propertySources object, preserving the original order of contained `PropertySource` objects.

### Method Detail

#### contains

    public boolean contains(String name)

Description copied from interface: `PropertySources`
Return whether a property source with the given name is contained.

Specified by:
  `contains` in interface `PropertySources`
Parameters:
  `name` - the name of the property source to find

#### get

    public PropertySource<?> get(String name)

Description copied from interface: `PropertySources`
Return the property source with the given name, `null` if not found.

Specified by:
  `get` in interface `PropertySources`
Parameters:
  `name` - the name of the property source to find

#### iterator

    public Iterator<PropertySource<?>> iterator()

Specified by:
  `iterator` in interface `Iterable<PropertySource<?>>`

#### addFirst

    public void addFirst(PropertySource<?> propertySource)

Add the given property source object with highest precedence.

#### addLast

    public void addLast(PropertySource<?> propertySource)

Add the given property source object with lowest precedence.

#### addBefore

    public void addBefore(String relativePropertySourceName,
                 PropertySource<?> propertySource)

Add the given property source object with precedence immediately higher than the named relative property source.

#### addAfter

    public void addAfter(String relativePropertySourceName,
                PropertySource<?> propertySource)

Add the given property source object with precedence immediately lower than than the named relative property source.

#### precedenceOf

    public int precedenceOf(PropertySource<?> propertySource)

Return the precedence of the given property source, `-1` if not found.

#### remove

    public PropertySource<?> remove(String name)

Remove and return the property source with the given name, `null` if not found.

Parameters:
  `name` - the name of the property source to find and remove

#### replace

    public void replace(String name,
               PropertySource<?> propertySource)

Replace the property source with the given name with the given property source object.

Parameters:
  `name` - the name of the property source to find and replace
  `propertySource` - the replacement property source
Throws:
  `IllegalArgumentException` - if no property source with the given name is present
See Also:
  `contains(java.lang.String)`

#### size

    public int size()

Return the number of `PropertySource` objects contained.

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

#### assertLegalRelativeAddition

    protected void assertLegalRelativeAddition(String relativePropertySourceName,
                                   PropertySource<?> propertySource)

Ensure that the given property source is not being added relative to itself.

#### removeIfPresent

    protected void removeIfPresent(PropertySource<?> propertySource)

Log the removal of the given propertySource if it is present.