public class PropertySourcePropertyResolver extends Object implements PropertyResolver, AutoCloseable
A PropertyResolver
that resolves from one or many PropertySource
instances.
Modifier and Type | Class and Description |
---|---|
protected static class |
PropertySourcePropertyResolver.PropertyCatalog
The property catalog to use.
|
Modifier and Type | Field and Description |
---|---|
protected Map<String,Object>[] |
catalog |
protected ConversionService<?> |
conversionService |
protected Map<String,Object>[] |
nonGenerated |
protected PropertyPlaceholderResolver |
propertyPlaceholderResolver |
protected Map<String,PropertySource> |
propertySources |
protected Map<String,Object>[] |
rawCatalog |
Constructor and Description |
---|
PropertySourcePropertyResolver()
Creates a new, initially empty,
PropertySourcePropertyResolver . |
PropertySourcePropertyResolver(ConversionService<?> conversionService)
Creates a new, initially empty,
PropertySourcePropertyResolver for the given ConversionService . |
PropertySourcePropertyResolver(PropertySource... propertySources)
Creates a new
PropertySourcePropertyResolver for the given PropertySource instances. |
Modifier and Type | Method and Description |
---|---|
PropertySourcePropertyResolver |
addPropertySource(PropertySource propertySource)
Add a
PropertySource to this resolver. |
PropertySourcePropertyResolver |
addPropertySource(String name,
Map<String,? super Object> values)
Add a property source for the given map.
|
void |
close() |
boolean |
containsProperties(String name)
Whether the given property or any nested properties exist for the key given key within this resolver.
|
boolean |
containsProperty(String name)
Whether the given property is contained within this resolver.
|
Map<String,Object> |
getAllProperties(StringConvention keyConvention,
MapFormat.MapTransformation transformation)
Returns a combined Map of all properties in the catalog.
|
Map<String,Object> |
getProperties(String name,
StringConvention keyFormat)
Return all the properties under the given key.
|
<T> Optional<T> |
getProperty(String name,
ArgumentConversionContext<T> conversionContext)
Resolve the given property for the given name, type and generic type arguments.
|
Collection<String> |
getPropertyEntries(String name)
Returns a collection of properties entries under the given key.
|
protected void |
processPropertySource(PropertySource properties,
PropertySource.PropertyConvention convention) |
protected void |
resetCaches()
Subclasses can override to reset caches.
|
protected Map<String,Object> |
resolveEntriesForKey(String name,
boolean allowCreate) |
protected Map<String,Object> |
resolveEntriesForKey(String name,
boolean allowCreate,
PropertySourcePropertyResolver.PropertyCatalog propertyCatalog) |
protected Map<String,Object> |
resolveSubMap(String name,
Map<String,Object> entries,
ArgumentConversionContext<?> conversionContext) |
protected Map<String,Object> |
resolveSubMap(String name,
Map<String,Object> entries,
ArgumentConversionContext<?> conversionContext,
StringConvention keyConvention,
MapFormat.MapTransformation transformation)
Resolves a submap for the given name and parameters.
|
protected Properties |
resolveSubProperties(String name,
Map<String,Object> entries,
ArgumentConversionContext<?> conversionContext) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
get, getProperties, getProperty, getProperty, getProperty, getProperty, getRequiredProperty, nameOf
get, get, get
protected final ConversionService<?> conversionService
protected final PropertyPlaceholderResolver propertyPlaceholderResolver
protected final Map<String,PropertySource> propertySources
public PropertySourcePropertyResolver(ConversionService<?> conversionService)
PropertySourcePropertyResolver
for the given ConversionService
.conversionService
- The ConversionService
public PropertySourcePropertyResolver()
PropertySourcePropertyResolver
.public PropertySourcePropertyResolver(PropertySource... propertySources)
PropertySourcePropertyResolver
for the given PropertySource
instances.propertySources
- The PropertySource
instancespublic PropertySourcePropertyResolver addPropertySource(@Nullable PropertySource propertySource)
PropertySource
to this resolver.propertySource
- The PropertySource
to addPropertySourcePropertyResolver
public PropertySourcePropertyResolver addPropertySource(String name, @Nullable Map<String,? super Object> values)
name
- The name of the property sourcevalues
- The valuespublic boolean containsProperty(@Nullable String name)
PropertyResolver
Whether the given property is contained within this resolver.
Note that this method will return false for nested properties. In other words given a key of foo.bar
this method will
return false
for: resolver.containsProperty("foo")
To check for nested properties using PropertyResolver.containsProperties(String)
instead.
containsProperty
in interface PropertyResolver
name
- The name of the propertypublic boolean containsProperties(@Nullable String name)
PropertyResolver
containsProperties
in interface PropertyResolver
name
- The name of the property@NonNull public Collection<String> getPropertyEntries(@NonNull String name)
PropertyResolver
datasource.default.url=localhost
datasource.another.url=someother
Calling getPropertyEntries(String)
with a value of datasource
will result in a collection
containing default
and other
.getPropertyEntries
in interface PropertyResolver
name
- The name to resolve@NonNull public Map<String,Object> getProperties(String name, StringConvention keyFormat)
PropertyResolver
StringConvention.RAW
.getProperties
in interface PropertyResolver
name
- The namekeyFormat
- The key format to use for the keys. Default is kebab-case.public <T> Optional<T> getProperty(@NonNull String name, @NonNull ArgumentConversionContext<T> conversionContext)
PropertyResolver
Resolve the given property for the given name, type and generic type arguments.
Implementers can choose to implement more intelligent type conversion by analyzing the typeArgument.
getProperty
in interface PropertyResolver
T
- The concrete typename
- The nameconversionContext
- The conversion contextpublic Map<String,Object> getAllProperties(StringConvention keyConvention, MapFormat.MapTransformation transformation)
keyConvention
- The map key conventiontransformation
- The map formatprotected Properties resolveSubProperties(String name, Map<String,Object> entries, ArgumentConversionContext<?> conversionContext)
name
- The property nameentries
- The entriesconversionContext
- The conversion contextprotected Map<String,Object> resolveSubMap(String name, Map<String,Object> entries, ArgumentConversionContext<?> conversionContext)
name
- The property nameentries
- The entriesconversionContext
- The conversion context@NonNull protected Map<String,Object> resolveSubMap(String name, Map<String,Object> entries, ArgumentConversionContext<?> conversionContext, @Nullable StringConvention keyConvention, MapFormat.MapTransformation transformation)
name
- The nameentries
- The entriesconversionContext
- The conversion contextkeyConvention
- The key convention to usetransformation
- The map transformation to applyprotected void processPropertySource(PropertySource properties, PropertySource.PropertyConvention convention)
properties
- The property sourceconvention
- The property conventionprotected Map<String,Object> resolveEntriesForKey(String name, boolean allowCreate)
name
- The nameallowCreate
- Whether allows creationprotected Map<String,Object> resolveEntriesForKey(String name, boolean allowCreate, @Nullable PropertySourcePropertyResolver.PropertyCatalog propertyCatalog)
name
- The nameallowCreate
- Whether allows creationpropertyCatalog
- The string conventionprotected void resetCaches()
public void close() throws Exception
close
in interface AutoCloseable
Exception