From 0fcc52ccaf4621947b422cf58e8453321ef640f9 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Wed, 27 Jan 2021 14:17:41 -0800 Subject: [PATCH] Protect against NPE with Option.IGNORE_IMPORTS Update `ConfigDataEnvironmentContributor` to deal with the fact that the `properties` instance can be `null`. Fixes gh-25029 --- .../config/ConfigDataEnvironmentContributor.java | 2 +- .../ConfigDataEnvironmentContributorTests.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigDataEnvironmentContributor.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigDataEnvironmentContributor.java index c53265dec44..1f5c9365e0d 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigDataEnvironmentContributor.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigDataEnvironmentContributor.java @@ -223,7 +223,7 @@ class ConfigDataEnvironmentContributor implements Iterable createBoundContributor(null, new ConfigData(Collections.singleton(propertySource)), 0)); } + @Test // gh-25029 + void withBoundPropertiesWhenIgnoringImportsAndNothingBound() { + TestResource resource = new TestResource("a"); + ConfigData configData = new ConfigData(Collections.singleton(new MockPropertySource()), Option.IGNORE_IMPORTS); + ConfigDataEnvironmentContributor contributor = ConfigDataEnvironmentContributor.ofUnboundImport(TEST_LOCATION, + resource, false, configData, 0); + Binder binder = new Binder(contributor.getConfigurationPropertySource()); + ConfigDataEnvironmentContributor bound = contributor.withBoundProperties(binder); + assertThat(bound).isNotNull(); + } + private ConfigDataEnvironmentContributor createBoundContributor(String location) { return createBoundContributor(new TestResource(location), new ConfigData(Collections.singleton(new MockPropertySource())), 0);