From 12545083574876b4f31b6d084951f3099f436d49 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Wed, 19 Nov 2014 15:07:25 +0000 Subject: [PATCH] Fix tests some more Eclipse (by default) does not create the JSON metadata when it compiles the @ConfigurationProperties beans. So running on the command lilne gets scarily different than in an IDE. Fixed by externalizing the metadata location and setting it to something empty in the tests. --- ...ConfigurationPropertiesReportEndpoint.java | 23 +++++++++++++++++-- ...rtiesReportEndpointSerializationTests.java | 2 ++ ...ation-metadata.json => test-metadata.json} | 0 3 files changed, 23 insertions(+), 2 deletions(-) rename spring-boot-actuator/src/test/resources/{META-INF/test-spring-configuration-metadata.json => test-metadata.json} (100%) diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/ConfigurationPropertiesReportEndpoint.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/ConfigurationPropertiesReportEndpoint.java index ac691c772a..5f332b4c14 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/ConfigurationPropertiesReportEndpoint.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/ConfigurationPropertiesReportEndpoint.java @@ -84,7 +84,9 @@ public class ConfigurationPropertiesReportEndpoint extends private ConfigurationBeanFactoryMetaData beanFactoryMetaData; - private ConfigurationPropertiesMetaData metadata = new ConfigurationPropertiesMetaData(); + private ConfigurationPropertiesMetaData metadata; + + private String metadataLocations = "classpath:*/META-INF/*spring-configuration-metadata.json"; public ConfigurationPropertiesReportEndpoint() { super("configprops"); @@ -104,6 +106,15 @@ public class ConfigurationPropertiesReportEndpoint extends this.sanitizer.setKeysToSanitize(keysToSanitize); } + /** + * Location path for JSON metadata about config properties. + * + * @param metadataLocations the metadataLocations to set + */ + public void setMetadataLocations(String metadataLocations) { + this.metadataLocations = metadataLocations; + } + @Override public Map invoke() { return extract(this.context); @@ -150,6 +161,9 @@ public class ConfigurationPropertiesReportEndpoint extends */ private Map safeSerialize(ObjectMapper mapper, Object bean, String prefix) { + if (this.metadata == null) { + this.metadata = new ConfigurationPropertiesMetaData(this.metadataLocations); + } try { @SuppressWarnings("unchecked") Map result = new HashMap(mapper.convertValue( @@ -315,6 +329,11 @@ public class ConfigurationPropertiesReportEndpoint extends private Map> matched = new HashMap>(); private Set keys = null; + private String metadataLocations; + + public ConfigurationPropertiesMetaData(String metadataLocations) { + this.metadataLocations = metadataLocations; + } public boolean matches(String prefix) { if (this.matched.containsKey(prefix)) { @@ -348,7 +367,7 @@ public class ConfigurationPropertiesReportEndpoint extends this.keys = new HashSet(); ObjectMapper mapper = new ObjectMapper(); Resource[] resources = new PathMatchingResourcePatternResolver() - .getResources("classpath*:/META-INF/*spring-configuration-metadata.json"); + .getResources(this.metadataLocations); for (Resource resource : resources) { addKeys(mapper, resource); } diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/ConfigurationPropertiesReportEndpointSerializationTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/ConfigurationPropertiesReportEndpointSerializationTests.java index 88938e8038..d4d104316d 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/ConfigurationPropertiesReportEndpointSerializationTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/ConfigurationPropertiesReportEndpointSerializationTests.java @@ -206,6 +206,7 @@ public class ConfigurationPropertiesReportEndpointSerializationTests { Map map = (Map) nestedProperties .get("properties"); assertNotNull(map); + System.err.println(nestedProperties); // Only one property is mapped in metadata so the others are ignored assertEquals(1, map.size()); assertEquals("foo", ((Map) map.get("map")).get("name")); @@ -241,6 +242,7 @@ public class ConfigurationPropertiesReportEndpointSerializationTests { ConfigurationBeanFactoryMetaData beanFactoryMetaData) { ConfigurationPropertiesReportEndpoint endpoint = new ConfigurationPropertiesReportEndpoint(); endpoint.setConfigurationBeanFactoryMetaData(beanFactoryMetaData); + endpoint.setMetadataLocations("classpath*:/test-metadata.json"); return endpoint; } diff --git a/spring-boot-actuator/src/test/resources/META-INF/test-spring-configuration-metadata.json b/spring-boot-actuator/src/test/resources/test-metadata.json similarity index 100% rename from spring-boot-actuator/src/test/resources/META-INF/test-spring-configuration-metadata.json rename to spring-boot-actuator/src/test/resources/test-metadata.json