Commit 300e570f authored by Dave Syer's avatar Dave Syer

Reverse priority of property sources when extracting sub properties

Fixes gh-1259
parent a9b8563b
...@@ -67,7 +67,7 @@ public abstract class PropertySourceUtils { ...@@ -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 @@ ...@@ -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 { ...@@ -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);
}
} }
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