From d13a89ca291e109662ab160cb65de3592d073e26 Mon Sep 17 00:00:00 2001 From: Grouh Date: Thu, 14 Mar 2024 15:04:33 +0100 Subject: [PATCH 1/6] Fix pattern replace by making flag optional as on api Signed-off-by: Grouh --- .../analysis/PatternReplaceCharFilter.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/java-client/src/main/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilter.java b/java-client/src/main/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilter.java index af7112de91..264a29b3ca 100644 --- a/java-client/src/main/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilter.java +++ b/java-client/src/main/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilter.java @@ -34,6 +34,7 @@ import jakarta.json.stream.JsonGenerator; import java.util.function.Function; +import javax.annotation.Nullable; import org.opensearch.client.json.JsonpDeserializable; import org.opensearch.client.json.JsonpDeserializer; import org.opensearch.client.json.JsonpMapper; @@ -46,6 +47,7 @@ @JsonpDeserializable public class PatternReplaceCharFilter extends CharFilterBase implements CharFilterDefinitionVariant { + @Nullable private final String flags; private final String pattern; @@ -57,7 +59,7 @@ public class PatternReplaceCharFilter extends CharFilterBase implements CharFilt private PatternReplaceCharFilter(Builder builder) { super(builder); - this.flags = ApiTypeHelper.requireNonNull(builder.flags, this, "flags"); + this.flags = builder.flags; this.pattern = ApiTypeHelper.requireNonNull(builder.pattern, this, "pattern"); this.replacement = ApiTypeHelper.requireNonNull(builder.replacement, this, "replacement"); @@ -76,8 +78,9 @@ public CharFilterDefinition.Kind _charFilterDefinitionKind() { } /** - * Required - API name: {@code flags} + * API name: {@code flags} */ + @Nullable public final String flags() { return this.flags; } @@ -100,8 +103,11 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) { generator.write("type", "pattern_replace"); super.serializeInternal(generator, mapper); - generator.writeKey("flags"); - generator.write(this.flags); + + if (this.flags != null) { + generator.writeKey("flags"); + generator.write(this.flags); + } generator.writeKey("pattern"); generator.write(this.pattern); @@ -118,6 +124,7 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) { */ public static class Builder extends CharFilterBase.AbstractBuilder implements ObjectBuilder { + @Nullable private String flags; private String pattern; @@ -125,9 +132,9 @@ public static class Builder extends CharFilterBase.AbstractBuilder impl private String replacement; /** - * Required - API name: {@code flags} + * API name: {@code flags} */ - public final Builder flags(String value) { + public final Builder flags(@Nullable String value) { this.flags = value; return this; } From e1d0e9209842c72f24b395fa2aecaed908e7e6bc Mon Sep 17 00:00:00 2001 From: Grouh Date: Thu, 14 Mar 2024 15:32:01 +0100 Subject: [PATCH 2/6] Update changelog Signed-off-by: Grouh --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6eeff0ca3a..5c8cb7596e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,6 +65,7 @@ This section is for maintaining a changelog for all breaking changes for the cli ### Fixed - Fix missing properties on UpdateOperation ([#744](https://github.com/opensearch-project/opensearch-java/pull/744)) +- Fix pattern replace by making flag optional as on api ([#895](https://github.com/opensearch-project/opensearch-java/pull/895)) ### Security From efe0d5146be90f9900c9855271eeb5e0f4f2bdf3 Mon Sep 17 00:00:00 2001 From: Grouh Date: Thu, 14 Mar 2024 16:32:06 +0100 Subject: [PATCH 3/6] Add unit test for pattern replace char filter analyzer Signed-off-by: Grouh --- .../PatternReplaceCharFilterTest.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilterTest.java diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilterTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilterTest.java new file mode 100644 index 0000000000..031b1edf33 --- /dev/null +++ b/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilterTest.java @@ -0,0 +1,53 @@ +/* + * 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 static org.junit.Assert.assertEquals; + +import jakarta.json.stream.JsonParser; +import java.io.StringReader; +import org.junit.Test; +import org.opensearch.client.json.jackson.JacksonJsonpMapper; + +public class PatternReplaceCharFilterTest { + @Test + public void testCreatePatternReplaceCharFilter() { + PatternReplaceCharFilter patternReplaceCharFilter = new PatternReplaceCharFilter.Builder().pattern("pattern") + .replacement("replacement") + .build(); + assertEquals("pattern", patternReplaceCharFilter.pattern()); + assertEquals("replacement", patternReplaceCharFilter.replacement()); + } + + @Test + public void testCreatePatternReplaceCharFilterWithFlags() { + PatternReplaceCharFilter patternReplaceCharFilter = new PatternReplaceCharFilter.Builder().pattern("pattern") + .replacement("replacement") + .flags("flags") + .build(); + assertEquals("pattern", patternReplaceCharFilter.pattern()); + assertEquals("replacement", patternReplaceCharFilter.replacement()); + assertEquals("flags", patternReplaceCharFilter.flags()); + } + + @Test + public void testDeserializePatternReplaceCharFilter() { + String jsonString = + "{\"type\": \"pattern_replace\", \"pattern\": \"pattern\", \"replacement\": \"replacement\", \"flags\": \"flags\"}"; + + StringReader reader = new StringReader(jsonString); + JacksonJsonpMapper mapper = new JacksonJsonpMapper(); + JsonParser parser = mapper.jsonProvider().createParser(reader); + + PatternReplaceCharFilter patternReplaceCharFilter = PatternReplaceCharFilter._DESERIALIZER.deserialize(parser, mapper); + assertEquals("pattern", patternReplaceCharFilter.pattern()); + assertEquals("replacement", patternReplaceCharFilter.replacement()); + assertEquals("flags", patternReplaceCharFilter.flags()); + } +} From 0742ae2203a33148fb305c8bf0ee519577f5a453 Mon Sep 17 00:00:00 2001 From: Grouh Date: Fri, 15 Mar 2024 11:58:16 +0100 Subject: [PATCH 4/6] fix changelog Signed-off-by: Grouh --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c8cb7596e..233e0c85a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,7 @@ This section is for maintaining a changelog for all breaking changes for the cli ### Fixed - Fix integer overflow for variables in indices stats response ([#877](https://github.com/opensearch-project/opensearch-java/pull/877)) - Support weight function in function score query ([#880](https://github.com/opensearch-project/opensearch-java/pull/880)) +- Fix pattern replace by making flag optional as on api ([#895](https://github.com/opensearch-project/opensearch-java/pull/895)) ### Security @@ -65,7 +66,6 @@ This section is for maintaining a changelog for all breaking changes for the cli ### Fixed - Fix missing properties on UpdateOperation ([#744](https://github.com/opensearch-project/opensearch-java/pull/744)) -- Fix pattern replace by making flag optional as on api ([#895](https://github.com/opensearch-project/opensearch-java/pull/895)) ### Security From 5692fede20b1f549e992e5a05285b457473aac41 Mon Sep 17 00:00:00 2001 From: Grouh Date: Fri, 15 Mar 2024 14:43:00 +0100 Subject: [PATCH 5/6] fix char pattern replace by making replcement optional Signed-off-by: Grouh --- CHANGELOG.md | 2 +- .../analysis/PatternReplaceCharFilter.java | 26 ++++++++++--------- .../PatternReplaceCharFilterTest.java | 6 +++++ 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 233e0c85a9..9be7c73287 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,7 +45,7 @@ This section is for maintaining a changelog for all breaking changes for the cli ### Fixed - Fix integer overflow for variables in indices stats response ([#877](https://github.com/opensearch-project/opensearch-java/pull/877)) - Support weight function in function score query ([#880](https://github.com/opensearch-project/opensearch-java/pull/880)) -- Fix pattern replace by making flag optional as on api ([#895](https://github.com/opensearch-project/opensearch-java/pull/895)) +- Fix pattern replace by making flag and replacement optional as on api ([#895](https://github.com/opensearch-project/opensearch-java/pull/895)) ### Security diff --git a/java-client/src/main/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilter.java b/java-client/src/main/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilter.java index 264a29b3ca..287842be57 100644 --- a/java-client/src/main/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilter.java +++ b/java-client/src/main/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilter.java @@ -52,6 +52,7 @@ public class PatternReplaceCharFilter extends CharFilterBase implements CharFilt private final String pattern; + @Nullable private final String replacement; // --------------------------------------------------------------------------------------------- @@ -61,8 +62,7 @@ private PatternReplaceCharFilter(Builder builder) { this.flags = builder.flags; this.pattern = ApiTypeHelper.requireNonNull(builder.pattern, this, "pattern"); - this.replacement = ApiTypeHelper.requireNonNull(builder.replacement, this, "replacement"); - + this.replacement = builder.replacement; } public static PatternReplaceCharFilter of(Function> fn) { @@ -93,7 +93,7 @@ public final String pattern() { } /** - * Required - API name: {@code replacement} + * API name: {@code replacement} */ public final String replacement() { return this.replacement; @@ -104,17 +104,18 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) { generator.write("type", "pattern_replace"); super.serializeInternal(generator, mapper); - if (this.flags != null) { - generator.writeKey("flags"); - generator.write(this.flags); - } - generator.writeKey("pattern"); generator.write(this.pattern); - generator.writeKey("replacement"); - generator.write(this.replacement); + if (this.replacement != null) { + generator.writeKey("replacement"); + generator.write(this.replacement); + } + if (this.flags != null) { + generator.writeKey("flags"); + generator.write(this.flags); + } } // --------------------------------------------------------------------------------------------- @@ -129,6 +130,7 @@ public static class Builder extends CharFilterBase.AbstractBuilder impl private String pattern; + @Nullable private String replacement; /** @@ -148,9 +150,9 @@ public final Builder pattern(String value) { } /** - * Required - API name: {@code replacement} + * API name: {@code replacement} */ - public final Builder replacement(String value) { + public final Builder replacement(@Nullable String value) { this.replacement = value; return this; } diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilterTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilterTest.java index 031b1edf33..46bbdce85b 100644 --- a/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilterTest.java +++ b/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilterTest.java @@ -18,6 +18,12 @@ public class PatternReplaceCharFilterTest { @Test public void testCreatePatternReplaceCharFilter() { + PatternReplaceCharFilter patternReplaceCharFilter = new PatternReplaceCharFilter.Builder().pattern("pattern").build(); + assertEquals("pattern", patternReplaceCharFilter.pattern()); + } + + @Test + public void testCreatePatternReplaceCharFilterWithReplacement() { PatternReplaceCharFilter patternReplaceCharFilter = new PatternReplaceCharFilter.Builder().pattern("pattern") .replacement("replacement") .build(); From feb8b601266cae851f65fc09a4b9eaff562d236c Mon Sep 17 00:00:00 2001 From: Grouh Date: Fri, 15 Mar 2024 14:50:18 +0100 Subject: [PATCH 6/6] Add deserialze test with only pattern set Signed-off-by: Grouh --- .../analysis/PatternReplaceCharFilterTest.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilterTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilterTest.java index 46bbdce85b..7a7d15f93a 100644 --- a/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilterTest.java +++ b/java-client/src/test/java/org/opensearch/client/opensearch/_types/analysis/PatternReplaceCharFilterTest.java @@ -43,7 +43,7 @@ public void testCreatePatternReplaceCharFilterWithFlags() { } @Test - public void testDeserializePatternReplaceCharFilter() { + public void testDeserializePatternReplaceCharFilterWithAllFields() { String jsonString = "{\"type\": \"pattern_replace\", \"pattern\": \"pattern\", \"replacement\": \"replacement\", \"flags\": \"flags\"}"; @@ -56,4 +56,16 @@ public void testDeserializePatternReplaceCharFilter() { assertEquals("replacement", patternReplaceCharFilter.replacement()); assertEquals("flags", patternReplaceCharFilter.flags()); } + + @Test + public void testDeserializePatternReplaceCharFilterWithPatternOnly() { + String jsonString = "{\"type\": \"pattern_replace\", \"pattern\": \"pattern\"}"; + + StringReader reader = new StringReader(jsonString); + JacksonJsonpMapper mapper = new JacksonJsonpMapper(); + JsonParser parser = mapper.jsonProvider().createParser(reader); + + PatternReplaceCharFilter patternReplaceCharFilter = PatternReplaceCharFilter._DESERIALIZER.deserialize(parser, mapper); + assertEquals("pattern", patternReplaceCharFilter.pattern()); + } }