From 40c2c6db08b892303d8306878b3166ccde7fcd53 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Mon, 26 Oct 2015 10:28:27 +0100 Subject: [PATCH] Clean remote url if necessary Make sure that the remote URL does not contain a trailing slash. Closes gh-4297 --- .../boot/devtools/RemoteUrlPropertyExtractor.java | 9 ++++++++- .../boot/devtools/RemoteUrlPropertyExtractorTests.java | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/RemoteUrlPropertyExtractor.java b/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/RemoteUrlPropertyExtractor.java index 46ebf6dc822..0a1f22ec7da 100644 --- a/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/RemoteUrlPropertyExtractor.java +++ b/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/RemoteUrlPropertyExtractor.java @@ -46,7 +46,7 @@ class RemoteUrlPropertyExtractor @Override public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) { ConfigurableEnvironment environment = event.getEnvironment(); - String url = environment.getProperty(NON_OPTION_ARGS); + String url = cleanRemoteUrl(environment.getProperty(NON_OPTION_ARGS)); Assert.state(StringUtils.hasLength(url), "No remote URL specified"); Assert.state(url.indexOf(",") == -1, "Multiple URLs specified"); try { @@ -60,6 +60,13 @@ class RemoteUrlPropertyExtractor environment.getPropertySources().addLast(propertySource); } + private String cleanRemoteUrl(String url) { + if (StringUtils.hasText(url) && url.endsWith("/")) { + return url.substring(0, url.length() - 1); + } + return url; + } + @Override public int getOrder() { return Ordered.HIGHEST_PRECEDENCE; diff --git a/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/RemoteUrlPropertyExtractorTests.java b/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/RemoteUrlPropertyExtractorTests.java index 2775ed889b3..c1781a29cab 100644 --- a/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/RemoteUrlPropertyExtractorTests.java +++ b/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/RemoteUrlPropertyExtractorTests.java @@ -79,6 +79,13 @@ public class RemoteUrlPropertyExtractorTests { is(nullValue())); } + @Test + public void cleanValidUrl() throws Exception { + ApplicationContext context = doTest("http://localhost:8080/"); + assertThat(context.getEnvironment().getProperty("remoteUrl"), + equalTo("http://localhost:8080")); + } + private ApplicationContext doTest(String... args) { SpringApplication application = new SpringApplication(Config.class); application.setWebEnvironment(false);