From b537b318596cd4a71091dd92acb568149e17a9f8 Mon Sep 17 00:00:00 2001 From: Brett Findlay Date: Sun, 19 Nov 2023 00:57:31 +1100 Subject: [PATCH] Fix PutTemplateRequest deserialization (#723) * fix PutTemplateRequest deserialization Signed-off-by: bfindlay * update changelog Signed-off-by: bfindlay * fix changelog PR number Signed-off-by: bfindlay * update for pr review Signed-off-by: bfindlay * update unit test for pr Signed-off-by: bfindlay * apply spotless check Signed-off-by: bfindlay --------- Signed-off-by: bfindlay --- CHANGELOG.md | 1 + .../indices/PutTemplateRequest.java | 2 ++ .../core/PutTemplateRequestTest.java | 31 +++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 java-client/src/test/java/org/opensearch/client/opensearch/core/PutTemplateRequestTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index f12a76707a..97493f2bd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Removed ### Fixed +- Fix PutTemplateRequest field deserialization ([#723](https://github.com/opensearch-project/opensearch-java/pull/723)) ### Security diff --git a/java-client/src/main/java/org/opensearch/client/opensearch/indices/PutTemplateRequest.java b/java-client/src/main/java/org/opensearch/client/opensearch/indices/PutTemplateRequest.java index 6c7f8991e8..ce0087b4ba 100644 --- a/java-client/src/main/java/org/opensearch/client/opensearch/indices/PutTemplateRequest.java +++ b/java-client/src/main/java/org/opensearch/client/opensearch/indices/PutTemplateRequest.java @@ -586,8 +586,10 @@ public PutTemplateRequest build() { protected static void setupPutTemplateRequestDeserializer(ObjectDeserializer op) { op.add(Builder::aliases, JsonpDeserializer.stringMapDeserializer(Alias._DESERIALIZER), "aliases"); + op.add(Builder::create, JsonpDeserializer.booleanDeserializer(), "create"); op.add(Builder::indexPatterns, JsonpDeserializer.arrayDeserializer(JsonpDeserializer.stringDeserializer()), "index_patterns"); op.add(Builder::mappings, TypeMapping._DESERIALIZER, "mappings"); + op.add(Builder::name, JsonpDeserializer.stringDeserializer(), "name"); op.add(Builder::order, JsonpDeserializer.integerDeserializer(), "order"); op.add(Builder::settings, JsonpDeserializer.stringMapDeserializer(JsonData._DESERIALIZER), "settings"); op.add(Builder::version, JsonpDeserializer.longDeserializer(), "version"); diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/core/PutTemplateRequestTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/core/PutTemplateRequestTest.java new file mode 100644 index 0000000000..449b41e496 --- /dev/null +++ b/java-client/src/test/java/org/opensearch/client/opensearch/core/PutTemplateRequestTest.java @@ -0,0 +1,31 @@ +package org.opensearch.client.opensearch.core; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.StringReader; +import java.util.List; +import java.util.Map; +import org.junit.Assert; +import org.junit.Test; +import org.opensearch.client.json.JsonpMapper; +import org.opensearch.client.json.jsonb.JsonbJsonpMapper; +import org.opensearch.client.opensearch.indices.PutTemplateRequest; + +public class PutTemplateRequestTest extends Assert { + + @Test + public void deserialize_validFieldsIncluded_RequestIsBuilt() throws JsonProcessingException { + final JsonpMapper mapper = new JsonbJsonpMapper(); + final Map indexTemplateMap = Map.of("name", "test", "index_patterns", "*", "create", true, "order", 1); + + final String indexTemplate = new ObjectMapper().writeValueAsString(indexTemplateMap); + final var parser = mapper.jsonProvider().createParser(new StringReader(indexTemplate)); + + final PutTemplateRequest putTemplateRequest = PutTemplateRequest._DESERIALIZER.deserialize(parser, mapper); + + assertEquals(putTemplateRequest.name(), "test"); + assertEquals(putTemplateRequest.indexPatterns(), List.of("*")); + assertEquals((int) putTemplateRequest.order(), 1); + assertEquals(putTemplateRequest.create(), true); + } +}