From 80bff34cced6b0b51126b9ac0035d522ea01090c Mon Sep 17 00:00:00 2001 From: Stefan Pfeiffer Date: Mon, 12 Dec 2016 17:25:42 +0100 Subject: [PATCH] Clean Windows paths before guessing the service name When encountering windows paths when running in native profile, services names would not be extracted correctly due to different path separators. Now they are normalized before being used for service name guessing. Fixes #531 --- .../cloud/config/monitor/PropertyPathEndpoint.java | 2 +- .../cloud/config/monitor/PropertyPathEndpointTests.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spring-cloud-config-monitor/src/main/java/org/springframework/cloud/config/monitor/PropertyPathEndpoint.java b/spring-cloud-config-monitor/src/main/java/org/springframework/cloud/config/monitor/PropertyPathEndpoint.java index 9f554636..edadbc77 100644 --- a/spring-cloud-config-monitor/src/main/java/org/springframework/cloud/config/monitor/PropertyPathEndpoint.java +++ b/spring-cloud-config-monitor/src/main/java/org/springframework/cloud/config/monitor/PropertyPathEndpoint.java @@ -111,7 +111,7 @@ public class PropertyPathEndpoint Set services = new LinkedHashSet<>(); if (path != null) { String stem = StringUtils - .stripFilenameExtension(StringUtils.getFilename(path)); + .stripFilenameExtension(StringUtils.getFilename(StringUtils.cleanPath(path))); // TODO: correlate with service registry int index = stem.indexOf("-"); while (index >= 0) { diff --git a/spring-cloud-config-monitor/src/test/java/org/springframework/cloud/config/monitor/PropertyPathEndpointTests.java b/spring-cloud-config-monitor/src/test/java/org/springframework/cloud/config/monitor/PropertyPathEndpointTests.java index d3d3ebda..53a967bf 100644 --- a/spring-cloud-config-monitor/src/test/java/org/springframework/cloud/config/monitor/PropertyPathEndpointTests.java +++ b/spring-cloud-config-monitor/src/test/java/org/springframework/cloud/config/monitor/PropertyPathEndpointTests.java @@ -86,6 +86,15 @@ public class PropertyPathEndpointTests { .toString()); } + @Test + public void testNotifyOneWithWindowsPath() throws Exception { + assertEquals("[foo]", + this.endpoint + .notifyByPath(new HttpHeaders(), Collections + . singletonMap("path", "C:\\config\\foo.yml")) + .toString()); + } + @Test public void testNotifyOneWithProfile() throws Exception { assertEquals("[foo:local, foo-local]",