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 ce92ea842c..30959fab34 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 @@ -19,6 +19,7 @@ package org.springframework.boot.env; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.NoSuchElementException; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -82,6 +83,15 @@ class OriginTrackedYamlLoader extends YamlProcessor { */ private class OriginTrackingConstructor extends SafeConstructor { + @Override + public Object getData() throws NoSuchElementException { + Object data = super.getData(); + if (data instanceof CharSequence && ((CharSequence) data).length() == 0) { + return null; + } + return data; + } + @Override protected Object constructObject(Node node) { if (node instanceof ScalarNode) { 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 480759c179..b26cb73866 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 @@ -128,6 +128,13 @@ class OriginTrackedYamlLoaderTests { assertThatExceptionOfType(ConstructorException.class).isThrownBy(this.loader::load); } + @Test + void emptyDocumentes() { + this.loader = new OriginTrackedYamlLoader(new ClassPathResource("test-empty-yaml.yml", getClass())); + List> loaded = this.loader.load(); + assertThat(loaded).isEmpty(); + } + 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-empty-yaml.yml b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/env/test-empty-yaml.yml new file mode 100644 index 0000000000..783019e761 --- /dev/null +++ b/spring-boot-project/spring-boot/src/test/resources/org/springframework/boot/env/test-empty-yaml.yml @@ -0,0 +1,5 @@ +--- +--- + +--- +--- \ No newline at end of file