public abstract class EnumerablePropertySource<T> extends PropertySource<T>
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.
PropertySource.ComparisonPropertySource, PropertySource.StubPropertySource
logger, name, source
Modifier | Constructor and Description |
---|---|
protected |
EnumerablePropertySource(java.lang.String name) |
|
EnumerablePropertySource(java.lang.String name,
T source) |
Modifier and Type | Method and Description |
---|---|
boolean |
containsProperty(java.lang.String name)
Return whether this
PropertySource contains a property with the given name. |
abstract java.lang.String[] |
getPropertyNames()
Return the names of all properties contained by the
source object (never
null ). |
equals, getName, getProperty, getSource, hashCode, named, toString
public EnumerablePropertySource(java.lang.String name, T source)
protected EnumerablePropertySource(java.lang.String name)
public boolean containsProperty(java.lang.String name)
PropertySource
contains a property with the given name.
This implementation checks for the presence of the given name within the
getPropertyNames()
array.
containsProperty
in class PropertySource<T>
name
- the name of the property to findpublic abstract java.lang.String[] getPropertyNames()
null
).