Add and fix tests for overridden bindings
The order of property values is only preserved if we check carefully that each property is actually present in the source being inspected. Fixes gh-3385
This commit is contained in:
parent
43dc0c64c2
commit
1abd0879ca
|
|
@ -153,6 +153,9 @@ public class PropertySourcesPropertyValues implements PropertyValues {
|
||||||
PropertySourcesPropertyResolver resolver,
|
PropertySourcesPropertyResolver resolver,
|
||||||
PropertyNamePatternsMatcher includes, Collection<String> exacts) {
|
PropertyNamePatternsMatcher includes, Collection<String> exacts) {
|
||||||
for (String propertyName : exacts) {
|
for (String propertyName : exacts) {
|
||||||
|
if (!source.containsProperty(propertyName)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
Object value = null;
|
Object value = null;
|
||||||
try {
|
try {
|
||||||
value = resolver.getProperty(propertyName, Object.class);
|
value = resolver.getProperty(propertyName, Object.class);
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,16 @@ public class PropertySourcesBindingTests {
|
||||||
assertThat(this.properties.getBar(), is("override"));
|
assertThat(this.properties.getBar(), is("override"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void overridingOfPropertiesOrderOfAtPropertySourcesWherePropertyIsCapitalized() {
|
||||||
|
assertThat(this.properties.getSpam(), is("BUCKET"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void overridingOfPropertiesOrderOfAtPropertySourcesWherePropertyNamesDiffer() {
|
||||||
|
assertThat(this.properties.getTheName(), is("NAME"));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void overridingOfPropertiesAndBindToAtValue() {
|
public void overridingOfPropertiesAndBindToAtValue() {
|
||||||
assertThat(this.foo, is(this.properties.getFoo()));
|
assertThat(this.foo, is(this.properties.getFoo()));
|
||||||
|
|
@ -93,6 +103,10 @@ public class PropertySourcesBindingTests {
|
||||||
|
|
||||||
private String bar;
|
private String bar;
|
||||||
|
|
||||||
|
private String spam;
|
||||||
|
|
||||||
|
private String theName;
|
||||||
|
|
||||||
public String getBar() {
|
public String getBar() {
|
||||||
return this.bar;
|
return this.bar;
|
||||||
}
|
}
|
||||||
|
|
@ -108,6 +122,22 @@ public class PropertySourcesBindingTests {
|
||||||
public void setFoo(String foo) {
|
public void setFoo(String foo) {
|
||||||
this.foo = foo;
|
this.foo = foo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSpam() {
|
||||||
|
return this.spam;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpam(String spam) {
|
||||||
|
this.spam = spam;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTheName() {
|
||||||
|
return this.theName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTheName(String theName) {
|
||||||
|
this.theName = theName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,4 @@
|
||||||
foo=bar
|
foo=bar
|
||||||
bar=override
|
bar=override
|
||||||
|
SPAM=BUCKET
|
||||||
|
THE_NAME=NAME
|
||||||
|
|
@ -1,2 +1,4 @@
|
||||||
foo=spam
|
foo=spam
|
||||||
bar=some
|
bar=some
|
||||||
|
spam=bucket
|
||||||
|
the-name=name
|
||||||
Loading…
Reference in New Issue