Respect spring.profiles.active in #addActiveProfile
Prior to this commit, calls to ConfigurableEnvironment#addActiveProfile would cause any active profile values provided via the "spring.profiles.active" property to be ignored. Now these two mechanisms can be used in conjunction and work as expected. Issue: SPR-9944
This commit is contained in:
parent
74e86fe52f
commit
c94bc2e709
|
@ -17,7 +17,6 @@
|
|||
package org.springframework.context.support;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
|
@ -34,7 +33,6 @@ import static org.junit.Assert.*;
|
|||
*/
|
||||
public class EnvironmentIntegrationTests {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Test
|
||||
public void repro() {
|
||||
ConfigurableApplicationContext parent = new GenericApplicationContext();
|
||||
|
|
|
@ -240,7 +240,8 @@ public abstract class AbstractEnvironment implements ConfigurableEnvironment {
|
|||
Assert.notNull(profiles, "Profile array must not be null");
|
||||
this.activeProfiles.clear();
|
||||
for (String profile : profiles) {
|
||||
addActiveProfile(profile);
|
||||
validateProfile(profile);
|
||||
this.activeProfiles.add(profile);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -249,9 +250,11 @@ public abstract class AbstractEnvironment implements ConfigurableEnvironment {
|
|||
this.logger.debug(format("Activating profile '%s'", profile));
|
||||
}
|
||||
validateProfile(profile);
|
||||
doGetActiveProfiles();
|
||||
this.activeProfiles.add(profile);
|
||||
}
|
||||
|
||||
|
||||
public String[] getDefaultProfiles() {
|
||||
return StringUtils.toStringArray(doGetDefaultProfiles());
|
||||
}
|
||||
|
|
|
@ -185,6 +185,16 @@ public class StandardEnvironmentTests {
|
|||
assertThat(environment.getActiveProfiles().length, is(5));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addActiveProfile_whenActiveProfilesPropertyIsAlreadySet() {
|
||||
ConfigurableEnvironment env = new StandardEnvironment();
|
||||
assertThat(env.getProperty(ACTIVE_PROFILES_PROPERTY_NAME), nullValue());
|
||||
env.getPropertySources().addFirst(new MockPropertySource().withProperty(ACTIVE_PROFILES_PROPERTY_NAME, "p1"));
|
||||
assertThat(env.getProperty(ACTIVE_PROFILES_PROPERTY_NAME), equalTo("p1"));
|
||||
env.addActiveProfile("p2");
|
||||
assertThat(env.getActiveProfiles(), arrayContaining("p1", "p2"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void reservedDefaultProfile() {
|
||||
assertThat(environment.getDefaultProfiles(), equalTo(new String[]{RESERVED_DEFAULT_PROFILE_NAME}));
|
||||
|
|
Loading…
Reference in New Issue