Add defaultValue property in springProperty tag
This commit adds a `defaultValue` attribute to the `springProperty` tag of Logback. That attribute can be used to specify a default value. Closes gh-5447
This commit is contained in:
committed by
Stephane Nicoll
parent
54bea72554
commit
c86284cea3
@@ -32,10 +32,12 @@ import org.springframework.core.env.Environment;
|
||||
* properties to be sourced from the Spring environment.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Eddú Meléndez
|
||||
*/
|
||||
class SpringPropertyAction extends Action {
|
||||
|
||||
private static final String SOURCE_ATTRIBUTE = "source";
|
||||
private static final String DEFAULT_VALUE_ATTRIBUTE = "defaultValue";
|
||||
|
||||
private final Environment environment;
|
||||
|
||||
@@ -49,18 +51,22 @@ class SpringPropertyAction extends Action {
|
||||
String name = attributes.getValue(NAME_ATTRIBUTE);
|
||||
String source = attributes.getValue(SOURCE_ATTRIBUTE);
|
||||
Scope scope = ActionUtil.stringToScope(attributes.getValue(SCOPE_ATTRIBUTE));
|
||||
String defaultValue = attributes.getValue(DEFAULT_VALUE_ATTRIBUTE);
|
||||
if (OptionHelper.isEmpty(name) || OptionHelper.isEmpty(source)) {
|
||||
addError(
|
||||
"The \"name\" and \"source\" attributes of <springProperty> must be set");
|
||||
}
|
||||
ActionUtil.setProperty(ic, name, getValue(source), scope);
|
||||
ActionUtil.setProperty(ic, name, getValue(source, defaultValue), scope);
|
||||
}
|
||||
|
||||
private String getValue(String source) {
|
||||
private String getValue(String source, String defaultValue) {
|
||||
if (this.environment == null) {
|
||||
addWarn("No Spring Environment available to resolve " + source);
|
||||
return null;
|
||||
}
|
||||
if (source == null) {
|
||||
return defaultValue;
|
||||
}
|
||||
String value = this.environment.getProperty(source);
|
||||
if (value != null) {
|
||||
return value;
|
||||
|
||||
@@ -140,6 +140,12 @@ public class SpringBootJoranConfiguratorTests {
|
||||
assertThat(this.context.getProperty("MINE")).isEqualTo("test");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void springPropertyWithDefaultValue() throws Exception {
|
||||
initialize("property-defaultValue.xml");
|
||||
assertThat(this.context.getProperty("MINE")).isEqualTo("foo");
|
||||
}
|
||||
|
||||
private void doTestNestedProfile(boolean expected, String... profiles)
|
||||
throws JoranException {
|
||||
this.environment.setActiveProfiles(profiles);
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<include resource="org/springframework/boot/logging/logback/base.xml" />
|
||||
<springProperty scope="context" name="MINE" defaultValue="foo"/>
|
||||
</configuration>
|
||||
Reference in New Issue
Block a user