Reverse priority of property sources when extracting sub properties
Fixes gh-1259
This commit is contained in:
parent
a9b8563bb6
commit
300e570f68
|
@ -67,7 +67,7 @@ public abstract class PropertySourceUtils {
|
||||||
.getPropertyNames()) {
|
.getPropertyNames()) {
|
||||||
String key = PropertySourceUtils.getSubKey(name, rootPrefix,
|
String key = PropertySourceUtils.getSubKey(name, rootPrefix,
|
||||||
keyPrefixes);
|
keyPrefixes);
|
||||||
if (key != null) {
|
if (key != null && !subProperties.containsKey(key)) {
|
||||||
subProperties.put(key, source.getProperty(name));
|
subProperties.put(key, source.getProperty(name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,20 +16,24 @@
|
||||||
|
|
||||||
package org.springframework.boot.bind;
|
package org.springframework.boot.bind;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
|
import static org.hamcrest.Matchers.nullValue;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertThat;
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.rules.ExpectedException;
|
import org.junit.rules.ExpectedException;
|
||||||
import org.springframework.core.env.MapPropertySource;
|
import org.springframework.core.env.MapPropertySource;
|
||||||
|
import org.springframework.core.env.MutablePropertySources;
|
||||||
|
import org.springframework.core.env.PropertiesPropertySource;
|
||||||
import org.springframework.core.env.StandardEnvironment;
|
import org.springframework.core.env.StandardEnvironment;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
|
||||||
import static org.hamcrest.Matchers.nullValue;
|
|
||||||
import static org.junit.Assert.assertThat;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link RelaxedPropertyResolver}.
|
* Tests for {@link RelaxedPropertyResolver}.
|
||||||
*
|
*
|
||||||
|
@ -173,4 +177,30 @@ public class RelaxedPropertyResolverTests {
|
||||||
assertThat(subProperties.get("a.c"), equalTo((Object) "2"));
|
assertThat(subProperties.get("a.c"), equalTo((Object) "2"));
|
||||||
assertThat(subProperties.get("a.d"), equalTo((Object) "3"));
|
assertThat(subProperties.get("a.d"), equalTo((Object) "3"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPropertySource() throws Exception {
|
||||||
|
Properties properties;
|
||||||
|
PropertiesPropertySource propertySource;
|
||||||
|
String propertyPrefix = "spring.datasource.";
|
||||||
|
String propertyName = "password";
|
||||||
|
String fullPropertyName = propertyPrefix + propertyName;
|
||||||
|
StandardEnvironment environment = new StandardEnvironment();
|
||||||
|
MutablePropertySources sources = environment.getPropertySources();
|
||||||
|
properties = new Properties();
|
||||||
|
properties.put(fullPropertyName, "systemPassword");
|
||||||
|
propertySource = new PropertiesPropertySource("system", properties);
|
||||||
|
sources.addLast(propertySource);
|
||||||
|
properties = new Properties();
|
||||||
|
properties.put(fullPropertyName, "propertiesPassword");
|
||||||
|
propertySource = new PropertiesPropertySource("properties", properties);
|
||||||
|
sources.addLast(propertySource);
|
||||||
|
RelaxedPropertyResolver propertyResolver = new RelaxedPropertyResolver(
|
||||||
|
environment, propertyPrefix);
|
||||||
|
String directProperty = propertyResolver.getProperty(propertyName);
|
||||||
|
Map<String, Object> subProperties = propertyResolver.getSubProperties("");
|
||||||
|
String subProperty = (String) subProperties.get(propertyName);
|
||||||
|
assertEquals(directProperty, subProperty);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue