From 47cb05c7aa0e6fa7c303a22f77397a5d344676fc Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Mon, 2 Oct 2017 14:37:27 -0400 Subject: [PATCH 01/11] Update SNAPSHOT to 1.3.3.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 17115503..db8a0f66 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -6,7 +6,7 @@ org.springframework.cloud spring-cloud-config - 1.3.3.BUILD-SNAPSHOT + 1.3.3.RELEASE .. diff --git a/pom.xml b/pom.xml index 4f408bc9..9c0787c8 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.springframework.cloud spring-cloud-config - 1.3.3.BUILD-SNAPSHOT + 1.3.3.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.5.RELEASE @@ -22,7 +22,7 @@ config - 1.2.1.BUILD-SNAPSHOT + 1.2.4.RELEASE spring-cloud-config-dependencies diff --git a/spring-cloud-config-client/pom.xml b/spring-cloud-config-client/pom.xml index 4fb76004..11e660d0 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.3.BUILD-SNAPSHOT + 1.3.3.RELEASE .. diff --git a/spring-cloud-config-dependencies/pom.xml b/spring-cloud-config-dependencies/pom.xml index c8de615e..dbb6e877 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.5.RELEASE spring-cloud-config-dependencies - 1.3.3.BUILD-SNAPSHOT + 1.3.3.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 33635942..294218b6 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.3.BUILD-SNAPSHOT + 1.3.3.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 871e07a3..21cd57db 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.3.BUILD-SNAPSHOT + 1.3.3.RELEASE .. diff --git a/spring-cloud-config-server/pom.xml b/spring-cloud-config-server/pom.xml index b9e1d68c..ff7cf454 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.3.BUILD-SNAPSHOT + 1.3.3.RELEASE .. diff --git a/spring-cloud-starter-config/pom.xml b/spring-cloud-starter-config/pom.xml index a7da2753..03221215 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.3.BUILD-SNAPSHOT + 1.3.3.RELEASE spring-cloud-starter-config - 1.3.3.BUILD-SNAPSHOT + 1.3.3.RELEASE spring-cloud-starter-config Spring Cloud Starter https://projects.spring.io/spring-cloud From fbeea130eb9e4f9d85ffd648a86cbeadf34b80cf Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Mon, 2 Oct 2017 14:39:40 -0400 Subject: [PATCH 02/11] 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 db8a0f66..17115503 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -6,7 +6,7 @@ org.springframework.cloud spring-cloud-config - 1.3.3.RELEASE + 1.3.3.BUILD-SNAPSHOT .. diff --git a/pom.xml b/pom.xml index 9c0787c8..4f408bc9 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.springframework.cloud spring-cloud-config - 1.3.3.RELEASE + 1.3.3.BUILD-SNAPSHOT pom Spring Cloud Config Spring Cloud Config @@ -11,7 +11,7 @@ org.springframework.cloud spring-cloud-build - 1.3.5.RELEASE + 1.3.5.BUILD-SNAPSHOT @@ -22,7 +22,7 @@ config - 1.2.4.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 11e660d0..4fb76004 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.3.RELEASE + 1.3.3.BUILD-SNAPSHOT .. diff --git a/spring-cloud-config-dependencies/pom.xml b/spring-cloud-config-dependencies/pom.xml index dbb6e877..c8de615e 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.5.RELEASE + 1.3.2.RELEASE spring-cloud-config-dependencies - 1.3.3.RELEASE + 1.3.3.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 294218b6..33635942 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.3.RELEASE + 1.3.3.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 21cd57db..871e07a3 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.3.RELEASE + 1.3.3.BUILD-SNAPSHOT .. diff --git a/spring-cloud-config-server/pom.xml b/spring-cloud-config-server/pom.xml index ff7cf454..b9e1d68c 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.3.RELEASE + 1.3.3.BUILD-SNAPSHOT .. diff --git a/spring-cloud-starter-config/pom.xml b/spring-cloud-starter-config/pom.xml index 03221215..a7da2753 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.3.RELEASE + 1.3.3.BUILD-SNAPSHOT spring-cloud-starter-config - 1.3.3.RELEASE + 1.3.3.BUILD-SNAPSHOT spring-cloud-starter-config Spring Cloud Starter https://projects.spring.io/spring-cloud From 8b2bf46f92f48075d915560534f2ddda420ff775 Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Mon, 2 Oct 2017 14:39:40 -0400 Subject: [PATCH 03/11] Bumping versions to 1.3.4.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 17115503..436ed771 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -6,7 +6,7 @@ org.springframework.cloud spring-cloud-config - 1.3.3.BUILD-SNAPSHOT + 1.3.4.BUILD-SNAPSHOT .. diff --git a/pom.xml b/pom.xml index 4f408bc9..d04c6a3b 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.springframework.cloud spring-cloud-config - 1.3.3.BUILD-SNAPSHOT + 1.3.4.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 4fb76004..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.3.BUILD-SNAPSHOT + 1.3.4.BUILD-SNAPSHOT .. diff --git a/spring-cloud-config-dependencies/pom.xml b/spring-cloud-config-dependencies/pom.xml index c8de615e..4aeb2b3b 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.3.BUILD-SNAPSHOT + 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 33635942..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.3.BUILD-SNAPSHOT + 1.3.4.BUILD-SNAPSHOT .. spring-cloud-config-monitor diff --git a/spring-cloud-config-sample/pom.xml b/spring-cloud-config-sample/pom.xml index 871e07a3..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.3.BUILD-SNAPSHOT + 1.3.4.BUILD-SNAPSHOT .. diff --git a/spring-cloud-config-server/pom.xml b/spring-cloud-config-server/pom.xml index b9e1d68c..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.3.BUILD-SNAPSHOT + 1.3.4.BUILD-SNAPSHOT .. diff --git a/spring-cloud-starter-config/pom.xml b/spring-cloud-starter-config/pom.xml index a7da2753..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.3.BUILD-SNAPSHOT + 1.3.4.BUILD-SNAPSHOT spring-cloud-starter-config - 1.3.3.BUILD-SNAPSHOT + 1.3.4.BUILD-SNAPSHOT spring-cloud-starter-config Spring Cloud Starter https://projects.spring.io/spring-cloud From a7bd68cf934177547b9a9303c998cad322fb9020 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Thu, 19 Oct 2017 12:03:39 -0400 Subject: [PATCH 04/11] point to build snapshot. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 96124fe9..aca4a35f 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ org.springframework.cloud spring-cloud-build - 1.3.5.RELEASE + 1.3.5.BUILD-SNAPSHOT From 01981aad530ba8530ac0b94398a4e9d56b229d88 Mon Sep 17 00:00:00 2001 From: Daniel Lavoie Date: Thu, 19 Oct 2017 12:29:02 -0400 Subject: [PATCH 05/11] ResourceController support for server defined default label. Fixes #824 --- .../server/resource/ResourceController.java | 17 ++++++++++++- .../ResourceControllerIntegrationTests.java | 24 +++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/resource/ResourceController.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/resource/ResourceController.java index feea79ae..b43d55c3 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/resource/ResourceController.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/resource/ResourceController.java @@ -49,6 +49,7 @@ import org.springframework.web.util.UrlPathHelper; * to replace placeholders in the resource text. * * @author Dave Syer + * @author Daniel Lavoie * */ @RestController @@ -77,9 +78,23 @@ public class ResourceController { return retrieve(name, profile, label, path, resolvePlaceholders); } + @RequestMapping(value = "/{name}/{profile}/**", params = "useDefaultLabel") + public String retrieve(@PathVariable String name, @PathVariable String profile, + HttpServletRequest request, + @RequestParam(defaultValue = "true") boolean resolvePlaceholders) + throws IOException { + String path = getFilePath(request, name, profile, null); + return retrieve(name, profile, null, path, resolvePlaceholders); + } + private String getFilePath(HttpServletRequest request, String name, String profile, String label) { - String stem = String.format("/%s/%s/%s/", name, profile, label); + String stem; + if(label != null ) { + stem = String.format("/%s/%s/%s/", name, profile, label); + }else { + stem = String.format("/%s/%s/", name, profile); + } String path = this.helper.getPathWithinApplication(request); path = path.substring(path.indexOf(stem) + stem.length()); return path; diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/resource/ResourceControllerIntegrationTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/resource/ResourceControllerIntegrationTests.java index 685bd385..9a5b9df3 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/resource/ResourceControllerIntegrationTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/resource/ResourceControllerIntegrationTests.java @@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.config.environment.Environment; +import org.springframework.cloud.config.server.environment.EnvironmentController; import org.springframework.cloud.config.server.environment.EnvironmentRepository; import org.springframework.cloud.config.server.resource.ResourceControllerIntegrationTests.ControllerConfiguration; import org.springframework.context.annotation.Bean; @@ -41,10 +42,11 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc; /** * @author Dave Syer + * @author Daniel Lavoie * */ @RunWith(SpringRunner.class) -@SpringBootTest(classes = ControllerConfiguration.class) +@SpringBootTest(classes = ControllerConfiguration.class, properties = "trace") @DirtiesContext public class ResourceControllerIntegrationTests { @@ -74,6 +76,19 @@ public class ResourceControllerIntegrationTests { Mockito.verify(this.resources).findOne("foo", "default", "master", "foo.txt"); } + @Test + public void resourceNoLabel() throws Exception { + Mockito.when(this.repository.findOne("foo", "default", null)) + .thenReturn(new Environment("foo", "default", "master")); + Mockito.when(this.resources.findOne("foo", "default", null, "foo.txt")) + .thenReturn(new ByteArrayResource("hello".getBytes())); + this.mvc.perform(MockMvcRequestBuilders.get("/foo/default/foo.txt") + .param("useDefaultLabel", "")) + .andExpect(MockMvcResultMatchers.status().isOk()); + Mockito.verify(this.repository).findOne("foo", "default", null); + Mockito.verify(this.resources).findOne("foo", "default", null, "foo.txt"); + } + @Configuration @EnableWebMvc @Import(PropertyPlaceholderAutoConfiguration.class) @@ -92,7 +107,12 @@ public class ResourceControllerIntegrationTests { } @Bean - public ResourceController controller() { + public EnvironmentController environmentController() { + return new EnvironmentController(environmentRepository()); + } + + @Bean + public ResourceController resourceController() { return new ResourceController(resourceRepository(), environmentRepository()); } From ac76f6e970fc450ead13ae8a2adeabbe2901cf53 Mon Sep 17 00:00:00 2001 From: Mihaly Nyeste Date: Fri, 20 Oct 2017 22:19:18 +0200 Subject: [PATCH 06/11] Fix encryption of string containing curly braces (#774) * Add test to reproduce curly brace problem * Fix stripping prefix if string contains curly brace --- .../server/encryption/EnvironmentPrefixHelper.java | 2 +- .../encryption/EncryptionControllerTests.java | 14 ++++++++++++++ .../encryption/EnvironmentPrefixHelperTests.java | 10 ++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/encryption/EnvironmentPrefixHelper.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/encryption/EnvironmentPrefixHelper.java index 05a621b5..dca6c40c 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/encryption/EnvironmentPrefixHelper.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/encryption/EnvironmentPrefixHelper.java @@ -117,7 +117,7 @@ class EnvironmentPrefixHelper { if (value.contains(ESCAPE)) { return value.substring(value.indexOf(ESCAPE) + ESCAPE.length()); } - return value.substring(value.lastIndexOf("}") + 1); + return value.replaceFirst("^(\\{.*?:.*?\\})+", ""); } private String removeEnvironmentPrefix(String input) { diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/encryption/EncryptionControllerTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/encryption/EncryptionControllerTests.java index 2ff4e23c..84a08821 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/encryption/EncryptionControllerTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/encryption/EncryptionControllerTests.java @@ -135,6 +135,20 @@ public class EncryptionControllerTests { assertThat("Prefix must be stripped prior to encrypt", captor.getValue(), not(containsString("{key:test}"))); } + @Test + public void encryptDecyptTextWithCurlyBrace() { + this.controller = new EncryptionController( + new SingleTextEncryptorLocator(new RsaSecretEncryptor())); + + String plain = "textwith}brace"; + + String cipher = this.controller.encrypt(plain, + MediaType.APPLICATION_FORM_URLENCODED); + String decrypt = this.controller.decrypt(cipher, + MediaType.APPLICATION_FORM_URLENCODED); + assertEquals(plain, decrypt); + } + @Test public void addEnvironment() { TextEncryptorLocator locator = new TextEncryptorLocator() { diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/encryption/EnvironmentPrefixHelperTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/encryption/EnvironmentPrefixHelperTests.java index c9b810aa..b1b997e9 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/encryption/EnvironmentPrefixHelperTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/encryption/EnvironmentPrefixHelperTests.java @@ -81,4 +81,14 @@ public class EnvironmentPrefixHelperTests { assertEquals("mykey", keys.get("key")); } + @Test + public void testTextWithCurlyBracesNoPrefix() { + assertEquals("textwith}brac{es", this.helper.stripPrefix("textwith}brac{es")); + } + + @Test + public void testTextWithCurlyBracesPrefix() { + assertEquals("textwith}brac{es{and}prefix", this.helper + .stripPrefix("{key:foo}{name:bar}textwith}brac{es{and}prefix")); + } } From 4f6dcd0de82b6c616dc1a01cd2a4abe5d8f3c0ff Mon Sep 17 00:00:00 2001 From: Tommy Ludwig Date: Sat, 21 Oct 2017 05:20:15 +0900 Subject: [PATCH 07/11] Include TransportConfiguration for server bootstrap case (#812) Previously, taking SSH configuration from properties (as opposed to the default SSH configuration files) was only possible when not bootstrapping the Config Server itself. This includes the `TransportationConfiguration` for the bootstrap case as well. Related to gh-741 --- .../server/bootstrap/ConfigServerBootstrapConfiguration.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/bootstrap/ConfigServerBootstrapConfiguration.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/bootstrap/ConfigServerBootstrapConfiguration.java index dc8b611a..388144c0 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/bootstrap/ConfigServerBootstrapConfiguration.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/bootstrap/ConfigServerBootstrapConfiguration.java @@ -21,6 +21,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.cloud.config.client.ConfigClientProperties; import org.springframework.cloud.config.server.config.ConfigServerProperties; import org.springframework.cloud.config.server.config.EnvironmentRepositoryConfiguration; +import org.springframework.cloud.config.server.config.TransportConfiguration; import org.springframework.cloud.config.server.environment.EnvironmentRepository; import org.springframework.cloud.config.server.environment.EnvironmentRepositoryPropertySourceLocator; import org.springframework.context.annotation.Bean; @@ -44,7 +45,7 @@ import org.springframework.util.StringUtils; public class ConfigServerBootstrapConfiguration { @EnableConfigurationProperties(ConfigServerProperties.class) - @Import(EnvironmentRepositoryConfiguration.class) + @Import({ EnvironmentRepositoryConfiguration.class, TransportConfiguration.class }) protected static class LocalPropertySourceLocatorConfiguration { @Autowired From b333bd4ff9f98db2a4b92f7776b467ea761f1aa2 Mon Sep 17 00:00:00 2001 From: Sean Dukehart Date: Fri, 20 Oct 2017 16:22:26 -0400 Subject: [PATCH 08/11] Feature/organization project level enablement (#814) * Changes to provide partial functionality for Issue #779 * Corrected formatting * Additional tests to ensure backwards compatibility * Corrected test * Further testing to try to address code coverage concerns * Additional tests to hopefully aid in code coverage diff * Expect exceptions for null name (handle branch coverage) --- .../server/resource/ResourceController.java | 10 ++ .../resource/ResourceControllerTests.java | 93 +++++++++++++++++++ 2 files changed, 103 insertions(+) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/resource/ResourceController.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/resource/ResourceController.java index feea79ae..38065a5b 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/resource/ResourceController.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/resource/ResourceController.java @@ -87,6 +87,11 @@ public class ResourceController { synchronized String retrieve(String name, String profile, String label, String path, boolean resolvePlaceholders) throws IOException { + if (name != null && name.contains("(_)")) { + // "(_)" is uncommon in a git repo name, but "/" cannot be matched + // by Spring MVC + name = name.replace("(_)", "/"); + } if (label != null && label.contains("(_)")) { // "(_)" is uncommon in a git branch name, but "/" cannot be matched // by Spring MVC @@ -116,6 +121,11 @@ public class ResourceController { synchronized byte[] binary(String name, String profile, String label, String path) throws IOException { + if (name != null && name.contains("(_)")) { + // "(_)" is uncommon in a git repo name, but "/" cannot be matched + // by Spring MVC + name = name.replace("(_)", "/"); + } if (label != null && label.contains("(_)")) { // "(_)" is uncommon in a git branch name, but "/" cannot be matched // by Spring MVC diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/resource/ResourceControllerTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/resource/ResourceControllerTests.java index d09fa5d9..9548b014 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/resource/ResourceControllerTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/resource/ResourceControllerTests.java @@ -17,6 +17,7 @@ package org.springframework.cloud.config.server.resource; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.junit.After; @@ -87,6 +88,52 @@ public class ResourceControllerTests { assertEquals("foo: ${foo}", resource); } + @Test + public void applicationAndLabelPlaceholdersWithoutSlash() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test/{application}/{label}"); + String resource = this.controller.retrieve("dev", "bar", "spam", "foo.txt", true); + assertEquals("foo: dev_bar/spam", resource); + } + + @Test + public void applicationPlaceholderWithSlash() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test/{application}"); + String resource = this.controller.retrieve("dev(_)spam", "bar", "", "foo.txt", true); + assertEquals("foo: dev_bar/spam", resource); + } + + @Test + public void applicationPlaceholderWithSlashNullLabel() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test/{application}"); + String resource = this.controller.retrieve("dev(_)spam", "bar", null, "foo.txt", true); + assertEquals("foo: dev_bar/spam", resource); + } + + @Test + public void labelPlaceholderWithSlash() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test/{label}"); + String resource = this.controller.retrieve("dev", "bar", "dev(_)spam", "foo.txt", true); + assertEquals("foo: dev_bar/spam", resource); + } + + @Test + public void profilePlaceholderNullLabel() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test/{profile}"); + String resource = this.controller.retrieve("bar", "dev", null, "spam/foo.txt", true); + assertEquals("foo: dev_bar/spam", resource); + } + + @Test + public void nullNameAndLabel() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test"); + try { + this.controller.retrieve(null, "foo", "bar", "spam/foo.txt", true); + } + catch (Exception e) { + assertNotNull(e); + } + } + @Test public void labelWithSlash() throws Exception { this.environmentRepository.setSearchLocations("classpath:/test"); @@ -143,6 +190,52 @@ public class ResourceControllerTests { assertEquals("foo: dev_bar/spam", resource); } + @Test + public void applicationAndLabelPlaceholdersWithoutSlashForBinary() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test/{application}/{label}"); + byte[] resource = this.controller.binary("dev", "bar", "spam", "foo.txt"); + assertEquals("foo: dev_bar/spam", new String(resource)); + } + + @Test + public void applicationPlaceholderWithSlashForBinary() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test/{application}"); + byte[] resource = this.controller.binary("dev(_)spam", "bar", "", "foo.txt"); + assertEquals("foo: dev_bar/spam", new String(resource)); + } + + @Test + public void applicationPlaceholderWithSlashForBinaryNullLabel() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test/{application}"); + byte[] resource = this.controller.binary("dev(_)spam", "bar", null, "foo.txt"); + assertEquals("foo: dev_bar/spam", new String(resource)); + } + + @Test + public void labelPlaceholderWithSlashForBinary() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test/{label}"); + byte[] resource = this.controller.binary("dev", "bar", "dev(_)spam", "foo.txt"); + assertEquals("foo: dev_bar/spam", new String(resource)); + } + + @Test + public void profilePlaceholderForBinaryNullLabel() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test/{profile}"); + byte[] resource = this.controller.binary("bar", "dev", null, "spam/foo.txt"); + assertEquals("foo: dev_bar/spam", new String(resource)); + } + + @Test + public void forBinaryNullName() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test"); + try { + this.controller.binary(null, "foo", "bar", "spam/foo.txt"); + } + catch (Exception e) { + assertNotNull(e); + } + } + @Test public void labelWithSlashForBinary() throws Exception { this.environmentRepository.setSearchLocations("classpath:/test"); From 614e838ee732800f80c0addb58a8748e7d888203 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Fri, 20 Oct 2017 16:44:45 -0400 Subject: [PATCH 09/11] Document `useDefaultLabel` for serving files without label. --- docs/src/main/asciidoc/spring-cloud-config.adoc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/src/main/asciidoc/spring-cloud-config.adoc b/docs/src/main/asciidoc/spring-cloud-config.adoc index 8ec76eb2..3b3c5412 100644 --- a/docs/src/main/asciidoc/spring-cloud-config.adoc +++ b/docs/src/main/asciidoc/spring-cloud-config.adoc @@ -1164,12 +1164,14 @@ server { } ---- -NOTE: just like the source files for environment configuration, the +NOTE: Just like the source files for environment configuration, the "profile" is used to resolve the file name, so if you want a profile-specific file then `/\*/development/*/logback.xml` will be resolved by a file called `logback-development.xml` (in preference to `logback.xml`). +NOTE: If you do not want to supply the `label` and let the server use the default label, you can supply a `useDefaultLabel` request parameter. So, the above example for the `default` profile could look like `/foo/default/nginx.conf?useDefaultLabel`. + == Embedding the Config Server The Config Server runs best as a standalone application, but if you From a9bb8d4ec518f01a423f8ec63736deb6ddde3166 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Fri, 20 Oct 2017 17:15:30 -0400 Subject: [PATCH 10/11] Update SNAPSHOT to 1.4.0.RC1 --- 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 0838adaa..e244c761 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -6,7 +6,7 @@ org.springframework.cloud spring-cloud-config - 1.4.0.BUILD-SNAPSHOT + 1.4.0.RC1 .. diff --git a/pom.xml b/pom.xml index aca4a35f..9829205d 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.springframework.cloud spring-cloud-config - 1.4.0.BUILD-SNAPSHOT + 1.4.0.RC1 pom Spring Cloud Config Spring Cloud Config @@ -11,7 +11,7 @@ org.springframework.cloud spring-cloud-build - 1.3.5.BUILD-SNAPSHOT + 1.3.5.RELEASE @@ -22,7 +22,7 @@ config - 1.3.0.BUILD-SNAPSHOT + 1.3.0.RC1 spring-cloud-config-dependencies diff --git a/spring-cloud-config-client/pom.xml b/spring-cloud-config-client/pom.xml index bd0a698e..445f8d89 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.4.0.BUILD-SNAPSHOT + 1.4.0.RC1 .. diff --git a/spring-cloud-config-dependencies/pom.xml b/spring-cloud-config-dependencies/pom.xml index 716d27f2..de2f8496 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.5.BUILD-SNAPSHOT + 1.3.5.RELEASE spring-cloud-config-dependencies - 1.4.0.BUILD-SNAPSHOT + 1.4.0.RC1 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 607985d2..9fa8023e 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.4.0.BUILD-SNAPSHOT + 1.4.0.RC1 .. spring-cloud-config-monitor @@ -13,7 +13,7 @@ Spring Cloud Config Monitor ${basedir}/../.. - 1.3.2.BUILD-SNAPSHOT + 1.3.2.RC1 diff --git a/spring-cloud-config-sample/pom.xml b/spring-cloud-config-sample/pom.xml index a97d9f9e..dc068719 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.4.0.BUILD-SNAPSHOT + 1.4.0.RC1 .. diff --git a/spring-cloud-config-server/pom.xml b/spring-cloud-config-server/pom.xml index 922cc4fd..8b0ed7e4 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.4.0.BUILD-SNAPSHOT + 1.4.0.RC1 .. diff --git a/spring-cloud-starter-config/pom.xml b/spring-cloud-starter-config/pom.xml index 37b081f6..04688a37 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.4.0.BUILD-SNAPSHOT + 1.4.0.RC1 spring-cloud-starter-config - 1.4.0.BUILD-SNAPSHOT + 1.4.0.RC1 spring-cloud-starter-config Spring Cloud Starter https://projects.spring.io/spring-cloud From e8db636509bfb481bb0a4c9f0595b1e264ceb41d Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Fri, 20 Oct 2017 17:16:12 -0400 Subject: [PATCH 11/11] 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 e244c761..0838adaa 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -6,7 +6,7 @@ org.springframework.cloud spring-cloud-config - 1.4.0.RC1 + 1.4.0.BUILD-SNAPSHOT .. diff --git a/pom.xml b/pom.xml index 9829205d..aca4a35f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.springframework.cloud spring-cloud-config - 1.4.0.RC1 + 1.4.0.BUILD-SNAPSHOT pom Spring Cloud Config Spring Cloud Config @@ -11,7 +11,7 @@ org.springframework.cloud spring-cloud-build - 1.3.5.RELEASE + 1.3.5.BUILD-SNAPSHOT @@ -22,7 +22,7 @@ config - 1.3.0.RC1 + 1.3.0.BUILD-SNAPSHOT spring-cloud-config-dependencies diff --git a/spring-cloud-config-client/pom.xml b/spring-cloud-config-client/pom.xml index 445f8d89..bd0a698e 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.4.0.RC1 + 1.4.0.BUILD-SNAPSHOT .. diff --git a/spring-cloud-config-dependencies/pom.xml b/spring-cloud-config-dependencies/pom.xml index de2f8496..716d27f2 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.5.RELEASE + 1.3.5.BUILD-SNAPSHOT spring-cloud-config-dependencies - 1.4.0.RC1 + 1.4.0.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 9fa8023e..607985d2 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.4.0.RC1 + 1.4.0.BUILD-SNAPSHOT .. spring-cloud-config-monitor @@ -13,7 +13,7 @@ Spring Cloud Config Monitor ${basedir}/../.. - 1.3.2.RC1 + 1.3.2.BUILD-SNAPSHOT diff --git a/spring-cloud-config-sample/pom.xml b/spring-cloud-config-sample/pom.xml index dc068719..a97d9f9e 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.4.0.RC1 + 1.4.0.BUILD-SNAPSHOT .. diff --git a/spring-cloud-config-server/pom.xml b/spring-cloud-config-server/pom.xml index 8b0ed7e4..922cc4fd 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.4.0.RC1 + 1.4.0.BUILD-SNAPSHOT .. diff --git a/spring-cloud-starter-config/pom.xml b/spring-cloud-starter-config/pom.xml index 04688a37..37b081f6 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.4.0.RC1 + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-config - 1.4.0.RC1 + 1.4.0.BUILD-SNAPSHOT spring-cloud-starter-config Spring Cloud Starter https://projects.spring.io/spring-cloud