diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/endpoint/EndpointIdTimeToLivePropertyFunction.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/endpoint/EndpointIdTimeToLivePropertyFunction.java index 494bea5b50c..6db1fa6ab07 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/endpoint/EndpointIdTimeToLivePropertyFunction.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/endpoint/EndpointIdTimeToLivePropertyFunction.java @@ -19,6 +19,7 @@ package org.springframework.boot.actuate.autoconfigure.endpoint; import java.time.Duration; import java.util.function.Function; +import org.springframework.boot.actuate.endpoint.EndpointId; import org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvokerAdvisor; import org.springframework.boot.context.properties.bind.BindResult; import org.springframework.boot.context.properties.bind.Bindable; @@ -33,7 +34,7 @@ import org.springframework.core.env.PropertyResolver; * @author Stephane Nicoll * @author Phillip Webb */ -class EndpointIdTimeToLivePropertyFunction implements Function { +class EndpointIdTimeToLivePropertyFunction implements Function { private static final Bindable DURATION = Bindable.of(Duration.class); @@ -48,9 +49,9 @@ class EndpointIdTimeToLivePropertyFunction implements Function { } @Override - public Long apply(String endpointId) { + public Long apply(EndpointId endpointId) { String name = String.format("management.endpoint.%s.cache.time-to-live", - endpointId); + endpointId.toLowerCaseString()); BindResult duration = Binder.get(this.environment).bind(name, DURATION); return duration.map(Duration::toMillis).orElse(null); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/CloudFoundryWebEndpointDiscovererTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/CloudFoundryWebEndpointDiscovererTests.java index b40ea50a86e..43bfff0f7af 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/CloudFoundryWebEndpointDiscovererTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/CloudFoundryWebEndpointDiscovererTests.java @@ -73,8 +73,8 @@ public class CloudFoundryWebEndpointDiscovererTests { this.load((id) -> null, (id) -> id, configuration, consumer); } - private void load(Function timeToLive, PathMapper endpointPathMapper, - Class configuration, + private void load(Function timeToLive, + PathMapper endpointPathMapper, Class configuration, Consumer consumer) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext( configuration); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/EndpointIdTimeToLivePropertyFunctionTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/EndpointIdTimeToLivePropertyFunctionTests.java index 8e033bd102b..5421cf78abe 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/EndpointIdTimeToLivePropertyFunctionTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/EndpointIdTimeToLivePropertyFunctionTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2017 the original author or authors. + * Copyright 2012-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import java.util.function.Function; import org.junit.Test; +import org.springframework.boot.actuate.endpoint.EndpointId; import org.springframework.mock.env.MockEnvironment; import static org.assertj.core.api.Assertions.assertThat; @@ -34,21 +35,26 @@ public class EndpointIdTimeToLivePropertyFunctionTests { private final MockEnvironment environment = new MockEnvironment(); - private final Function timeToLive = new EndpointIdTimeToLivePropertyFunction( + private final Function timeToLive = new EndpointIdTimeToLivePropertyFunction( this.environment); @Test public void defaultConfiguration() { - Long result = this.timeToLive.apply("test"); + Long result = this.timeToLive.apply(EndpointId.of("test")); assertThat(result).isNull(); } @Test public void userConfiguration() { - this.environment.setProperty("management.endpoint.test.cache.time-to-live", - "500"); - Long result = this.timeToLive.apply("test"); + this.environment.setProperty( + "management.endpoint.another-test.cache.time-to-live", "500"); + Long result = this.timeToLive.apply(EndpointId.of("anotherTest")); assertThat(result).isEqualTo(500L); } + @Test + public void mixedCaseUserConfiguration() { + + } + } diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/invoker/cache/CachingOperationInvokerAdvisor.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/invoker/cache/CachingOperationInvokerAdvisor.java index 4e37f4e30aa..ab97e2e745f 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/invoker/cache/CachingOperationInvokerAdvisor.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/invoker/cache/CachingOperationInvokerAdvisor.java @@ -18,6 +18,7 @@ package org.springframework.boot.actuate.endpoint.invoker.cache; import java.util.function.Function; +import org.springframework.boot.actuate.endpoint.EndpointId; import org.springframework.boot.actuate.endpoint.OperationType; import org.springframework.boot.actuate.endpoint.SecurityContext; import org.springframework.boot.actuate.endpoint.invoke.OperationInvoker; @@ -33,9 +34,10 @@ import org.springframework.boot.actuate.endpoint.invoke.OperationParameters; */ public class CachingOperationInvokerAdvisor implements OperationInvokerAdvisor { - private final Function endpointIdTimeToLive; + private final Function endpointIdTimeToLive; - public CachingOperationInvokerAdvisor(Function endpointIdTimeToLive) { + public CachingOperationInvokerAdvisor( + Function endpointIdTimeToLive) { this.endpointIdTimeToLive = endpointIdTimeToLive; } @@ -43,6 +45,12 @@ public class CachingOperationInvokerAdvisor implements OperationInvokerAdvisor { @Deprecated public OperationInvoker apply(String endpointId, OperationType operationType, OperationParameters parameters, OperationInvoker invoker) { + return apply(EndpointId.of(endpointId), operationType, parameters, invoker); + } + + @Override + public OperationInvoker apply(EndpointId endpointId, OperationType operationType, + OperationParameters parameters, OperationInvoker invoker) { if (operationType == OperationType.READ && !hasMandatoryParameter(parameters)) { Long timeToLive = this.endpointIdTimeToLive.apply(endpointId); if (timeToLive != null && timeToLive > 0) { diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/annotation/EndpointDiscovererTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/annotation/EndpointDiscovererTests.java index 23dda7dabc2..c5d508085f6 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/annotation/EndpointDiscovererTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/annotation/EndpointDiscovererTests.java @@ -500,12 +500,12 @@ public class EndpointDiscovererTests { } TestEndpointDiscoverer(ApplicationContext applicationContext, - Function timeToLive) { + Function timeToLive) { this(applicationContext, timeToLive, Collections.emptyList()); } TestEndpointDiscoverer(ApplicationContext applicationContext, - Function timeToLive, + Function timeToLive, Collection> filters) { this(applicationContext, new ConversionServiceParameterValueMapper(), Collections.singleton(new CachingOperationInvokerAdvisor(timeToLive)), diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/invoker/cache/CachingOperationInvokerAdvisorTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/invoker/cache/CachingOperationInvokerAdvisorTests.java index 95b33116406..b539c1d9e95 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/invoker/cache/CachingOperationInvokerAdvisorTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/invoker/cache/CachingOperationInvokerAdvisorTests.java @@ -51,7 +51,7 @@ public class CachingOperationInvokerAdvisorTests { private OperationInvoker invoker; @Mock - private Function timeToLive; + private Function timeToLive; private CachingOperationInvokerAdvisor advisor; @@ -85,7 +85,7 @@ public class CachingOperationInvokerAdvisorTests { OperationInvoker advised = this.advisor.apply(EndpointId.of("foo"), OperationType.READ, parameters, this.invoker); assertThat(advised).isSameAs(this.invoker); - verify(this.timeToLive).apply("foo"); + verify(this.timeToLive).apply(EndpointId.of("foo")); } @Test @@ -95,7 +95,7 @@ public class CachingOperationInvokerAdvisorTests { OperationInvoker advised = this.advisor.apply(EndpointId.of("foo"), OperationType.READ, parameters, this.invoker); assertThat(advised).isSameAs(this.invoker); - verify(this.timeToLive).apply("foo"); + verify(this.timeToLive).apply(EndpointId.of("foo")); } @Test diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/jmx/annotation/JmxEndpointDiscovererTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/jmx/annotation/JmxEndpointDiscovererTests.java index f4085b7fbcf..ff0b7d10c0b 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/jmx/annotation/JmxEndpointDiscovererTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/jmx/annotation/JmxEndpointDiscovererTests.java @@ -306,7 +306,7 @@ public class JmxEndpointDiscovererTests { load(configuration, (id) -> null, consumer); } - private void load(Class configuration, Function timeToLive, + private void load(Class configuration, Function timeToLive, Consumer consumer) { try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext( configuration)) { diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/web/annotation/WebEndpointDiscovererTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/web/annotation/WebEndpointDiscovererTests.java index 2eb59000f76..a2d64d0996b 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/web/annotation/WebEndpointDiscovererTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/web/annotation/WebEndpointDiscovererTests.java @@ -257,8 +257,9 @@ public class WebEndpointDiscovererTests { this.load((id) -> null, (id) -> id, configuration, consumer); } - private void load(Function timeToLive, PathMapper endpointPathMapper, - Class configuration, Consumer consumer) { + private void load(Function timeToLive, + PathMapper endpointPathMapper, Class configuration, + Consumer consumer) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext( configuration); try {