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 f54662a4..5d0298ed 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 @@ -103,13 +103,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/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 ac02219c..67e5656d 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 @@ -270,6 +270,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:/"); 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"); }