Clean remote url if necessary

Make sure that the remote URL does not contain a trailing slash.

Closes gh-4297
This commit is contained in:
Stephane Nicoll 2015-10-26 10:28:27 +01:00
parent edd3f1eade
commit 40c2c6db08
2 changed files with 15 additions and 1 deletions

View File

@ -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;

View File

@ -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);