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