diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedYamlLoader.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedYamlLoader.java index d5415e18e8..c38030c1b8 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedYamlLoader.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedYamlLoader.java @@ -108,7 +108,11 @@ class OriginTrackedYamlLoader extends YamlProcessor { private Object constructTrackedObject(Node node, Object value) { Origin origin = getOrigin(node); - return OriginTrackedValue.of(value, origin); + return OriginTrackedValue.of(getValue(value), origin); + } + + private Object getValue(Object value) { + return (value != null ? value : ""); } private Origin getOrigin(Node node) { diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/env/OriginTrackedYamlLoaderTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/env/OriginTrackedYamlLoaderTests.java index af062965c7..4b8c777f44 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/env/OriginTrackedYamlLoaderTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/env/OriginTrackedYamlLoaderTests.java @@ -114,6 +114,16 @@ public class OriginTrackedYamlLoaderTests { assertThat(getLocation(bar2)).isEqualTo("26:19"); } + @Test + public void processEmptyAndNullValues() throws Exception { + OriginTrackedValue empty = getValue("empty"); + OriginTrackedValue nullValue = getValue("null-value"); + assertThat(empty.getValue()).isEqualTo(""); + assertThat(getLocation(empty)).isEqualTo("27:8"); + assertThat(nullValue.getValue()).isEqualTo(""); + assertThat(getLocation(nullValue)).isEqualTo("28:13"); + } + private OriginTrackedValue getValue(String name) { if (this.result == null) { this.result = this.loader.load(); diff --git a/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/env/test-yaml.yml b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/env/test-yaml.yml index dd5c3ed6e6..ef4aeb09c9 100644 --- a/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/env/test-yaml.yml +++ b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/env/test-yaml.yml @@ -24,6 +24,8 @@ example: bar: - bar1: baz - bar2: bling +empty: "" +null-value: null --- spring: