Skip to content

Commit

Permalink
Default analyzer deserialization to custom type when unspecified (ope…
Browse files Browse the repository at this point in the history
…nsearch-project#1033)

* Default analyzer deserialization to custom type when unspecified

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Add changelog

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

* Fix for java8

Signed-off-by: Thomas Farr <tsfarr@amazon.com>

---------

Signed-off-by: Thomas Farr <tsfarr@amazon.com>
  • Loading branch information
Xtansia authored Jun 19, 2024
1 parent 767c313 commit 80dc741
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -606,7 +606,7 @@ protected static void setupAnalyzerDeserializer(ObjectDeserializer<Builder> 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());

}

Expand Down
Original file line number Diff line number Diff line change
@@ -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() {
String json = "{\n"
+ " \"filter\": [\"kuromoji_baseform\", \"ja_stop\"],\n"
+ " \"char_filter\": [\"icu_normalizer\"],\n"
+ " \"tokenizer\": \"kuromoji_tokenizer\"\n"
+ "}";

Analyzer 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));
}
}

0 comments on commit 80dc741

Please sign in to comment.