Browse Source

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
pull/4844/head
Dave Syer 10 years ago committed by Stephane Nicoll
parent
commit
06bb6bd1e1
  1. 20
      spring-boot/src/main/java/org/springframework/boot/context/config/ConfigFileApplicationListener.java
  2. 12
      spring-boot/src/test/java/org/springframework/boot/context/config/ConfigFileApplicationListenerTests.java

20
spring-boot/src/main/java/org/springframework/boot/context/config/ConfigFileApplicationListener.java

@ -314,17 +314,15 @@ public class ConfigFileApplicationListener @@ -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

12
spring-boot/src/test/java/org/springframework/boot/context/config/ConfigFileApplicationListenerTests.java

@ -341,6 +341,18 @@ public class ConfigFileApplicationListenerTests { @@ -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");

Loading…
Cancel
Save