diff --git a/pom.xml b/pom.xml
index a523c354..7440bcf8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -72,6 +72,70 @@
+
+
+ milestone
+
+
+ repo.spring.io
+ Spring Milestone Repository
+ https://repo.spring.io/libs-milestone-local
+
+
+
+
+ central
+
+
+ sonatype-nexus-snapshots
+ Sonatype Nexus Snapshots
+ https://oss.sonatype.org/content/repositories/snapshots/
+
+
+ sonatype-nexus-staging
+ Nexus Release Repository
+ https://oss.sonatype.org/service/local/staging/deploy/maven2/
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+
+
+
+
+
+ http://www.springsource.com/download/community
+
+
+ spring-docs
+ scp://static.springframework.org/var/www/domains/springframework.org/static/htdocs/spring-retry/docs/${project.version}
+
+
+
+ repo.spring.io
+ Spring Release Repository
+ https://repo.spring.io/libs-release-local
+
+
+ repo.spring.io
+ Spring Snapshot Repository
+ https://repo.spring.io/libs-snapshot-local
+
+
diff --git a/spring-platform-config-server/pom.xml b/spring-platform-config-server/pom.xml
index 3f817c4f..e4031d5b 100644
--- a/spring-platform-config-server/pom.xml
+++ b/spring-platform-config-server/pom.xml
@@ -59,6 +59,10 @@
spring-boot-starter-test
test
+
+ org.apache.activemq
+ activemq-client
+
diff --git a/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/SpringApplicationEnvironmentRepository.java b/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/SpringApplicationEnvironmentRepository.java
index 5f6285ce..a9c911b2 100644
--- a/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/SpringApplicationEnvironmentRepository.java
+++ b/spring-platform-config-server/src/main/java/org/springframework/platform/config/server/SpringApplicationEnvironmentRepository.java
@@ -17,11 +17,15 @@
package org.springframework.platform.config.server;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.env.ConfigurableEnvironment;
+import org.springframework.core.env.MapPropertySource;
+import org.springframework.core.env.StandardEnvironment;
import org.springframework.platform.config.Environment;
import org.springframework.util.StringUtils;
@@ -42,21 +46,35 @@ public class SpringApplicationEnvironmentRepository implements EnvironmentReposi
public Environment findOne(String config, String profile, String label) {
SpringApplicationBuilder builder = new SpringApplicationBuilder(
PropertyPlaceholderAutoConfiguration.class);
- builder.profiles(profile.split(",")).web(false).showBanner(false);
+ ConfigurableEnvironment environment = getEnvironment(profile);
+ builder.environment(environment);
+ builder.web(false).showBanner(false);
String[] args = getArgs(config);
ConfigurableApplicationContext context = builder.run(args);
+ environment.getPropertySources().remove("profiles");
try {
- return new NativeEnvironmentRepository(context.getEnvironment()).findOne(
+ return new NativeEnvironmentRepository(environment).findOne(
config, profile, label);
- } finally {
+ }
+ finally {
context.close();
}
}
+ private ConfigurableEnvironment getEnvironment(String profile) {
+ ConfigurableEnvironment environment = new StandardEnvironment();
+ environment.getPropertySources()
+ .addFirst(
+ new MapPropertySource("profiles", Collections
+ . singletonMap("spring.profiles.active",
+ profile)));
+ return environment;
+ }
+
private String[] getArgs(String config) {
List list = new ArrayList();
if (!config.startsWith("application")) {
- config = "application," + config;
+ config = "application," + config;
}
list.add("--spring.config.name=" + config);
list.add("--spring.platform.bootstrap.enabled=false");
diff --git a/spring-platform-config-server/src/test/java/org/springframework/platform/config/server/JGitEnvironmentRepositoryTests.java b/spring-platform-config-server/src/test/java/org/springframework/platform/config/server/JGitEnvironmentRepositoryTests.java
index 563992fc..1e7876bd 100644
--- a/spring-platform-config-server/src/test/java/org/springframework/platform/config/server/JGitEnvironmentRepositoryTests.java
+++ b/spring-platform-config-server/src/test/java/org/springframework/platform/config/server/JGitEnvironmentRepositoryTests.java
@@ -48,7 +48,7 @@ public class JGitEnvironmentRepositoryTests {
public void vanilla() {
repository.findOne("bar", "staging", "master");
Environment environment = repository.findOne("bar", "staging", "master");
- assertEquals(1, environment.getPropertySources().size());
+ assertEquals(2, environment.getPropertySources().size());
assertEquals(JGitEnvironmentRepository.DEFAULT_URI + "/bar.properties",
environment.getPropertySources().get(0).getName());
}
@@ -58,7 +58,7 @@ public class JGitEnvironmentRepositoryTests {
repository.setBasedir(basedir);
repository.findOne("bar", "staging", "master");
Environment environment = repository.findOne("bar", "staging", "master");
- assertEquals(1, environment.getPropertySources().size());
+ assertEquals(2, environment.getPropertySources().size());
assertEquals(JGitEnvironmentRepository.DEFAULT_URI + "/bar.properties",
environment.getPropertySources().get(0).getName());
}
@@ -70,7 +70,7 @@ public class JGitEnvironmentRepositoryTests {
repository.setBasedir(basedir);
repository.findOne("bar", "staging", "master");
Environment environment = repository.findOne("bar", "staging", "master");
- assertEquals(1, environment.getPropertySources().size());
+ assertEquals(2, environment.getPropertySources().size());
assertEquals(JGitEnvironmentRepository.DEFAULT_URI + "/bar.properties",
environment.getPropertySources().get(0).getName());
}
diff --git a/spring-platform-config-server/src/test/java/org/springframework/platform/config/server/SpringApplicationEnvironmentRepositoryTests.java b/spring-platform-config-server/src/test/java/org/springframework/platform/config/server/SpringApplicationEnvironmentRepositoryTests.java
index d34d961e..98b2b727 100644
--- a/spring-platform-config-server/src/test/java/org/springframework/platform/config/server/SpringApplicationEnvironmentRepositoryTests.java
+++ b/spring-platform-config-server/src/test/java/org/springframework/platform/config/server/SpringApplicationEnvironmentRepositoryTests.java
@@ -32,6 +32,13 @@ public class SpringApplicationEnvironmentRepositoryTests {
@Test
public void vanilla() {
Environment environment = repository.findOne("foo", "development", "master");
+ assertEquals(3, environment.getPropertySources().size());
+ }
+
+ @Test
+ public void ignoresExistingProfile() {
+ System.setProperty("spring.profiles.active", "cloud");
+ Environment environment = repository.findOne("foo", "main", "master");
assertEquals(2, environment.getPropertySources().size());
}
@@ -39,14 +46,14 @@ public class SpringApplicationEnvironmentRepositoryTests {
public void prefixed() {
repository.setSearchLocations("classpath:/test");
Environment environment = repository.findOne("foo", "development", "master");
- assertEquals(3, environment.getPropertySources().size());
+ assertEquals(4, environment.getPropertySources().size());
}
@Test
public void prefixedWithFile() {
repository.setSearchLocations("file:./src/test/resources/test");
Environment environment = repository.findOne("foo", "development", "master");
- assertEquals(3, environment.getPropertySources().size());
+ assertEquals(4, environment.getPropertySources().size());
}
}
diff --git a/spring-platform-config-server/src/test/resources/foo-cloud.properties b/spring-platform-config-server/src/test/resources/foo-cloud.properties
new file mode 100644
index 00000000..9e019360
--- /dev/null
+++ b/spring-platform-config-server/src/test/resources/foo-cloud.properties
@@ -0,0 +1 @@
+bar: cloud
\ No newline at end of file