resolvePlaceholder method
Strategy interface for resolving placeholder values in configuration strings.
A PlaceholderResolver
is typically used in systems like property resolvers,
YAML or .properties
processors, and templating engines to resolve
values like #{host}
or #{user.name}
.
If the placeholder cannot be resolved, this interface allows returning null
to indicate that no replacement is to be made.
Example
class MapPlaceholderResolver implements PlaceholderResolver {
final Map<String, String> values;
MapPlaceholderResolver(this.values);
@override
String? resolvePlaceholder(String placeholderName) => values[placeholderName];
}
final resolver = MapPlaceholderResolver({'port': '8080'});
print(resolver.resolvePlaceholder('port')); // 8080
Resolves the supplied placeholderName
to its replacement value.
Returns null
if no replacement should be made.
This method is typically called by a property placeholder parser or configuration string processor.
placeholderName
: The name of the placeholder (without#{
).- Returns: The replacement value, or
null
if unresolved.
Implementation
@override
String? resolvePlaceholder(String placeholderName) {
try {
String? propVal = System.getProperty(placeholderName);
propVal ??= System.getEnvVar(placeholderName);
return propVal;
} on Throwable catch (ex) {
System.err.println("Could not resolve placeholder '$placeholderName' in [$text] as system property: $ex");
return null;
}
}