diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java index 2a803639e..21b8fb028 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -1164,8 +1164,9 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati bufferedReader = new BufferedReader(inputStreamReader); String line; + String lineSeparator = System.getProperty("line.separator"); while ((line = bufferedReader.readLine()) != null) { - stringBuilder.append(line); + stringBuilder.append(line).append(lineSeparator); } } catch (Exception e) { logger.debug(String.format("Failed to load file from url: %s: %s", url, e.getMessage())); diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java index 41928f75f..050cf413f 100755 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java @@ -2006,6 +2006,25 @@ public class ElasticsearchTemplateTests { assertThat(setting.get("index.number_of_replicas"), Matchers.is("1")); } + @Test + public void shouldReadFileFromClasspathRetainingNewlines() { + // given + String settingsFile = "/settings/test-settings.yml"; + + // when + String content = ElasticsearchTemplate.readFileFromClasspath(settingsFile); + + // then + assertThat(content, is("index:\n" + + " number_of_shards: 1\n" + + " number_of_replicas: 0\n" + + " analysis:\n" + + " analyzer:\n" + + " emailAnalyzer:\n" + + " type: custom\n" + + " tokenizer: uax_url_email\n")); + } + private IndexQuery getIndexQuery(SampleEntity sampleEntity) { return new IndexQueryBuilder().withId(sampleEntity.getId()).withObject(sampleEntity).build(); } diff --git a/src/test/resources/settings/test-settings.yml b/src/test/resources/settings/test-settings.yml new file mode 100644 index 000000000..9b2ffa0af --- /dev/null +++ b/src/test/resources/settings/test-settings.yml @@ -0,0 +1,8 @@ +index: + number_of_shards: 1 + number_of_replicas: 0 + analysis: + analyzer: + emailAnalyzer: + type: custom + tokenizer: uax_url_email \ No newline at end of file