From e302c12db73e7e495788668381e9ec692fd43dff Mon Sep 17 00:00:00 2001 From: woshikid Date: Thu, 3 Nov 2022 08:21:15 +0800 Subject: [PATCH] Support application name with dashes (#2177) --- .../config/monitor/PropertyPathEndpoint.java | 23 +++++++++---------- .../monitor/PropertyPathEndpointTests.java | 6 ++--- 2 files changed, 14 insertions(+), 15 deletions(-) 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 b17c71a9..b4f0dfa5 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 @@ -107,18 +107,17 @@ public class PropertyPathEndpoint implements ApplicationEventPublisherAware { if (path != null) { String stem = StringUtils.stripFilenameExtension(StringUtils.getFilename(StringUtils.cleanPath(path))); // TODO: correlate with service registry - int index = stem.indexOf("-"); - String name = stem; - if (index > 0) { - name = stem.substring(0, index); - } - // foo.properties is targeted at the foo application, - // while application.properties is targeted at all applications - if ("application".equals(name)) { - services.add("*"); - } - else { - services.add(name); + String name = stem + "-"; + int index; + // support application name with dashes + while ((index = name.lastIndexOf("-")) >= 0) { + name = name.substring(0, index); + if ("application".equals(name)) { + services.add("*"); + } + else { + services.add(name); + } } } return services; 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 8ac55a7a..d1bccab5 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 @@ -72,7 +72,7 @@ public class PropertyPathEndpointTests { public void testNotifyAllWithProfile() { assertThat(this.endpoint .notifyByPath(new HttpHeaders(), Collections.singletonMap("path", "application-local.yml")).toString()) - .isEqualTo("[*]"); + .isEqualTo("[application-local, *]"); } @Test @@ -92,13 +92,13 @@ public class PropertyPathEndpointTests { @Test public void testNotifyOneWithProfile() { assertThat(this.endpoint.notifyByPath(new HttpHeaders(), Collections.singletonMap("path", "foo-local.yml")) - .toString()).isEqualTo("[foo]"); + .toString()).isEqualTo("[foo-local, foo]"); } @Test public void testNotifyMultiDash() { assertThat(this.endpoint.notifyByPath(new HttpHeaders(), Collections.singletonMap("path", "foo-local-dev.yml")) - .toString()).isEqualTo("[foo]"); + .toString()).isEqualTo("[foo-local-dev, foo-local, foo]"); } }