diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/HttpClientConfigurableHttpConnectionFactory.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/HttpClientConfigurableHttpConnectionFactory.java index 31a0ac2c..98743df2 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/HttpClientConfigurableHttpConnectionFactory.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/HttpClientConfigurableHttpConnectionFactory.java @@ -117,7 +117,9 @@ public class HttpClientConfigurableHttpConnectionFactory private String getUrlWithPlaceholders(URL url, String key) { String spec = url.toString(); String[] tokens = key.split(PLACEHOLDER_PATTERN); - if (tokens.length > 1) { + // if token[0] equals url then there was no placeholder in the the url, so + // matching needed + if (tokens.length >= 1 && !tokens[0].equals(url.toString())) { List placeholders = getPlaceholders(key); List values = getValues(spec, tokens); if (placeholders.size() == values.size()) { @@ -141,6 +143,9 @@ public class HttpClientConfigurableHttpConnectionFactory spec = valueTokens[1]; } } + if (tokens.length == 1 && !StringUtils.isEmpty(spec)) { + values.add(spec); + } return values; } diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/HttpClientConfigurableHttpConnectionFactoryTest.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/HttpClientConfigurableHttpConnectionFactoryTest.java index d749fefe..cb5f5cca 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/HttpClientConfigurableHttpConnectionFactoryTest.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/HttpClientConfigurableHttpConnectionFactoryTest.java @@ -104,6 +104,23 @@ public class HttpClientConfigurableHttpConnectionFactoryTest { assertThat(actualHttpClientBuilder).isSameAs(expectedHttpClientBuilder); } + @Test + public void urlWithPlaceholdersAtEnd() throws Exception { + MultipleJGitEnvironmentProperties properties = new MultipleJGitEnvironmentProperties(); + properties.setUri("https://localhost/v1/repos/pvvts_configs-{application}"); + this.connectionFactory.addConfiguration(properties); + + HttpConnection actualConnection = this.connectionFactory.create( + new URL("https://localhost/v1/repos/pvvts_configs-applicationPasswords" + + "/some/path.properties")); + + HttpClientBuilder expectedHttpClientBuilder = this.connectionFactory.httpClientBuildersByUri + .values().stream().findFirst().get(); + HttpClientBuilder actualHttpClientBuilder = getActualHttpClientBuilder( + actualConnection); + assertThat(actualHttpClientBuilder).isSameAs(expectedHttpClientBuilder); + } + @Test public void composite_sameHost() throws Exception { MultipleJGitEnvironmentProperties properties1 = new MultipleJGitEnvironmentProperties();