org.springframework.core.env

## Class EnumerablePropertySource<T>

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

Direct Known Subclasses:
  MapPropertySource, PortletConfigPropertySource, PortletContextPropertySource, ServletConfigPropertySource, ServletContextPropertySource

    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

### Nested Class Summary

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

`PropertySource.StubPropertySource`

### Field Summary

Fields
`protected static String[]` `EMPTY_NAMES_ARRAY`
`protected Log` `logger`

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

`name, source`

### Constructor Summary

Constructors
Constructor and Description
`EnumerablePropertySource(String name, T source)`

### Method Summary

Methods
`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`

### Field Detail

#### EMPTY_NAMES_ARRAY

    protected static final String[] EMPTY_NAMES_ARRAY

#### logger

    protected final Log logger

### Constructor Detail

#### EnumerablePropertySource

    public EnumerablePropertySource(String name,
                            T source)

### Method Detail

#### getPropertyNames

    public abstract String[] getPropertyNames()

Return the names of all properties contained by the source object (never `null`).

#### 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 property to find