Fix spring.profiles.active value handling
Previously, `spring.profiles.active` did not trim the individual comma separate values. As a result, such profile wasn't enabled as expected. This commit makes sure to trim whitespaces. Closes gh-5442
This commit is contained in:
parent
d27e280759
commit
4353963df6
|
|
@ -95,6 +95,7 @@ import org.springframework.validation.BindException;
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
* @author Stephane Nicoll
|
* @author Stephane Nicoll
|
||||||
* @author Andy Wilkinson
|
* @author Andy Wilkinson
|
||||||
|
* @author Eddú Meléndez
|
||||||
*/
|
*/
|
||||||
public class ConfigFileApplicationListener implements EnvironmentPostProcessor,
|
public class ConfigFileApplicationListener implements EnvironmentPostProcessor,
|
||||||
ApplicationListener<ApplicationEvent>, Ordered {
|
ApplicationListener<ApplicationEvent>, Ordered {
|
||||||
|
|
@ -582,8 +583,8 @@ public class ConfigFileApplicationListener implements EnvironmentPostProcessor,
|
||||||
|
|
||||||
private Set<String> asResolvedSet(String value, String fallback) {
|
private Set<String> asResolvedSet(String value, String fallback) {
|
||||||
List<String> list = Arrays
|
List<String> list = Arrays
|
||||||
.asList(StringUtils.commaDelimitedListToStringArray(value != null
|
.asList(StringUtils.trimArrayElements(StringUtils.commaDelimitedListToStringArray(value != null
|
||||||
? this.environment.resolvePlaceholders(value) : fallback));
|
? this.environment.resolvePlaceholders(value) : fallback)));
|
||||||
Collections.reverse(list);
|
Collections.reverse(list);
|
||||||
return new LinkedHashSet<String>(list);
|
return new LinkedHashSet<String>(list);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||||
*
|
*
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
* @author Dave Syer
|
* @author Dave Syer
|
||||||
|
* @author Eddú Meléndez
|
||||||
*/
|
*/
|
||||||
public class ConfigFileApplicationListenerTests {
|
public class ConfigFileApplicationListenerTests {
|
||||||
|
|
||||||
|
|
@ -529,6 +530,39 @@ public class ConfigFileApplicationListenerTests {
|
||||||
"applicationConfig: [classpath:/testsetprofiles.yml]");
|
"applicationConfig: [classpath:/testsetprofiles.yml]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void yamlSetsMultiProfiles() throws Exception {
|
||||||
|
this.initializer.setSearchNames("testsetmultiprofiles");
|
||||||
|
this.initializer.postProcessEnvironment(this.environment, this.application);
|
||||||
|
assertThat(this.environment.getActiveProfiles()).containsExactly("dev", "healthcheck");
|
||||||
|
String property = this.environment.getProperty("my.property");
|
||||||
|
String property2 = this.environment.getProperty("my.property2");
|
||||||
|
assertThat(property).isEqualTo("fromdevprofile");
|
||||||
|
assertThat(property2).isEqualTo("fromhealthcheckprofile");
|
||||||
|
ConfigurationPropertySources propertySource = (ConfigurationPropertySources) this.environment
|
||||||
|
.getPropertySources()
|
||||||
|
.get(ConfigFileApplicationListener.APPLICATION_CONFIGURATION_PROPERTY_SOURCE_NAME);
|
||||||
|
Collection<org.springframework.core.env.PropertySource<?>> sources = propertySource
|
||||||
|
.getSource();
|
||||||
|
assertThat(sources).hasSize(3);
|
||||||
|
List<String> names = new ArrayList<String>();
|
||||||
|
for (org.springframework.core.env.PropertySource<?> source : sources) {
|
||||||
|
if (source instanceof EnumerableCompositePropertySource) {
|
||||||
|
for (org.springframework.core.env.PropertySource<?> nested : ((EnumerableCompositePropertySource) source)
|
||||||
|
.getSource()) {
|
||||||
|
names.add(nested.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
names.add(source.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assertThat(names).contains(
|
||||||
|
"applicationConfig: [classpath:/testsetmultiprofiles.yml]#healthcheck",
|
||||||
|
"applicationConfig: [classpath:/testsetmultiprofiles.yml]#dev",
|
||||||
|
"applicationConfig: [classpath:/testsetmultiprofiles.yml]");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void yamlProfileCanBeChanged() throws Exception {
|
public void yamlProfileCanBeChanged() throws Exception {
|
||||||
TestPropertySourceUtils.addInlinedPropertiesToEnvironment(this.environment,
|
TestPropertySourceUtils.addInlinedPropertiesToEnvironment(this.environment,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
---
|
||||||
|
spring:
|
||||||
|
profiles:
|
||||||
|
active: dev, healthcheck
|
||||||
|
my:
|
||||||
|
property: fromyamlfile
|
||||||
|
property2: fromyamlfile
|
||||||
|
---
|
||||||
|
spring:
|
||||||
|
profiles: dev
|
||||||
|
my:
|
||||||
|
property: fromdevprofile
|
||||||
|
---
|
||||||
|
spring:
|
||||||
|
profiles: healthcheck
|
||||||
|
my:
|
||||||
|
property2: fromhealthcheckprofile
|
||||||
Loading…
Reference in New Issue