Package org.springframework.core.env

# Class EnumerablePropertySource<T>

java.lang.Object
org.springframework.core.env.PropertySource<T>
org.springframework.core.env.EnumerablePropertySource<T>

Type Parameters:
  `T` - the source type

Direct Known Subclasses:
  `CommandLinePropertySource`, `CompositePropertySource`, `MapPropertySource`

public abstract class EnumerablePropertySource<T> extends PropertySource<T>
A `PropertySource` implementation capable of interrogating its underlying source object to enumerate all possible property name/value pairs. Exposes the `getPropertyNames()` method to allow callers to introspect available properties without having to access the underlying source object. This also facilitates a more efficient implementation of `containsProperty(String)`, in that it can call `getPropertyNames()` and iterate through the returned array rather than attempting a call to `PropertySource.getProperty(String)` which may be more expensive. Implementations may consider caching the result of `getPropertyNames()` to fully exploit this performance opportunity.

Most framework-provided `PropertySource` implementations are enumerable; a counter-example would be `JndiPropertySource` where, due to the nature of JNDI it is not possible to determine all possible property names at any given time; rather it is only possible to try to access a property (via `PropertySource.getProperty(String)`) in order to evaluate whether it is present or not.

Since:
  3.1
Author:
  Chris Beams, Juergen Hoeller

## Nested Class Summary

## Nested classes/interfaces inherited from class org.springframework.core.env.PropertySource

`PropertySource.StubPropertySource`

## Field Summary

### Fields inherited from class org.springframework.core.env.PropertySource

`logger, name, source`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`EnumerablePropertySource(String name)`
Create a new `EnumerablePropertySource` with the given name and with a new `Object` instance as the underlying source.
``
`EnumerablePropertySource(String name, T source)`
Create a new `EnumerablePropertySource` with the given name and source object.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`containsProperty(String name)`
Return whether this `PropertySource` contains a property with the given name.
`abstract String[]`
`getPropertyNames()`
Return the names of all properties contained by the source object (never `null`).

### Methods inherited from class org.springframework.core.env.PropertySource

`equals, getName, getProperty, getSource, hashCode, named, toString`

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

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

## Constructor Details

### EnumerablePropertySource

public EnumerablePropertySource(String name, T source)
Create a new `EnumerablePropertySource` with the given name and source object.

Parameters:
  `name` - the associated name
  `source` - the source object

### EnumerablePropertySource

protected EnumerablePropertySource(String name)
Create a new `EnumerablePropertySource` with the given name and with a new `Object` instance as the underlying source.

Parameters:
  `name` - the associated name

## Method Details

### containsProperty

public boolean containsProperty(String name)
Return whether this `PropertySource` contains a property with the given name.

This implementation checks for the presence of the given name within the `getPropertyNames()` array.

Overrides:
  `containsProperty` in class `PropertySource<T>`
Parameters:
  `name` - the name of the property to find

### getPropertyNames

public abstract String[] getPropertyNames()
Return the names of all properties contained by the source object (never `null`).