Merge branch '2.0.x'

pull/13358/merge
Phillip Webb 7 years ago
commit d47e7ebb5b

@ -22,6 +22,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Deque;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
@ -656,27 +657,35 @@ public class ConfigFileApplicationListener
private void addLoadedPropertySources() {
MutablePropertySources destination = this.environment.getPropertySources();
String lastAdded = null;
List<MutablePropertySources> loaded = new ArrayList<>(this.loaded.values());
Collections.reverse(loaded);
String lastAdded = null;
Set<String> added = new HashSet<>();
for (MutablePropertySources sources : loaded) {
for (PropertySource<?> source : sources) {
if (lastAdded == null) {
if (destination.contains(DEFAULT_PROPERTIES)) {
destination.addBefore(DEFAULT_PROPERTIES, source);
}
else {
destination.addLast(source);
}
}
else {
destination.addAfter(lastAdded, source);
if (added.add(source.getName())) {
addLoadedPropertySource(destination, lastAdded, source);
lastAdded = source.getName();
}
lastAdded = source.getName();
}
}
}
private void addLoadedPropertySource(MutablePropertySources destination,
String lastAdded, PropertySource<?> source) {
if (lastAdded == null) {
if (destination.contains(DEFAULT_PROPERTIES)) {
destination.addBefore(DEFAULT_PROPERTIES, source);
}
else {
destination.addLast(source);
}
}
else {
destination.addAfter(lastAdded, source);
}
}
}
/**

@ -900,7 +900,18 @@ public class ConfigFileApplicationListenerTests {
this.context = application.run("--spring.config.name=applicationloop");
ConfigurableEnvironment environment = this.context.getEnvironment();
assertThat(environment.acceptsProfiles("loop")).isTrue();
}
@Test
public void multiValueSpringProfiles() {
// gh-13362
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
this.context = application.run("--spring.config.name=applicationmultiprofiles");
ConfigurableEnvironment environment = this.context.getEnvironment();
assertThat(environment.acceptsProfiles("test")).isTrue();
assertThat(environment.acceptsProfiles("another-test")).isTrue();
assertThat(environment.getProperty("message")).isEqualTo("multiprofile");
}
private Condition<ConfigurableEnvironment> matchingPropertySource(

@ -0,0 +1,6 @@
spring.profiles.active: test, another-test
message: default
---
spring:
profiles: test,another-test
message: multiprofile
Loading…
Cancel
Save