Merge branch '2.0.x'
This commit is contained in:
@@ -70,11 +70,12 @@ class BindFailureAnalyzer extends AbstractFailureAnalyzer<BindException> {
|
||||
}
|
||||
|
||||
private String getMessage(BindException cause) {
|
||||
if (cause.getCause() != null
|
||||
&& StringUtils.hasText(cause.getCause().getMessage())) {
|
||||
return cause.getCause().getMessage();
|
||||
Throwable failure = cause;
|
||||
while (failure.getCause() != null) {
|
||||
failure = failure.getCause();
|
||||
}
|
||||
return cause.getMessage();
|
||||
return (StringUtils.hasText(failure.getMessage()) ? failure.getMessage()
|
||||
: cause.getMessage());
|
||||
}
|
||||
|
||||
private FailureAnalysis getFailureAnalysis(Object description, BindException cause) {
|
||||
|
||||
@@ -77,6 +77,14 @@ public class BindFailureAnalyzerTests {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bindExceptionWithNestedFailureShouldDisplayNestedMessage() {
|
||||
FailureAnalysis analysis = performAnalysis(NestedFailureConfiguration.class,
|
||||
"test.foo.value=hello");
|
||||
assertThat(analysis.getDescription()).contains(failure("test.foo.value", "hello",
|
||||
"\"test.foo.value\" from property source \"test\"", "This is a failure"));
|
||||
}
|
||||
|
||||
private static String failure(String property, String value, String origin,
|
||||
String reason) {
|
||||
return String.format(
|
||||
@@ -139,6 +147,11 @@ public class BindFailureAnalyzerTests {
|
||||
|
||||
}
|
||||
|
||||
@EnableConfigurationProperties(NestedFailureProperties.class)
|
||||
static class NestedFailureConfiguration {
|
||||
|
||||
}
|
||||
|
||||
@ConfigurationProperties("test.foo")
|
||||
@Validated
|
||||
static class FieldValidationFailureProperties {
|
||||
@@ -201,6 +214,21 @@ public class BindFailureAnalyzerTests {
|
||||
|
||||
}
|
||||
|
||||
@ConfigurationProperties("test.foo")
|
||||
static class NestedFailureProperties {
|
||||
|
||||
private String value;
|
||||
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
throw new RuntimeException("This is a failure");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
enum Fruit {
|
||||
|
||||
APPLE, BANANA, ORANGE
|
||||
|
||||
Reference in New Issue
Block a user