diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/beans/BeansEndpoint.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/beans/BeansEndpoint.java index f446b2612e..9d28b20c12 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/beans/BeansEndpoint.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/beans/BeansEndpoint.java @@ -63,21 +63,21 @@ public class BeansEndpoint { */ public static final class ApplicationContextDescriptor { - private final String id; + private final String contextId; private final Map beans; private final ApplicationContextDescriptor parent; - private ApplicationContextDescriptor(String id, Map beans, - ApplicationContextDescriptor parent) { - this.id = id; + private ApplicationContextDescriptor(String contextId, + Map beans, ApplicationContextDescriptor parent) { + this.contextId = contextId; this.beans = beans; this.parent = parent; } - public String getId() { - return this.id; + public String getContextId() { + return this.contextId; } public ApplicationContextDescriptor getParent() { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java index 91776956a2..8e7de08c1e 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java @@ -111,7 +111,7 @@ public class ConfigurationPropertiesReportEndpoint implements ApplicationContext beanDescriptors.put(beanName, new ConfigurationPropertiesBeanDescriptor( prefix, sanitize(prefix, safeSerialize(mapper, bean, prefix)))); } - return new ConfigurationPropertiesDescriptor(beanDescriptors, + return new ConfigurationPropertiesDescriptor(context.getId(), beanDescriptors, describeConfigurationProperties(context.getParent(), mapper)); } @@ -360,17 +360,24 @@ public class ConfigurationPropertiesReportEndpoint implements ApplicationContext */ public static final class ConfigurationPropertiesDescriptor { + private final String contextId; + private final Map beans; private final ConfigurationPropertiesDescriptor parent; - private ConfigurationPropertiesDescriptor( + private ConfigurationPropertiesDescriptor(String contextId, Map beans, ConfigurationPropertiesDescriptor parent) { + this.contextId = contextId; this.beans = beans; this.parent = parent; } + public String getContextId() { + return this.contextId; + } + public Map getBeans() { return this.beans; } diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/beans/BeansEndpointTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/beans/BeansEndpointTests.java index f00b47fc02..7cd0787313 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/beans/BeansEndpointTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/beans/BeansEndpointTests.java @@ -51,7 +51,7 @@ public class BeansEndpointTests { ApplicationContextDescriptor result = context.getBean(BeansEndpoint.class) .beans(); assertThat(result.getParent()).isNull(); - assertThat(result.getId()).isEqualTo(context.getId()); + assertThat(result.getContextId()).isEqualTo(context.getId()); Map beans = result.getBeans(); assertThat(beans.size()) .isLessThanOrEqualTo(context.getBeanDefinitionCount()); diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpointTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpointTests.java index 5a867ef1c6..1f0d9d3ee1 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpointTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpointTests.java @@ -22,7 +22,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.function.Consumer; +import java.util.function.BiConsumer; import org.junit.Test; @@ -31,6 +31,7 @@ import org.springframework.boot.actuate.context.properties.ConfigurationProperti import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.util.CollectionUtils; @@ -47,20 +48,20 @@ public class ConfigurationPropertiesReportEndpointTests { @Test public void configurationPropertiesAreReturned() throws Exception { - load((properties) -> { + load((context, properties) -> { + assertThat(properties.getContextId()).isEqualTo(context.getId()); assertThat(properties.getBeans().size()).isGreaterThan(0); ConfigurationPropertiesBeanDescriptor nestedProperties = properties.getBeans() .get("testProperties"); assertThat(nestedProperties).isNotNull(); assertThat(nestedProperties.getPrefix()).isEqualTo("test"); - assertThat(nestedProperties.getProperties()).isNotNull(); assertThat(nestedProperties.getProperties()).isNotEmpty(); }); } @Test public void entriesWithNullValuesAreNotIncluded() { - load((properties) -> { + load((context, properties) -> { Map nestedProperties = properties.getBeans() .get("testProperties").getProperties(); assertThat(nestedProperties).doesNotContainKey("nullValue"); @@ -69,7 +70,7 @@ public class ConfigurationPropertiesReportEndpointTests { @Test public void defaultKeySanitization() throws Exception { - load((properties) -> { + load((context, properties) -> { Map nestedProperties = properties.getBeans() .get("testProperties").getProperties(); assertThat(nestedProperties).isNotNull(); @@ -80,7 +81,7 @@ public class ConfigurationPropertiesReportEndpointTests { @Test public void customKeySanitization() throws Exception { - load("property", (properties) -> { + load("property", (context, properties) -> { Map nestedProperties = properties.getBeans() .get("testProperties").getProperties(); assertThat(nestedProperties).isNotNull(); @@ -91,7 +92,7 @@ public class ConfigurationPropertiesReportEndpointTests { @Test public void customPatternKeySanitization() throws Exception { - load(".*pass.*", (properties) -> { + load(".*pass.*", (context, properties) -> { Map nestedProperties = properties.getBeans() .get("testProperties").getProperties(); assertThat(nestedProperties).isNotNull(); @@ -104,23 +105,24 @@ public class ConfigurationPropertiesReportEndpointTests { @SuppressWarnings("unchecked") public void keySanitizationWithCustomPatternUsingCompositeKeys() throws Exception { // gh-4415 - load(Arrays.asList(".*\\.secrets\\..*", ".*\\.hidden\\..*"), (properties) -> { - Map nestedProperties = properties.getBeans() - .get("testProperties").getProperties(); - assertThat(nestedProperties).isNotNull(); - Map secrets = (Map) nestedProperties - .get("secrets"); - Map hidden = (Map) nestedProperties - .get("hidden"); - assertThat(secrets.get("mine")).isEqualTo("******"); - assertThat(secrets.get("yours")).isEqualTo("******"); - assertThat(hidden.get("mine")).isEqualTo("******"); - }); + load(Arrays.asList(".*\\.secrets\\..*", ".*\\.hidden\\..*"), + (context, properties) -> { + Map nestedProperties = properties.getBeans() + .get("testProperties").getProperties(); + assertThat(nestedProperties).isNotNull(); + Map secrets = (Map) nestedProperties + .get("secrets"); + Map hidden = (Map) nestedProperties + .get("hidden"); + assertThat(secrets.get("mine")).isEqualTo("******"); + assertThat(secrets.get("yours")).isEqualTo("******"); + assertThat(hidden.get("mine")).isEqualTo("******"); + }); } @Test public void mixedBoolean() throws Exception { - load((properties) -> { + load((context, properties) -> { Map nestedProperties = properties.getBeans() .get("testProperties").getProperties(); assertThat(nestedProperties.get("mixedBoolean")).isEqualTo(true); @@ -130,7 +132,7 @@ public class ConfigurationPropertiesReportEndpointTests { @Test @SuppressWarnings("unchecked") public void listsAreSanitized() throws Exception { - load((properties) -> { + load((context, properties) -> { Map nestedProperties = properties.getBeans() .get("testProperties").getProperties(); assertThat(nestedProperties.get("listItems")).isInstanceOf(List.class); @@ -144,7 +146,7 @@ public class ConfigurationPropertiesReportEndpointTests { @Test @SuppressWarnings("unchecked") public void listsOfListsAreSanitized() throws Exception { - load((properties) -> { + load((context, properties) -> { Map nestedProperties = properties.getBeans() .get("testProperties").getProperties(); assertThat(nestedProperties.get("listOfListItems")).isInstanceOf(List.class); @@ -158,17 +160,18 @@ public class ConfigurationPropertiesReportEndpointTests { }); } - private void load(Consumer properties) { + private void load( + BiConsumer properties) { load(Collections.emptyList(), properties); } private void load(String keyToSanitize, - Consumer properties) { + BiConsumer properties) { load(Collections.singletonList(keyToSanitize), properties); } private void load(List keysToSanitize, - Consumer properties) { + BiConsumer properties) { ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withUserConfiguration(Config.class); contextRunner.run((context) -> { @@ -178,7 +181,7 @@ public class ConfigurationPropertiesReportEndpointTests { endpoint.setKeysToSanitize( keysToSanitize.toArray(new String[keysToSanitize.size()])); } - properties.accept(endpoint.configurationProperties()); + properties.accept(context, endpoint.configurationProperties()); }); }