Prefer client profiles over spring.profiles.active
If spring.clout.config.profile is set use it otherwise use profiles set by spring boot. Fixes gh-1764
This commit is contained in:
@@ -210,7 +210,7 @@ public class ConfigServerConfigDataLoader implements ConfigDataLoader<ConfigServ
|
||||
|
||||
String path = "/{name}/{profile}";
|
||||
String name = properties.getName();
|
||||
String profile = StringUtils.collectionToCommaDelimitedString(resource.getProfiles().getAccepted());
|
||||
String profile = resource.getProfiles();
|
||||
String token = properties.getToken();
|
||||
int noOfUrls = properties.getUri().length;
|
||||
if (noOfUrls > 1) {
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.util.Objects;
|
||||
import org.springframework.boot.context.config.ConfigDataResource;
|
||||
import org.springframework.boot.context.config.Profiles;
|
||||
import org.springframework.core.style.ToStringCreator;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
public class ConfigServerConfigDataResource extends ConfigDataResource {
|
||||
|
||||
@@ -44,8 +45,11 @@ public class ConfigServerConfigDataResource extends ConfigDataResource {
|
||||
return this.optional;
|
||||
}
|
||||
|
||||
public Profiles getProfiles() {
|
||||
return this.profiles;
|
||||
public String getProfiles() {
|
||||
if (StringUtils.hasText(properties.getProfile())) {
|
||||
return properties.getProfile();
|
||||
}
|
||||
return StringUtils.collectionToCommaDelimitedString(profiles.getAccepted());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,11 +16,15 @@
|
||||
|
||||
package org.springframework.cloud.config.client;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.ConfigurableBootstrapContext;
|
||||
import org.springframework.boot.context.config.ConfigDataLocation;
|
||||
import org.springframework.boot.context.config.ConfigDataLocationResolverContext;
|
||||
import org.springframework.boot.context.config.Profiles;
|
||||
import org.springframework.boot.context.properties.bind.Binder;
|
||||
import org.springframework.boot.logging.DeferredLog;
|
||||
import org.springframework.mock.env.MockEnvironment;
|
||||
@@ -63,4 +67,28 @@ public class ConfigServerConfigDataLocationResolverTests {
|
||||
assertThat(this.resolver.isResolvable(this.context, ConfigDataLocation.of("configserver:"))).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void defaultSpringProfiles() {
|
||||
ConfigServerConfigDataResource resource = testResolveProvileSpecific();
|
||||
assertThat(resource.getProfiles()).isEqualTo("default");
|
||||
}
|
||||
|
||||
@Test
|
||||
void configClientProfilesOverridesSpringProfilesActive() {
|
||||
this.environment.setProperty(ConfigClientProperties.PREFIX + ".profile", "myprofile");
|
||||
ConfigServerConfigDataResource resource = testResolveProvileSpecific();
|
||||
assertThat(resource.getProfiles()).isEqualTo("myprofile");
|
||||
}
|
||||
|
||||
private ConfigServerConfigDataResource testResolveProvileSpecific() {
|
||||
when(context.getBootstrapContext()).thenReturn(mock(ConfigurableBootstrapContext.class));
|
||||
Profiles profiles = mock(Profiles.class);
|
||||
|
||||
List<ConfigServerConfigDataResource> resources = this.resolver.resolveProfileSpecific(context,
|
||||
ConfigDataLocation.of("configserver:"), profiles);
|
||||
assertThat(resources).hasSize(1);
|
||||
ConfigServerConfigDataResource resource = resources.get(0);
|
||||
return resource;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user