From 8d1d43d2ffeff3edf0fb764cfded34d12ccd62ab Mon Sep 17 00:00:00 2001 From: Thomas Farr Date: Wed, 19 Jun 2024 17:55:56 +1200 Subject: [PATCH 1/3] Default analyzer deserialization to custom type when unspecified Signed-off-by: Thomas Farr --- .../opensearch/_types/analysis/Analyzer.java | 2 +- .../analysis/AnalyzerDeserializerTest.java | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/AnalyzerDeserializerTest.java diff --git a/java-client/src/main/java/org/opensearch/client/opensearch/_types/analysis/Analyzer.java b/java-client/src/main/java/org/opensearch/client/opensearch/_types/analysis/Analyzer.java index 3a60a8daf7..0a0ffd6f4e 100644 --- a/java-client/src/main/java/org/opensearch/client/opensearch/_types/analysis/Analyzer.java +++ b/java-client/src/main/java/org/opensearch/client/opensearch/_types/analysis/Analyzer.java @@ -606,7 +606,7 @@ protected static void setupAnalyzerDeserializer(ObjectDeserializer op) op.add(Builder::smartcn, SmartcnAnalyzer._DESERIALIZER, Kind.Smartcn.jsonValue()); op.add(Builder::cjk, CjkAnalyzer._DESERIALIZER, Kind.Cjk.jsonValue()); - op.setTypeProperty("type", null); + op.setTypeProperty("type", Kind.Custom.jsonValue()); } diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/AnalyzerDeserializerTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/AnalyzerDeserializerTest.java new file mode 100644 index 0000000000..6f044a3aad --- /dev/null +++ b/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/AnalyzerDeserializerTest.java @@ -0,0 +1,30 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.client.opensearch._types.analysis; + +import org.junit.Test; +import org.opensearch.client.opensearch.model.ModelTestCase; + +public class AnalyzerDeserializerTest extends ModelTestCase { + @Test + public void deserializesTypelessCustomAnalyzer() { + var json = "{\n" + + " \"filter\": [\"kuromoji_baseform\", \"ja_stop\"],\n" + + " \"char_filter\": [\"icu_normalizer\"],\n" + + " \"tokenizer\": \"kuromoji_tokenizer\"\n" + + "}"; + + var analyzer = fromJson(json, Analyzer._DESERIALIZER); + assertTrue(analyzer.isCustom()); + assertEquals("kuromoji_tokenizer", analyzer.custom().tokenizer()); + assertEquals("icu_normalizer", analyzer.custom().charFilter().get(0)); + assertEquals("kuromoji_baseform", analyzer.custom().filter().get(0)); + assertEquals("ja_stop", analyzer.custom().filter().get(1)); + } +} From 46609554f3dafb18bc5243bd004451868b6dd9ed Mon Sep 17 00:00:00 2001 From: Thomas Farr Date: Wed, 19 Jun 2024 18:02:28 +1200 Subject: [PATCH 2/3] Add changelog Signed-off-by: Thomas Farr --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f58a3f30ea..4367749cd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,7 @@ This section is for maintaining a changelog for all breaking changes for the cli ### Removed ### Fixed +- Fixed error when deserializing an analyzer without `type` specified ([#1033](https://github.com/opensearch-project/opensearch-java/pull/1033)) ### Security From 6be3255ad67ee5de72b732e24de93cc90b2fc980 Mon Sep 17 00:00:00 2001 From: Thomas Farr Date: Wed, 19 Jun 2024 18:08:19 +1200 Subject: [PATCH 3/3] Fix for java8 Signed-off-by: Thomas Farr --- .../opensearch/_types/analysis/AnalyzerDeserializerTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/AnalyzerDeserializerTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/AnalyzerDeserializerTest.java index 6f044a3aad..e4a8c21a36 100644 --- a/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/AnalyzerDeserializerTest.java +++ b/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/AnalyzerDeserializerTest.java @@ -14,13 +14,13 @@ public class AnalyzerDeserializerTest extends ModelTestCase { @Test public void deserializesTypelessCustomAnalyzer() { - var json = "{\n" + String json = "{\n" + " \"filter\": [\"kuromoji_baseform\", \"ja_stop\"],\n" + " \"char_filter\": [\"icu_normalizer\"],\n" + " \"tokenizer\": \"kuromoji_tokenizer\"\n" + "}"; - var analyzer = fromJson(json, Analyzer._DESERIALIZER); + Analyzer analyzer = fromJson(json, Analyzer._DESERIALIZER); assertTrue(analyzer.isCustom()); assertEquals("kuromoji_tokenizer", analyzer.custom().tokenizer()); assertEquals("icu_normalizer", analyzer.custom().charFilter().get(0));