Merge branch '2.0.x'

pull/13331/merge
Andy Wilkinson 7 years ago
commit d0ce919d8c

@ -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.
@ -51,7 +51,7 @@ public class PropertySourcesPlaceholdersResolver implements PlaceholdersResolver
this.helper = (helper != null ? helper
: new PropertyPlaceholderHelper(SystemPropertyUtils.PLACEHOLDER_PREFIX,
SystemPropertyUtils.PLACEHOLDER_SUFFIX,
SystemPropertyUtils.VALUE_SEPARATOR, false));
SystemPropertyUtils.VALUE_SEPARATOR, true));
}
@Override

@ -70,6 +70,12 @@ class BindFailureAnalyzer extends AbstractFailureAnalyzer<BindException> {
}
private String getMessage(BindException cause) {
ConversionFailedException conversionFailure = findCause(cause,
ConversionFailedException.class);
if (conversionFailure != null) {
return "failed to convert " + conversionFailure.getSourceType() + " to "
+ conversionFailure.getTargetType();
}
Throwable failure = cause;
while (failure.getCause() != null) {
failure = failure.getCause();

@ -30,7 +30,6 @@ import org.assertj.core.matcher.AssertionMatcher;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.internal.matchers.ThrowableMessageMatcher;
import org.junit.rules.ExpectedException;
import org.mockito.Answers;
import org.mockito.InOrder;
@ -53,7 +52,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.validation.beanvalidation.SpringValidatorAdapter;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.instanceOf;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
@ -153,15 +151,13 @@ public class BinderTests {
}
@Test
public void bindToValueWithMissingPlaceholdersShouldThrowException() {
public void bindToValueWithMissingPlaceholderShouldResolveToValueWithPlaceholder() {
StandardEnvironment environment = new StandardEnvironment();
this.sources.add(new MockConfigurationPropertySource("foo", "${bar}"));
this.binder = new Binder(this.sources,
new PropertySourcesPlaceholdersResolver(environment));
this.thrown.expect(BindException.class);
this.thrown.expectCause(ThrowableMessageMatcher.hasMessage(containsString(
"Could not resolve placeholder 'bar' in value \"${bar}\"")));
this.binder.bind("foo", Bindable.of(Integer.class));
BindResult<String> result = this.binder.bind("foo", Bindable.of(String.class));
assertThat(result.get()).isEqualTo("${bar}");
}
@Test

@ -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.
@ -67,12 +67,10 @@ public class PropertySourcesPlaceholdersResolverTests {
}
@Test
public void resolveIfPlaceholderAbsentAndNoDefaultShouldThrowException() {
public void resolveIfPlaceholderAbsentAndNoDefaultUsesPlaceholder() {
this.resolver = new PropertySourcesPlaceholdersResolver((PropertySources) null);
this.thrown.expect(IllegalArgumentException.class);
this.thrown
.expectMessage("Could not resolve placeholder 'FOO' in value \"${FOO}\"");
this.resolver.resolvePlaceholders("${FOO}");
Object resolved = this.resolver.resolvePlaceholders("${FOO}");
assertThat(resolved).isEqualTo("${FOO}");
}
@Test

@ -62,10 +62,10 @@ public class BindFailureAnalyzerTests {
@Test
public void bindExceptionDueToOtherFailure() {
FailureAnalysis analysis = performAnalysis(GenericFailureConfiguration.class,
"test.foo.value=${BAR}");
assertThat(analysis.getDescription()).contains(failure("test.foo.value", "${BAR}",
"test.foo.value=alpha");
assertThat(analysis.getDescription()).contains(failure("test.foo.value", "alpha",
"\"test.foo.value\" from property source \"test\"",
"Could not resolve placeholder 'BAR' in value \"${BAR}\""));
"failed to convert java.lang.String to int"));
}
@Test
@ -187,13 +187,13 @@ public class BindFailureAnalyzerTests {
@ConfigurationProperties("test.foo")
static class GenericFailureProperties {
private String value;
private int value;
public String getValue() {
public int getValue() {
return this.value;
}
public void setValue(String value) {
public void setValue(int value) {
this.value = value;
}

Loading…
Cancel
Save