Browse Source

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
pull/5488/merge
Eddú Meléndez 10 years ago committed by Stephane Nicoll
parent
commit
c86284cea3
  1. 10
      spring-boot/src/main/java/org/springframework/boot/logging/logback/SpringPropertyAction.java
  2. 6
      spring-boot/src/test/java/org/springframework/boot/logging/logback/SpringBootJoranConfiguratorTests.java
  3. 5
      spring-boot/src/test/resources/org/springframework/boot/logging/logback/property-defaultValue.xml

10
spring-boot/src/main/java/org/springframework/boot/logging/logback/SpringPropertyAction.java

@ -32,10 +32,12 @@ import org.springframework.core.env.Environment; @@ -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 { @@ -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;

6
spring-boot/src/test/java/org/springframework/boot/logging/logback/SpringBootJoranConfiguratorTests.java

@ -140,6 +140,12 @@ public class SpringBootJoranConfiguratorTests { @@ -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);

5
spring-boot/src/test/resources/org/springframework/boot/logging/logback/property-defaultValue.xml

@ -0,0 +1,5 @@ @@ -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>
Loading…
Cancel
Save