diff --git a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/environment/Environment.java b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/environment/Environment.java index c1093fb3..83bc288e 100644 --- a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/environment/Environment.java +++ b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/environment/Environment.java @@ -17,6 +17,7 @@ package org.springframework.cloud.config.environment; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import com.fasterxml.jackson.annotation.JsonCreator; @@ -34,15 +35,23 @@ public class Environment { private String name; + private String[] profiles = new String[0]; + private String label; private List propertySources = new ArrayList(); + public Environment(String name, String... profiles) { + this(name, profiles, "master"); + } + @JsonCreator public Environment(@JsonProperty("name") String name, + @JsonProperty("profiles") String[] profiles, @JsonProperty("label") String label) { super(); this.name = name; + this.profiles = profiles; this.label = label; } @@ -61,15 +70,31 @@ public class Environment { public String getName() { return name; } + + public void setName(String name) { + this.name = name; + } public String getLabel() { return label; } + + public void setLabel(String label) { + this.label = label; + } + + public String[] getProfiles() { + return profiles; + } + + public void setProfiles(String[] profiles) { + this.profiles = profiles; + } @Override public String toString() { - return "Environment [name=" + name + ", label=" + label + ", propertySources=" - + propertySources + "]"; + return "Environment [name=" + name + ", profiles=" + Arrays.asList(profiles) + + ", label=" + label + ", propertySources=" + propertySources + "]"; } } diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/AbstractScmEnvironmentRepository.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/AbstractScmEnvironmentRepository.java index 43d4e129..36427de0 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/AbstractScmEnvironmentRepository.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/AbstractScmEnvironmentRepository.java @@ -144,7 +144,7 @@ public abstract class AbstractScmEnvironmentRepository implements EnvironmentRep } protected Environment clean(Environment value) { - Environment result = new Environment(value.getName(), value.getLabel()); + Environment result = new Environment(value.getName(), value.getProfiles(), value.getLabel()); for (PropertySource source : value.getPropertySources()) { String name = source.getName().replace( getWorkingDirectory().toURI().toString(), ""); diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/EncryptionController.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/EncryptionController.java index fa8f7138..cf136734 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/EncryptionController.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/EncryptionController.java @@ -223,7 +223,7 @@ public class EncryptionController { } public Environment decrypt(Environment environment) { - Environment result = new Environment(environment.getName(), + Environment result = new Environment(environment.getName(), environment.getProfiles(), environment.getLabel()); for (PropertySource source : environment.getPropertySources()) { Map map = new LinkedHashMap( diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/JGitEnvironmentRepository.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/JGitEnvironmentRepository.java index 43543012..4f225dea 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/JGitEnvironmentRepository.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/JGitEnvironmentRepository.java @@ -112,7 +112,9 @@ public class JGitEnvironmentRepository extends AbstractScmEnvironmentRepository pull(git, label, ref); } environment.setSearchLocations(getSearchLocations(getWorkingDirectory())); - return clean(environment.findOne(application, profile, "")); + Environment result = environment.findOne(application, profile, ""); + result.setLabel(label); + return clean(result); } private Ref checkout(Git git, String label) throws GitAPIException { diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/NativeEnvironmentRepository.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/NativeEnvironmentRepository.java index 4c127433..844ed8c6 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/NativeEnvironmentRepository.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/NativeEnvironmentRepository.java @@ -26,6 +26,7 @@ import org.springframework.core.env.MapPropertySource; import org.springframework.core.env.StandardEnvironment; import org.springframework.cloud.config.environment.Environment; import org.springframework.cloud.config.environment.PropertySource; +import org.springframework.util.StringUtils; import org.springframework.web.context.support.StandardServletEnvironment; /** @@ -53,7 +54,7 @@ public class NativeEnvironmentRepository implements EnvironmentRepository { @Override public Environment findOne(String application, String env, String label) { - Environment result = new Environment(env, label); + Environment result = new Environment(application, StringUtils.commaDelimitedListToStringArray(env), label); for (org.springframework.core.env.PropertySource source : environment.getPropertySources()) { String name = source.getName(); if (!standardSources.contains(name) && source instanceof MapPropertySource) { diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/JGitEnvironmentRepositoryIntegrationTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/JGitEnvironmentRepositoryIntegrationTests.java index 789bcc43..1a045836 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/JGitEnvironmentRepositoryIntegrationTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/JGitEnvironmentRepositoryIntegrationTests.java @@ -16,6 +16,7 @@ package org.springframework.cloud.config.server; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import java.io.File; @@ -31,9 +32,6 @@ import org.junit.Test; import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.config.environment.Environment; -import org.springframework.cloud.config.server.ConfigServerConfiguration; -import org.springframework.cloud.config.server.ConfigServerTestUtils; -import org.springframework.cloud.config.server.EnvironmentRepository; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -74,6 +72,9 @@ public class JGitEnvironmentRepositoryIntegrationTests { repository.findOne("bar", "staging", "master"); Environment environment = repository.findOne("bar", "staging", "master"); assertEquals(2, environment.getPropertySources().size()); + assertEquals("bar", environment.getName()); + assertArrayEquals(new String[] {"staging"}, environment.getProfiles()); + assertEquals("master", environment.getLabel()); } @Test