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 <[email protected]>

* Add changelog

Signed-off-by: Thomas Farr <[email protected]>

* Fix for java8

Signed-off-by: Thomas Farr <[email protected]>

---------

Signed-off-by: Thomas Farr <[email protected]>
(cherry picked from commit 80dc741)
  • Loading branch information
Xtansia committed Jun 19, 2024
1 parent d2c642a commit eb6620b
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 @@ -14,6 +14,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
### 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 eb6620b

Please sign in to comment.