From 79d75f814cabe87df3d986f4f9da84742ce92025 Mon Sep 17 00:00:00 2001 From: MassimilianoPoggi Date: Mon, 18 Nov 2019 20:31:35 +0100 Subject: [PATCH] DATAES-693 - Support for source fetching in update operations. Original PR: #346 --- .../core/ElasticsearchRestTemplate.java | 4 ++- .../core/ElasticsearchRestTemplateTests.java | 27 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java index 9fdbb7379..e30081661 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java @@ -145,6 +145,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; * @author Peter-Josef Meisch * @author Mathias Teier * @author Gyula Attila Csorogi + * @author Massimiliano Poggi */ public class ElasticsearchRestTemplate extends AbstractElasticsearchTemplate implements EsClient, ApplicationContextAware { @@ -685,7 +686,8 @@ public class ElasticsearchRestTemplate extends AbstractElasticsearchTemplate .setRefreshPolicy(queryUpdateRequest.getRefreshPolicy()) // .waitForActiveShards(queryUpdateRequest.waitForActiveShards()) // .scriptedUpsert(queryUpdateRequest.scriptedUpsert()) // - .docAsUpsert(queryUpdateRequest.docAsUpsert()); + .docAsUpsert(queryUpdateRequest.docAsUpsert()) // + .fetchSource(queryUpdateRequest.fetchSource()); if (query.DoUpsert()) { updateRequest.docAsUpsert(true); diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplateTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplateTests.java index c0837bacf..64d836449 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplateTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplateTests.java @@ -31,6 +31,7 @@ import org.elasticsearch.ElasticsearchStatusException; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.common.xcontent.XContentType; +import org.elasticsearch.search.fetch.subphase.FetchSourceContext; import org.junit.jupiter.api.Test; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; @@ -55,6 +56,7 @@ import org.springframework.test.util.ReflectionTestUtils; * @author Sascha Woo * @author Don Wellington * @author Peter-Josef Meisch + * @author Massimiliano Poggi */ @SpringIntegrationTest @ContextConfiguration(classes = { ElasticsearchRestTemplateConfiguration.class }) @@ -100,6 +102,31 @@ public class ElasticsearchRestTemplateTests extends ElasticsearchTemplateTests { assertThat(request.upsertRequest()).isNotNull(); } + @Test // DATAES-693 + public void shouldReturnSourceWhenRequested() throws IOException { + // given + Map doc = new HashMap<>(); + doc.put("id", "1"); + doc.put("message", "test"); + + UpdateRequest updateRequest = new UpdateRequest() + .doc(doc) + .fetchSource(FetchSourceContext.FETCH_SOURCE); + + UpdateQuery updateQuery = new UpdateQueryBuilder() // + .withClass(SampleEntity.class) // + .withId("1") // + .withUpdateRequest(updateRequest).build(); + + // when + UpdateRequest request = (UpdateRequest) ReflectionTestUtils // + .invokeMethod(elasticsearchTemplate, "prepareUpdate", updateQuery); + + // then + assertThat(request).isNotNull(); + assertThat(request.fetchSource()).isEqualTo(FetchSourceContext.FETCH_SOURCE); + } + @Data @Builder @Document(indexName = "test-index-sample-core-rest-template", type = "test-type", shards = 1, replicas = 0,