From b5022e3660516e4fd7c5f3f9d4ff7e1bdcb3a3b2 Mon Sep 17 00:00:00 2001 From: Tommy Ludwig Date: Mon, 6 Nov 2017 19:03:58 +0900 Subject: [PATCH 1/5] Make CompositeConfiguration conditional on missing bean Previously, `CompositeConfiguration` (which is imported by `ConfigServerAutoConfiguration`) would unconditionally create a `CompositeEnvironmentRepository` bean marked as `@Primary`. This makes it difficult for users, in their code, to provide their own `CompositeEnvironmentRepository` bean to be used in various places. This adds a `ConditionalOnMissingBean` condition to the `Configuration` to make it easy to provide a primary `CompositeEnvironmentRepository` in user code. --- .../server/config/CompositeConfiguration.java | 1 + .../CompositeEnvironmentRepositoryTests.java | 26 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/config/CompositeConfiguration.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/config/CompositeConfiguration.java index c4792adb..8b06bb87 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/config/CompositeConfiguration.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/config/CompositeConfiguration.java @@ -32,6 +32,7 @@ import org.springframework.context.annotation.Primary; * @author Ryan Baxter */ @Configuration +@ConditionalOnMissingBean(CompositeEnvironmentRepository.class) public class CompositeConfiguration { private List environmentRepos = new ArrayList<>(); diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/CompositeEnvironmentRepositoryTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/CompositeEnvironmentRepositoryTests.java index 138f9f56..c455b62f 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/CompositeEnvironmentRepositoryTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/CompositeEnvironmentRepositoryTests.java @@ -16,10 +16,17 @@ package org.springframework.cloud.config.server.environment; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.junit.Test; import org.springframework.cloud.config.environment.Environment; import org.springframework.cloud.config.environment.PropertySource; +import org.springframework.cloud.config.server.config.CompositeConfiguration; +import org.springframework.cloud.config.server.config.ConfigServerHealthIndicator; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; import org.springframework.core.Ordered; import static org.junit.Assert.assertEquals; @@ -31,7 +38,7 @@ import static org.mockito.Mockito.mock; */ public class CompositeEnvironmentRepositoryTests { - private class TestOrderedEnvironmentRepository implements EnvironmentRepository, SearchPathLocator, Ordered { + private static class TestOrderedEnvironmentRepository implements EnvironmentRepository, SearchPathLocator, Ordered { private Environment env; private Locations locations; @@ -144,4 +151,21 @@ public class CompositeEnvironmentRepositoryTests { assertEquals(null, multiEnv.getState()); } + + @Test + public void overridingCompositeEnvRepo_contextLoads() { + try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext()) { + context.register(OverrideCompositeConfig.class, CompositeConfiguration.class, ConfigServerHealthIndicator.class); + context.refresh(); + } + } + + @Configuration + static class OverrideCompositeConfig { + @Bean + @Primary + CompositeEnvironmentRepository customCompositeEnvironmentRepository() { + return new CompositeEnvironmentRepository(Arrays.asList(new TestOrderedEnvironmentRepository(1, new Environment("app", "dev"), null))); + } + } } From 02603f030c412c4a9256f30640dff9240ac70e07 Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Thu, 21 Dec 2017 16:01:01 -0500 Subject: [PATCH 2/5] Update SNAPSHOT to 1.3.4.RELEASE --- docs/pom.xml | 2 +- pom.xml | 6 +++--- spring-cloud-config-client/pom.xml | 2 +- spring-cloud-config-dependencies/pom.xml | 4 ++-- spring-cloud-config-monitor/pom.xml | 4 ++-- spring-cloud-config-sample/pom.xml | 2 +- spring-cloud-config-server/pom.xml | 2 +- spring-cloud-starter-config/pom.xml | 4 ++-- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/pom.xml b/docs/pom.xml index 436ed771..e0166199 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -6,7 +6,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.4.RELEASE .. diff --git a/pom.xml b/pom.xml index d04c6a3b..c59c68e2 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.4.RELEASE pom Spring Cloud Config Spring Cloud Config @@ -11,7 +11,7 @@ org.springframework.cloud spring-cloud-build - 1.3.5.BUILD-SNAPSHOT + 1.3.7.RELEASE @@ -22,7 +22,7 @@ config - 1.2.1.BUILD-SNAPSHOT + 1.2.5.RELEASE spring-cloud-config-dependencies diff --git a/spring-cloud-config-client/pom.xml b/spring-cloud-config-client/pom.xml index 30eebcc1..46765748 100644 --- a/spring-cloud-config-client/pom.xml +++ b/spring-cloud-config-client/pom.xml @@ -10,7 +10,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.4.RELEASE .. diff --git a/spring-cloud-config-dependencies/pom.xml b/spring-cloud-config-dependencies/pom.xml index 4aeb2b3b..500309b1 100644 --- a/spring-cloud-config-dependencies/pom.xml +++ b/spring-cloud-config-dependencies/pom.xml @@ -5,11 +5,11 @@ spring-cloud-dependencies-parent org.springframework.cloud - 1.3.2.RELEASE + 1.3.7.RELEASE spring-cloud-config-dependencies - 1.3.4.BUILD-SNAPSHOT + 1.3.4.RELEASE pom spring-cloud-config-dependencies Spring Cloud Config Dependencies diff --git a/spring-cloud-config-monitor/pom.xml b/spring-cloud-config-monitor/pom.xml index 344e065f..539db70b 100644 --- a/spring-cloud-config-monitor/pom.xml +++ b/spring-cloud-config-monitor/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.4.RELEASE .. spring-cloud-config-monitor @@ -13,7 +13,7 @@ Spring Cloud Config Monitor ${basedir}/../.. - 1.3.1.BUILD-SNAPSHOT + 1.3.1.RELEASE diff --git a/spring-cloud-config-sample/pom.xml b/spring-cloud-config-sample/pom.xml index 8bc7b913..51f8b9bc 100644 --- a/spring-cloud-config-sample/pom.xml +++ b/spring-cloud-config-sample/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.4.RELEASE .. diff --git a/spring-cloud-config-server/pom.xml b/spring-cloud-config-server/pom.xml index a241a3f2..3d041468 100644 --- a/spring-cloud-config-server/pom.xml +++ b/spring-cloud-config-server/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.4.RELEASE .. diff --git a/spring-cloud-starter-config/pom.xml b/spring-cloud-starter-config/pom.xml index fc1fee80..12409ff5 100644 --- a/spring-cloud-starter-config/pom.xml +++ b/spring-cloud-starter-config/pom.xml @@ -5,10 +5,10 @@ org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.4.RELEASE spring-cloud-starter-config - 1.3.4.BUILD-SNAPSHOT + 1.3.4.RELEASE spring-cloud-starter-config Spring Cloud Starter https://projects.spring.io/spring-cloud From d704f08cdaeb5b785d997c5818eda7ef6ae96823 Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Thu, 21 Dec 2017 16:02:47 -0500 Subject: [PATCH 3/5] Going back to snapshots --- docs/pom.xml | 2 +- pom.xml | 6 +++--- spring-cloud-config-client/pom.xml | 2 +- spring-cloud-config-dependencies/pom.xml | 4 ++-- spring-cloud-config-monitor/pom.xml | 4 ++-- spring-cloud-config-sample/pom.xml | 2 +- spring-cloud-config-server/pom.xml | 2 +- spring-cloud-starter-config/pom.xml | 4 ++-- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/pom.xml b/docs/pom.xml index e0166199..436ed771 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -6,7 +6,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.RELEASE + 1.3.4.BUILD-SNAPSHOT .. diff --git a/pom.xml b/pom.xml index c59c68e2..d04c6a3b 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.springframework.cloud spring-cloud-config - 1.3.4.RELEASE + 1.3.4.BUILD-SNAPSHOT pom Spring Cloud Config Spring Cloud Config @@ -11,7 +11,7 @@ org.springframework.cloud spring-cloud-build - 1.3.7.RELEASE + 1.3.5.BUILD-SNAPSHOT @@ -22,7 +22,7 @@ config - 1.2.5.RELEASE + 1.2.1.BUILD-SNAPSHOT spring-cloud-config-dependencies diff --git a/spring-cloud-config-client/pom.xml b/spring-cloud-config-client/pom.xml index 46765748..30eebcc1 100644 --- a/spring-cloud-config-client/pom.xml +++ b/spring-cloud-config-client/pom.xml @@ -10,7 +10,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.RELEASE + 1.3.4.BUILD-SNAPSHOT .. diff --git a/spring-cloud-config-dependencies/pom.xml b/spring-cloud-config-dependencies/pom.xml index 500309b1..4aeb2b3b 100644 --- a/spring-cloud-config-dependencies/pom.xml +++ b/spring-cloud-config-dependencies/pom.xml @@ -5,11 +5,11 @@ spring-cloud-dependencies-parent org.springframework.cloud - 1.3.7.RELEASE + 1.3.2.RELEASE spring-cloud-config-dependencies - 1.3.4.RELEASE + 1.3.4.BUILD-SNAPSHOT pom spring-cloud-config-dependencies Spring Cloud Config Dependencies diff --git a/spring-cloud-config-monitor/pom.xml b/spring-cloud-config-monitor/pom.xml index 539db70b..344e065f 100644 --- a/spring-cloud-config-monitor/pom.xml +++ b/spring-cloud-config-monitor/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.RELEASE + 1.3.4.BUILD-SNAPSHOT .. spring-cloud-config-monitor @@ -13,7 +13,7 @@ Spring Cloud Config Monitor ${basedir}/../.. - 1.3.1.RELEASE + 1.3.1.BUILD-SNAPSHOT diff --git a/spring-cloud-config-sample/pom.xml b/spring-cloud-config-sample/pom.xml index 51f8b9bc..8bc7b913 100644 --- a/spring-cloud-config-sample/pom.xml +++ b/spring-cloud-config-sample/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.RELEASE + 1.3.4.BUILD-SNAPSHOT .. diff --git a/spring-cloud-config-server/pom.xml b/spring-cloud-config-server/pom.xml index 3d041468..a241a3f2 100644 --- a/spring-cloud-config-server/pom.xml +++ b/spring-cloud-config-server/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.RELEASE + 1.3.4.BUILD-SNAPSHOT .. diff --git a/spring-cloud-starter-config/pom.xml b/spring-cloud-starter-config/pom.xml index 12409ff5..fc1fee80 100644 --- a/spring-cloud-starter-config/pom.xml +++ b/spring-cloud-starter-config/pom.xml @@ -5,10 +5,10 @@ org.springframework.cloud spring-cloud-config - 1.3.4.RELEASE + 1.3.4.BUILD-SNAPSHOT spring-cloud-starter-config - 1.3.4.RELEASE + 1.3.4.BUILD-SNAPSHOT spring-cloud-starter-config Spring Cloud Starter https://projects.spring.io/spring-cloud From 44701608ca1ea277d0a2b152e5b77b424b07bfca Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Thu, 21 Dec 2017 16:02:48 -0500 Subject: [PATCH 4/5] Bumping versions to 1.3.5.BUILD-SNAPSHOT after release --- docs/pom.xml | 2 +- pom.xml | 2 +- spring-cloud-config-client/pom.xml | 2 +- spring-cloud-config-dependencies/pom.xml | 2 +- spring-cloud-config-monitor/pom.xml | 2 +- spring-cloud-config-sample/pom.xml | 2 +- spring-cloud-config-server/pom.xml | 2 +- spring-cloud-starter-config/pom.xml | 4 ++-- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/pom.xml b/docs/pom.xml index 436ed771..57bad625 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -6,7 +6,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.5.BUILD-SNAPSHOT .. diff --git a/pom.xml b/pom.xml index d04c6a3b..15ae7f38 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.5.BUILD-SNAPSHOT pom Spring Cloud Config Spring Cloud Config diff --git a/spring-cloud-config-client/pom.xml b/spring-cloud-config-client/pom.xml index 30eebcc1..25c78274 100644 --- a/spring-cloud-config-client/pom.xml +++ b/spring-cloud-config-client/pom.xml @@ -10,7 +10,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-config-dependencies/pom.xml b/spring-cloud-config-dependencies/pom.xml index 4aeb2b3b..b874e68e 100644 --- a/spring-cloud-config-dependencies/pom.xml +++ b/spring-cloud-config-dependencies/pom.xml @@ -9,7 +9,7 @@ spring-cloud-config-dependencies - 1.3.4.BUILD-SNAPSHOT + 1.3.5.BUILD-SNAPSHOT pom spring-cloud-config-dependencies Spring Cloud Config Dependencies diff --git a/spring-cloud-config-monitor/pom.xml b/spring-cloud-config-monitor/pom.xml index 344e065f..c1f27460 100644 --- a/spring-cloud-config-monitor/pom.xml +++ b/spring-cloud-config-monitor/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.5.BUILD-SNAPSHOT .. spring-cloud-config-monitor diff --git a/spring-cloud-config-sample/pom.xml b/spring-cloud-config-sample/pom.xml index 8bc7b913..e2e8191a 100644 --- a/spring-cloud-config-sample/pom.xml +++ b/spring-cloud-config-sample/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-config-server/pom.xml b/spring-cloud-config-server/pom.xml index a241a3f2..6c032419 100644 --- a/spring-cloud-config-server/pom.xml +++ b/spring-cloud-config-server/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-starter-config/pom.xml b/spring-cloud-starter-config/pom.xml index fc1fee80..1deb3c43 100644 --- a/spring-cloud-starter-config/pom.xml +++ b/spring-cloud-starter-config/pom.xml @@ -5,10 +5,10 @@ org.springframework.cloud spring-cloud-config - 1.3.4.BUILD-SNAPSHOT + 1.3.5.BUILD-SNAPSHOT spring-cloud-starter-config - 1.3.4.BUILD-SNAPSHOT + 1.3.5.BUILD-SNAPSHOT spring-cloud-starter-config Spring Cloud Starter https://projects.spring.io/spring-cloud From 6b67fcf925c1363c77996108e31aeaa76639a339 Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Tue, 2 Jan 2018 09:14:55 -0500 Subject: [PATCH 5/5] Adding @Validated annotation. Fixes #871. --- .../config/server/environment/VaultEnvironmentRepository.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/VaultEnvironmentRepository.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/VaultEnvironmentRepository.java index 6ac6d758..95288b97 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/VaultEnvironmentRepository.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/VaultEnvironmentRepository.java @@ -42,6 +42,7 @@ import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.util.StringUtils; +import org.springframework.validation.annotation.Validated; import org.springframework.web.client.HttpStatusCodeException; import org.springframework.web.client.RestTemplate; @@ -53,6 +54,7 @@ import static org.springframework.cloud.config.client.ConfigClientProperties.TOK * @author Mark Paluch */ @ConfigurationProperties("spring.cloud.config.server.vault") +@Validated public class VaultEnvironmentRepository implements EnvironmentRepository, Ordered { public static final String VAULT_TOKEN = "X-Vault-Token";