Commit 06bb6bd1 authored by Dave Syer's avatar Dave Syer Committed by Stephane Nicoll

Fix logic affecting files loaded

The problem fixed here is that the Loader keeps track of the profiles it
is going to look at for loading files, but ignores any that were already
active in the Environment if the listener is called initially with
spring.profiles.active not empty.

Closes gh-4261
parent 2e2ebeb9
......@@ -314,17 +314,15 @@ public class ConfigFileApplicationListener
maybeActivateProfiles(
this.environment.getProperty(ACTIVE_PROFILES_PROPERTY));
}
else {
// Pre-existing active profiles set via Environment.setActiveProfiles()
// are additional profiles and config files are allowed to add more if
// they want to, so don't call addActiveProfiles() here.
List<String> list = new ArrayList<String>(
Arrays.asList(this.environment.getActiveProfiles()));
// Reverse them so the order is the same as from getProfilesForValue()
// (last one wins when properties are eventually resolved)
Collections.reverse(list);
this.profiles.addAll(list);
}
// Pre-existing active profiles set via Environment.setActiveProfiles()
// are additional profiles and config files are allowed to add more if
// they want to, so don't call addActiveProfiles() here.
List<String> list = new ArrayList<String>(
Arrays.asList(this.environment.getActiveProfiles()));
// Reverse them so the order is the same as from getProfilesForValue()
// (last one wins when properties are eventually resolved)
Collections.reverse(list);
this.profiles.addAll(list);
// The default profile for these purposes is represented as null. We add it
// last so that it is first out of the queue (active profiles will then
......
......@@ -341,6 +341,18 @@ public class ConfigFileApplicationListenerTests {
assertThat(property, equalTo("fromprofilepropertiesfile"));
}
@Test
public void profilesAddedToEnvironmentAndViaProperty() throws Exception {
EnvironmentTestUtils.addEnvironment(this.environment,
"spring.profiles.active:foo");
this.environment.addActiveProfile("dev");
this.initializer.onApplicationEvent(this.event);
assertThat(this.environment.getActiveProfiles(),
equalTo(new String[] { "foo", "dev" }));
assertThat(this.environment.getProperty("my.property"),
equalTo("fromdevpropertiesfile"));
}
@Test
public void yamlProfiles() throws Exception {
this.initializer.setSearchNames("testprofiles");
......
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