From 10546f52ab5ae9a4c7017d57dce8a5ec509cfc32 Mon Sep 17 00:00:00 2001 From: woshikid Date: Fri, 23 Sep 2022 21:09:11 +0800 Subject: [PATCH 1/2] Simplify regex in EnvironmentController (#2132) --- .../config/server/environment/EnvironmentController.java | 4 ++-- .../config/server/environment/EnvironmentControllerTests.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/EnvironmentController.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/EnvironmentController.java index 196a116d..a239053d 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/EnvironmentController.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/EnvironmentController.java @@ -104,13 +104,13 @@ public class EnvironmentController { this.acceptEmpty = acceptEmpty; } - @GetMapping(path = "/{name}/{profiles:(?!.*\\b\\.(?:ya?ml|properties|json)\\b).*}", + @GetMapping(path = "/{name}/{profiles:[^\\.]*}", produces = MediaType.APPLICATION_JSON_VALUE) public Environment defaultLabel(@PathVariable String name, @PathVariable String profiles) { return getEnvironment(name, profiles, null, false); } - @GetMapping(path = "/{name}/{profiles:(?!.*\\b\\.(?:ya?ml|properties|json)\\b).*}", + @GetMapping(path = "/{name}/{profiles:[^\\.]*}", produces = EnvironmentMediaType.V2_JSON) public Environment defaultLabelIncludeOrigin(@PathVariable String name, @PathVariable String profiles) { return getEnvironment(name, profiles, null, true); diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/EnvironmentControllerTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/EnvironmentControllerTests.java index ccf15c84..cb2cfff8 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/EnvironmentControllerTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/EnvironmentControllerTests.java @@ -643,11 +643,11 @@ class EnvironmentControllerTests { @Test public void handleEnvironmentException() throws Exception { - when(EnvironmentControllerTests.this.repository.findOne(eq("exception"), eq("bad_syntax.ext"), any(), + when(EnvironmentControllerTests.this.repository.findOne(eq("exception"), eq("bad_syntax"), any(), eq(false))) .thenThrow(new FailedToConstructEnvironmentException("Cannot construct", new RuntimeException("underlier"))); - MvcResult result = this.mvc.perform(MockMvcRequestBuilders.get("/exception/bad_syntax.ext")) + MvcResult result = this.mvc.perform(MockMvcRequestBuilders.get("/exception/bad_syntax")) .andExpect(MockMvcResultMatchers.status().is(500)).andReturn(); assertThat(result.getResponse().getErrorMessage()).isEqualTo("Cannot construct"); } From 2a9730c95b4905f515831fdbaa84808969cec531 Mon Sep 17 00:00:00 2001 From: woshikid Date: Fri, 23 Sep 2022 23:00:25 +0800 Subject: [PATCH 2/2] Fix path problem on Windows - Fixes gh-2155 (#2160) --- .../config/server/environment/NativeEnvironmentRepository.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/NativeEnvironmentRepository.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/NativeEnvironmentRepository.java index a9a309da..a56ce406 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/NativeEnvironmentRepository.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/NativeEnvironmentRepository.java @@ -264,6 +264,8 @@ public class NativeEnvironmentRepository implements EnvironmentRepository, Searc locations = new String[] { matcher.group(2) }; } } + name = name.replace("\\", "/"); // change windows path '\' into '/' + name = name.replaceAll("\\[(?=\\w:)", "[/"); // change [D:/path] into [/D:/path] name = name.replace("applicationConfig: [", ""); name = name.replace("file [", "file:"); name = name.replace("class path resource [", "classpath:/");