diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MissingRequiredConfigurationFailureAnalyzer.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/ValidationFailureAnalyzer.java similarity index 54% rename from spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MissingRequiredConfigurationFailureAnalyzer.java rename to spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/ValidationFailureAnalyzer.java index 597461dcd4..fa9e41bd02 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MissingRequiredConfigurationFailureAnalyzer.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/ValidationFailureAnalyzer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 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. @@ -16,29 +16,29 @@ package org.springframework.boot.actuate.autoconfigure.metrics; -import io.micrometer.core.instrument.config.MissingRequiredConfigurationException; +import io.micrometer.core.instrument.config.validate.Validated.Invalid; +import io.micrometer.core.instrument.config.validate.ValidationException; import org.springframework.boot.diagnostics.AbstractFailureAnalyzer; import org.springframework.boot.diagnostics.FailureAnalysis; /** * An {@link AbstractFailureAnalyzer} that performs analysis of failures caused by a - * {@link MissingRequiredConfigurationException}. + * {@link ValidationException}. * * @author Andy Wilkinson */ -class MissingRequiredConfigurationFailureAnalyzer - extends AbstractFailureAnalyzer { +class ValidationFailureAnalyzer extends AbstractFailureAnalyzer { @Override - protected FailureAnalysis analyze(Throwable rootFailure, MissingRequiredConfigurationException cause) { - StringBuilder description = new StringBuilder(); - description.append(cause.getMessage()); - if (!cause.getMessage().endsWith(".")) { - description.append("."); + protected FailureAnalysis analyze(Throwable rootFailure, ValidationException cause) { + StringBuilder description = new StringBuilder(String.format("Invalid Micrometer configuration detected:%n")); + for (Invalid failure : cause.getValidation().failures()) { + description.append(String.format("%n - management.metrics.export.%s was '%s' but it %s", + failure.getProperty(), failure.getValue(), failure.getMessage())); } return new FailureAnalysis(description.toString(), - "Update your application to provide the missing configuration.", cause); + "Update your application to correct the invalid configuration.", cause); } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/elastic/ElasticProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/elastic/ElasticProperties.java index 2a94556cda..5cbb8c4b56 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/elastic/ElasticProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/elastic/ElasticProperties.java @@ -62,17 +62,17 @@ public class ElasticProperties extends StepRegistryProperties { /** * Login user of the Elastic server. */ - private String userName = ""; + private String userName; /** * Login password of the Elastic server. */ - private String password = ""; + private String password; /** * Ingest pipeline name. By default, events are not pre-processed. */ - private String pipeline = ""; + private String pipeline; public String getHost() { return this.host; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaProperties.java index f00dad931c..4461e44c44 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 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. @@ -22,6 +22,7 @@ import java.util.concurrent.TimeUnit; import info.ganglia.gmetric4j.gmetric.GMetric; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.DeprecatedConfigurationProperty; /** * {@link ConfigurationProperties @ConfigurationProperties} for configuring Ganglia @@ -47,7 +48,7 @@ public class GangliaProperties { /** * Base time unit used to report rates. */ - private TimeUnit rateUnits = TimeUnit.SECONDS; + private TimeUnit rateUnits; /** * Base time unit used to report durations. @@ -57,7 +58,7 @@ public class GangliaProperties { /** * Ganglia protocol version. Must be either 3.1 or 3.0. */ - private String protocolVersion = "3.1"; + private String protocolVersion; /** * UDP addressing mode, either unicast or multicast. @@ -96,10 +97,13 @@ public class GangliaProperties { this.step = step; } + @Deprecated + @DeprecatedConfigurationProperty(reason = "No longer used by Micormeter") public TimeUnit getRateUnits() { return this.rateUnits; } + @Deprecated public void setRateUnits(TimeUnit rateUnits) { this.rateUnits = rateUnits; } @@ -112,10 +116,13 @@ public class GangliaProperties { this.durationUnits = durationUnits; } + @Deprecated + @DeprecatedConfigurationProperty(reason = "No longer used by Micormeter") public String getProtocolVersion() { return this.protocolVersion; } + @Deprecated public void setProtocolVersion(String protocolVersion) { this.protocolVersion = protocolVersion; } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/PushRegistryPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/PushRegistryPropertiesConfigAdapter.java index e05037ca8f..779859ceb7 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/PushRegistryPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/properties/PushRegistryPropertiesConfigAdapter.java @@ -36,11 +36,6 @@ public abstract class PushRegistryPropertiesConfigAdapter configuration) { @@ -56,7 +57,7 @@ class MissingRequiredConfigurationFailureAnalyzerTests { } @Configuration(proxyBeanMethods = false) - static class MissingAccountIdConfiguration { + static class MissingAccountIdAndApiKeyConfiguration { @Bean NewRelicMeterRegistry meterRegistry() { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesTests.java index a840f38078..6d4fd0d0f5 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/ganglia/GangliaPropertiesTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 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. @@ -29,6 +29,7 @@ import static org.assertj.core.api.Assertions.assertThat; class GangliaPropertiesTests { @Test + @SuppressWarnings("deprecation") void defaultValuesAreConsistent() { GangliaProperties properties = new GangliaProperties(); GangliaConfig config = GangliaConfig.DEFAULT; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesTests.java index 1be810c36e..4ec6050d46 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/wavefront/WavefrontPropertiesTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 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. @@ -36,8 +36,6 @@ class WavefrontPropertiesTests extends PushRegistryPropertiesTests { WavefrontConfig config = WavefrontConfig.DEFAULT_DIRECT; assertStepRegistryDefaultValues(properties, config); assertThat(properties.getUri().toString()).isEqualTo(config.uri()); - // source has no static default value - assertThat(properties.getApiToken()).isEqualTo(config.apiToken()); assertThat(properties.getGlobalPrefix()).isEqualTo(config.globalPrefix()); }