Skip to content

Commit b132192

Browse files
committed
Merge pull request #16539 from dreis2211
* pr/16539: Polish "Add Duration support in /configprops endpoint" Add Duration support in /configprops endpoint
2 parents bc90d48 + 2b5632e commit b132192

3 files changed

Lines changed: 28 additions & 0 deletions

File tree

spring-boot-project/spring-boot-actuator/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
<groupId>org.springframework.boot</groupId>
2222
<artifactId>spring-boot</artifactId>
2323
</dependency>
24+
<dependency>
25+
<groupId>com.fasterxml.jackson.datatype</groupId>
26+
<artifactId>jackson-datatype-jsr310</artifactId>
27+
</dependency>
2428
<!-- Optional -->
2529
<dependency>
2630
<groupId>com.fasterxml.jackson.core</groupId>

spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import com.fasterxml.jackson.databind.ser.SerializerFactory;
4242
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
4343
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
44+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
4445
import org.apache.commons.logging.Log;
4546
import org.apache.commons.logging.LogFactory;
4647

@@ -172,10 +173,12 @@ private Map<String, Object> safeSerialize(ObjectMapper mapper, Object bean,
172173
*/
173174
protected void configureObjectMapper(ObjectMapper mapper) {
174175
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
176+
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
175177
mapper.configure(MapperFeature.USE_STD_BEAN_NAMING, true);
176178
mapper.setSerializationInclusion(Include.NON_NULL);
177179
applyConfigurationPropertiesFilter(mapper);
178180
applySerializationModifier(mapper);
181+
mapper.registerModule(new JavaTimeModule());
179182
}
180183

181184
private ObjectMapper getObjectMapper() {

spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpointTests.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.boot.actuate.context.properties;
1818

19+
import java.time.Duration;
1920
import java.util.ArrayList;
2021
import java.util.Arrays;
2122
import java.util.Collections;
@@ -157,6 +158,16 @@ public void mixedCase() {
157158
});
158159
}
159160

161+
@Test
162+
public void duration() {
163+
load((context, properties) -> {
164+
Map<String, Object> nestedProperties = properties.getBeans()
165+
.get("testProperties").getProperties();
166+
assertThat(nestedProperties.get("duration"))
167+
.isEqualTo(Duration.ofSeconds(10).toString());
168+
});
169+
}
170+
160171
@Test
161172
public void singleLetterProperty() {
162173
load((context, properties) -> {
@@ -276,6 +287,8 @@ public static class TestProperties {
276287

277288
private String nullValue = null;
278289

290+
private Duration duration = Duration.ofSeconds(10);
291+
279292
public TestProperties() {
280293
this.secrets.put("mine", "myPrivateThing");
281294
this.secrets.put("yours", "yourPrivateThing");
@@ -379,6 +392,14 @@ public void setNullValue(String nullValue) {
379392
this.nullValue = nullValue;
380393
}
381394

395+
public Duration getDuration() {
396+
return this.duration;
397+
}
398+
399+
public void setDuration(Duration duration) {
400+
this.duration = duration;
401+
}
402+
382403
public static class Hidden {
383404

384405
private String mine = "mySecret";

0 commit comments

Comments
 (0)