diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/resource/ResourceController.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/resource/ResourceController.java index d228bf44..467f2d26 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/resource/ResourceController.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/resource/ResourceController.java @@ -145,14 +145,16 @@ public class ResourceController { // ensure InputStream will be closed to prevent file locks on Windows try (InputStream is = resource.getInputStream()) { String text = StreamUtils.copyToString(is, Charset.forName("UTF-8")); - String ext = StringUtils.getFilenameExtension(resource.getFilename()) - .toLowerCase(); + String ext = StringUtils.getFilenameExtension(resource.getFilename()); + if (ext != null) { + ext = ext.toLowerCase(); + } Environment environment = this.environmentRepository.findOne(name, profile, label, false); if (resolvePlaceholders) { text = resolvePlaceholders(prepareEnvironment(environment), text); } - if (encryptEnabled && plainTextEncryptEnabled) { + if (ext != null && encryptEnabled && plainTextEncryptEnabled) { ResourceEncryptor re = this.resourceEncryptorMap.get(ext); if (re == null) { logger.warn("Cannot decrypt for extension " + ext); diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/resource/ResourceControllerTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/resource/ResourceControllerTests.java index acd08695..00565416 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/resource/ResourceControllerTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/resource/ResourceControllerTests.java @@ -175,6 +175,13 @@ public class ResourceControllerTests { assertThat(resource).isEqualToIgnoringNewLines("foo: dev_bar/spam"); } + @Test + public void resourceWithoutFileExtension() throws Exception { + this.environmentRepository.setSearchLocations("classpath:/test"); + String resource = this.controller.retrieve("foo", "bar", "dev", "foo", true); + assertThat(resource).isEqualToIgnoringNewLines("foo: dev_bar"); + } + @Test public void resourceWithSlash() throws Exception { this.environmentRepository.setSearchLocations("classpath:/test"); diff --git a/spring-cloud-config-server/src/test/resources/test/dev/foo b/spring-cloud-config-server/src/test/resources/test/dev/foo new file mode 100644 index 00000000..be18679f --- /dev/null +++ b/spring-cloud-config-server/src/test/resources/test/dev/foo @@ -0,0 +1 @@ +foo: dev_bar