Commit 1efac099 authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '2.3.x'

Closes gh-22586
parents d16838e4 8ff2b9f2
...@@ -72,6 +72,15 @@ public class NoUnboundElementsBindHandler extends AbstractBindHandler { ...@@ -72,6 +72,15 @@ public class NoUnboundElementsBindHandler extends AbstractBindHandler {
return super.onSuccess(name, target, context, result); return super.onSuccess(name, target, context, result);
} }
@Override
public Object onFailure(ConfigurationPropertyName name, Bindable<?> target, BindContext context, Exception error)
throws Exception {
if (error instanceof UnboundConfigurationPropertiesException) {
throw error;
}
return super.onFailure(name, target, context, error);
}
@Override @Override
public void onFinish(ConfigurationPropertyName name, Bindable<?> target, BindContext context, Object result) public void onFinish(ConfigurationPropertyName name, Bindable<?> target, BindContext context, Object result)
throws Exception { throws Exception {
......
...@@ -175,6 +175,14 @@ class ConfigurationPropertiesTests { ...@@ -175,6 +175,14 @@ class ConfigurationPropertiesTests {
.withCauseInstanceOf(BindException.class); .withCauseInstanceOf(BindException.class);
} }
@Test
void givenIgnoreUnknownFieldsFalseAndIgnoreInvalidFieldsTrueWhenThereAreUnknownFieldsThenBindingShouldFail() {
removeSystemProperties();
assertThatExceptionOfType(ConfigurationPropertiesBindException.class).isThrownBy(
() -> load(IgnoreUnknownFieldsFalseIgnoreInvalidFieldsTrueConfiguration.class, "name=foo", "bar=baz"))
.withCauseInstanceOf(BindException.class);
}
@Test @Test
void loadWhenHasIgnoreInvalidFieldsTrueAndInvalidFieldsShouldBind() { void loadWhenHasIgnoreInvalidFieldsTrueAndInvalidFieldsShouldBind() {
load(IgnoreInvalidFieldsFalseProperties.class, "com.example.bar=spam"); load(IgnoreInvalidFieldsFalseProperties.class, "com.example.bar=spam");
...@@ -1000,6 +1008,12 @@ class ConfigurationPropertiesTests { ...@@ -1000,6 +1008,12 @@ class ConfigurationPropertiesTests {
} }
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(IgnoreUnknownFieldsFalseIgnoreInvalidFieldsTrueProperties.class)
static class IgnoreUnknownFieldsFalseIgnoreInvalidFieldsTrueConfiguration {
}
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(PrefixProperties.class) @EnableConfigurationProperties(PrefixProperties.class)
static class PrefixConfiguration { static class PrefixConfiguration {
...@@ -1447,6 +1461,11 @@ class ConfigurationPropertiesTests { ...@@ -1447,6 +1461,11 @@ class ConfigurationPropertiesTests {
} }
@ConfigurationProperties(ignoreUnknownFields = false, ignoreInvalidFields = true)
static class IgnoreUnknownFieldsFalseIgnoreInvalidFieldsTrueProperties extends BasicProperties {
}
@EnableConfigurationProperties @EnableConfigurationProperties
@ConfigurationProperties(prefix = "com.example", ignoreInvalidFields = true) @ConfigurationProperties(prefix = "com.example", ignoreInvalidFields = true)
static class IgnoreInvalidFieldsFalseProperties { static class IgnoreInvalidFieldsFalseProperties {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment