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, 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, 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 and 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

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and 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 Detail

    - #### 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 Detail

    - #### 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`).