diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigDataLocationNotFoundExceptionFailureAnalyzer.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigDataLocationNotFoundExceptionFailureAnalyzer.java new file mode 100644 index 000000000000..589edf784b4e --- /dev/null +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigDataLocationNotFoundExceptionFailureAnalyzer.java @@ -0,0 +1,21 @@ +package org.springframework.boot.context.config; + +import org.springframework.boot.diagnostics.AbstractFailureAnalyzer; +import org.springframework.boot.diagnostics.FailureAnalysis; + +/** + * + * An implementation of {@link AbstractFailureAnalyzer} to analyze failures caused by + * {@link ConfigDataLocationNotFoundException}. + * + * @author Michal Mlak + */ +public class ConfigDataLocationNotFoundExceptionFailureAnalyzer + extends AbstractFailureAnalyzer { + + @Override + protected FailureAnalysis analyze(Throwable rootFailure, ConfigDataLocationNotFoundException cause) { + return new FailureAnalysis(cause.getMessage(), null, cause); + } + +} diff --git a/spring-boot-project/spring-boot/src/main/resources/META-INF/spring.factories b/spring-boot-project/spring-boot/src/main/resources/META-INF/spring.factories index d460701d02f5..51b68fd29a28 100644 --- a/spring-boot-project/spring-boot/src/main/resources/META-INF/spring.factories +++ b/spring-boot-project/spring-boot/src/main/resources/META-INF/spring.factories @@ -74,7 +74,8 @@ org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer org.springframework.boot.diagnostics.analyzer.InvalidConfigurationPropertyNameFailureAnalyzer,\ org.springframework.boot.diagnostics.analyzer.InvalidConfigurationPropertyValueFailureAnalyzer,\ org.springframework.boot.diagnostics.analyzer.PatternParseFailureAnalyzer,\ -org.springframework.boot.liquibase.LiquibaseChangelogMissingFailureAnalyzer +org.springframework.boot.liquibase.LiquibaseChangelogMissingFailureAnalyzer,\ +org.springframework.boot.context.config.ConfigDataLocationNotFoundExceptionFailureAnalyzer # Failure Analysis Reporters org.springframework.boot.diagnostics.FailureAnalysisReporter=\ diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/config/ConfigDataLocationNotFoundExceptionFailureAnalyzerTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/config/ConfigDataLocationNotFoundExceptionFailureAnalyzerTests.java new file mode 100644 index 000000000000..bcc2063adde7 --- /dev/null +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/config/ConfigDataLocationNotFoundExceptionFailureAnalyzerTests.java @@ -0,0 +1,30 @@ +package org.springframework.boot.context.config; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.diagnostics.FailureAnalysis; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +/** + * + * Tests for {@link ConfigDataLocationNotFoundExceptionFailureAnalyzer} + * + * @author Michal Mlak + */ +class ConfigDataLocationNotFoundExceptionFailureAnalyzerTests { + + private final ConfigDataLocationNotFoundExceptionFailureAnalyzer analyzer = new ConfigDataLocationNotFoundExceptionFailureAnalyzer(); + + @Test + void failureAnalysisForConfigDataLocationNotFound() { + ConfigDataLocation location = mock(ConfigDataLocation.class); + ConfigDataLocationNotFoundException exception = new ConfigDataLocationNotFoundException(location); + + FailureAnalysis result = analyzer.analyze(exception); + + assertThat(result.getDescription()).isEqualTo("Config data location '" + location + "' does not exist"); + assertThat(result.getAction()).isNull(); + } + +} \ No newline at end of file