public abstract class AbstractPropertyResolver extends java.lang.Object implements ConfigurablePropertyResolver
Modifier and Type | Field and Description |
---|---|
protected ConfigurableConversionService |
conversionService |
private boolean |
ignoreUnresolvableNestedPlaceholders |
protected Log |
logger |
private PropertyPlaceholderHelper |
nonStrictHelper |
private java.lang.String |
placeholderPrefix |
private java.lang.String |
placeholderSuffix |
private java.util.Set<java.lang.String> |
requiredProperties |
private PropertyPlaceholderHelper |
strictHelper |
private java.lang.String |
valueSeparator |
Constructor and Description |
---|
AbstractPropertyResolver() |
Modifier and Type | Method and Description |
---|---|
private PropertyPlaceholderHelper |
createPlaceholderHelper(boolean ignoreUnresolvablePlaceholders) |
private java.lang.String |
doResolvePlaceholders(java.lang.String text,
PropertyPlaceholderHelper helper) |
ConfigurableConversionService |
getConversionService() |
<T> T |
getProperty(java.lang.String key,
java.lang.Class<T> targetType,
T defaultValue)
Return the property value associated with the given key, or
defaultValue if the key cannot be resolved. |
java.lang.String |
getProperty(java.lang.String key,
java.lang.String defaultValue)
Return the property value associated with the given key, or
defaultValue if the key cannot be resolved. |
protected abstract java.lang.String |
getPropertyAsRawString(java.lang.String key)
Retrieve the specified property as a raw String,
i.e.
|
java.lang.String |
getRequiredProperty(java.lang.String key)
Return the property value associated with the given key (never
null ). |
<T> T |
getRequiredProperty(java.lang.String key,
java.lang.Class<T> valueType)
Return the property value associated with the given key, converted to the given
targetType (never
null ). |
protected java.lang.String |
resolveNestedPlaceholders(java.lang.String value)
Resolve placeholders within the given string, deferring to the value of
setIgnoreUnresolvableNestedPlaceholders(boolean) to determine whether any
unresolvable placeholders should raise an exception or be ignored. |
java.lang.String |
resolvePlaceholders(java.lang.String text)
Resolve ${...} placeholders in the given text, replacing them with corresponding
property values as resolved by
PropertyResolver.getProperty(java.lang.String) . |
java.lang.String |
resolveRequiredPlaceholders(java.lang.String text)
Resolve ${...} placeholders in the given text, replacing them with corresponding
property values as resolved by
PropertyResolver.getProperty(java.lang.String) . |
void |
setConversionService(ConfigurableConversionService conversionService)
Set the
ConfigurableConversionService to be used when performing type
conversions on properties. |
void |
setIgnoreUnresolvableNestedPlaceholders(boolean ignoreUnresolvableNestedPlaceholders)
Set whether to throw an exception when encountering an unresolvable placeholder
nested within the value of a given property.
|
void |
setPlaceholderPrefix(java.lang.String placeholderPrefix)
Set the prefix that placeholders replaced by this resolver must begin with.
|
void |
setPlaceholderSuffix(java.lang.String placeholderSuffix)
Set the suffix that placeholders replaced by this resolver must end with.
|
void |
setRequiredProperties(java.lang.String... requiredProperties)
Specify which properties must be present, to be verified by
ConfigurablePropertyResolver.validateRequiredProperties() . |
void |
setValueSeparator(java.lang.String valueSeparator)
Specify the separating character between the placeholders replaced by this
resolver and their associated default value, or
null if no such
special character should be processed as a value separator. |
void |
validateRequiredProperties()
Validate that each of the properties specified by
ConfigurablePropertyResolver.setRequiredProperties(java.lang.String...) is present and resolves to a
non-null value. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
containsProperty, getProperty, getProperty, getPropertyAsClass
protected final Log logger
protected ConfigurableConversionService conversionService
private PropertyPlaceholderHelper nonStrictHelper
private PropertyPlaceholderHelper strictHelper
private boolean ignoreUnresolvableNestedPlaceholders
private java.lang.String placeholderPrefix
private java.lang.String placeholderSuffix
private java.lang.String valueSeparator
private final java.util.Set<java.lang.String> requiredProperties
public ConfigurableConversionService getConversionService()
getConversionService
in interface ConfigurablePropertyResolver
ConfigurableConversionService
used when performing type
conversions on properties.
The configurable nature of the returned conversion service allows for
the convenient addition and removal of individual Converter
instances:
ConfigurableConversionService cs = env.getConversionService(); cs.addConverter(new FooConverter());
PropertyResolver.getProperty(String, Class)
,
ConverterRegistry.addConverter(org.springframework.core.convert.converter.Converter<?, ?>)
public void setConversionService(ConfigurableConversionService conversionService)
ConfigurablePropertyResolver
ConfigurableConversionService
to be used when performing type
conversions on properties.
Note: as an alternative to fully replacing the ConversionService
, consider adding or removing individual Converter
instances by drilling into ConfigurablePropertyResolver.getConversionService()
and calling methods
such as #addConverter
.
public java.lang.String getProperty(java.lang.String key, java.lang.String defaultValue)
PropertyResolver
defaultValue
if the key cannot be resolved.getProperty
in interface PropertyResolver
key
- the property name to resolvedefaultValue
- the default value to return if no value is foundPropertyResolver.getRequiredProperty(String)
,
PropertyResolver.getProperty(String, Class)
public <T> T getProperty(java.lang.String key, java.lang.Class<T> targetType, T defaultValue)
PropertyResolver
defaultValue
if the key cannot be resolved.getProperty
in interface PropertyResolver
key
- the property name to resolvetargetType
- the expected type of the property valuedefaultValue
- the default value to return if no value is foundPropertyResolver.getRequiredProperty(String, Class)
public void setRequiredProperties(java.lang.String... requiredProperties)
ConfigurablePropertyResolver
ConfigurablePropertyResolver.validateRequiredProperties()
.setRequiredProperties
in interface ConfigurablePropertyResolver
public void validateRequiredProperties()
ConfigurablePropertyResolver
ConfigurablePropertyResolver.setRequiredProperties(java.lang.String...)
is present and resolves to a
non-null
value.validateRequiredProperties
in interface ConfigurablePropertyResolver
public java.lang.String getRequiredProperty(java.lang.String key) throws java.lang.IllegalStateException
PropertyResolver
null
).getRequiredProperty
in interface PropertyResolver
java.lang.IllegalStateException
- if the key cannot be resolvedPropertyResolver.getRequiredProperty(String, Class)
public <T> T getRequiredProperty(java.lang.String key, java.lang.Class<T> valueType) throws java.lang.IllegalStateException
PropertyResolver
null
).getRequiredProperty
in interface PropertyResolver
java.lang.IllegalStateException
- if the given key cannot be resolvedpublic void setPlaceholderPrefix(java.lang.String placeholderPrefix)
setPlaceholderPrefix
in interface ConfigurablePropertyResolver
SystemPropertyUtils.PLACEHOLDER_PREFIX
public void setPlaceholderSuffix(java.lang.String placeholderSuffix)
setPlaceholderSuffix
in interface ConfigurablePropertyResolver
SystemPropertyUtils.PLACEHOLDER_SUFFIX
public void setValueSeparator(java.lang.String valueSeparator)
null
if no such
special character should be processed as a value separator. The default is ":".setValueSeparator
in interface ConfigurablePropertyResolver
SystemPropertyUtils.VALUE_SEPARATOR
public java.lang.String resolvePlaceholders(java.lang.String text)
PropertyResolver
PropertyResolver.getProperty(java.lang.String)
. Unresolvable placeholders with
no default value are ignored and passed through unchanged.resolvePlaceholders
in interface PropertyResolver
text
- the String to resolvenull
)PropertyResolver.resolveRequiredPlaceholders(java.lang.String)
,
SystemPropertyUtils.resolvePlaceholders(String)
public java.lang.String resolveRequiredPlaceholders(java.lang.String text) throws java.lang.IllegalArgumentException
PropertyResolver
PropertyResolver.getProperty(java.lang.String)
. Unresolvable placeholders with
no default value will cause an IllegalArgumentException to be thrown.resolveRequiredPlaceholders
in interface PropertyResolver
null
)java.lang.IllegalArgumentException
- if given text is null
or if any placeholders are unresolvableSystemPropertyUtils.resolvePlaceholders(String, boolean)
public void setIgnoreUnresolvableNestedPlaceholders(boolean ignoreUnresolvableNestedPlaceholders)
false
value indicates strict
resolution, i.e. that an exception will be thrown. A true
value indicates
that unresolvable nested placeholders should be passed through in their unresolved
${...} form.
Implementations of PropertyResolver.getProperty(String)
and its variants must inspect
the value set here to determine correct behavior when property values contain
unresolvable placeholders.
The default value for this implementation is false
.
setIgnoreUnresolvableNestedPlaceholders
in interface ConfigurablePropertyResolver
protected java.lang.String resolveNestedPlaceholders(java.lang.String value)
setIgnoreUnresolvableNestedPlaceholders(boolean)
to determine whether any
unresolvable placeholders should raise an exception or be ignored.
Invoked from getProperty(java.lang.String, java.lang.String)
and its variants, implicitly resolving
nested placeholders. In contrast, resolvePlaceholders(java.lang.String)
and
resolveRequiredPlaceholders(java.lang.String)
do
setIgnoreUnresolvableNestedPlaceholders(boolean)
private PropertyPlaceholderHelper createPlaceholderHelper(boolean ignoreUnresolvablePlaceholders)
private java.lang.String doResolvePlaceholders(java.lang.String text, PropertyPlaceholderHelper helper)
protected abstract java.lang.String getPropertyAsRawString(java.lang.String key)
key
- the property name to resolvenull
if none found