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;
|
package org.springframework.context.support;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||||
|
@ -34,7 +33,6 @@ import static org.junit.Assert.*;
|
||||||
*/
|
*/
|
||||||
public class EnvironmentIntegrationTests {
|
public class EnvironmentIntegrationTests {
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Test
|
@Test
|
||||||
public void repro() {
|
public void repro() {
|
||||||
ConfigurableApplicationContext parent = new GenericApplicationContext();
|
ConfigurableApplicationContext parent = new GenericApplicationContext();
|
||||||
|
|
|
@ -240,7 +240,8 @@ public abstract class AbstractEnvironment implements ConfigurableEnvironment {
|
||||||
Assert.notNull(profiles, "Profile array must not be null");
|
Assert.notNull(profiles, "Profile array must not be null");
|
||||||
this.activeProfiles.clear();
|
this.activeProfiles.clear();
|
||||||
for (String profile : profiles) {
|
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));
|
this.logger.debug(format("Activating profile '%s'", profile));
|
||||||
}
|
}
|
||||||
validateProfile(profile);
|
validateProfile(profile);
|
||||||
|
doGetActiveProfiles();
|
||||||
this.activeProfiles.add(profile);
|
this.activeProfiles.add(profile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String[] getDefaultProfiles() {
|
public String[] getDefaultProfiles() {
|
||||||
return StringUtils.toStringArray(doGetDefaultProfiles());
|
return StringUtils.toStringArray(doGetDefaultProfiles());
|
||||||
}
|
}
|
||||||
|
|
|
@ -185,6 +185,16 @@ public class StandardEnvironmentTests {
|
||||||
assertThat(environment.getActiveProfiles().length, is(5));
|
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
|
@Test
|
||||||
public void reservedDefaultProfile() {
|
public void reservedDefaultProfile() {
|
||||||
assertThat(environment.getDefaultProfiles(), equalTo(new String[]{RESERVED_DEFAULT_PROFILE_NAME}));
|
assertThat(environment.getDefaultProfiles(), equalTo(new String[]{RESERVED_DEFAULT_PROFILE_NAME}));
|
||||||
|
|
Loading…
Reference in New Issue