diff --git a/CHANGELOG.md b/CHANGELOG.md index 46bed68f00..10502c5f18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,8 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Run model tests against both JSON mappers instead of picking one at random ([#2085](https://github.com/opensearch-project/opensearch-java/pull/2085)) - Fix currentSize calculation in BulkIngester ([#2113](https://github.com/opensearch-project/opensearch-java/pull/2113)) - Use protocol version from response (rather than request) ([#2118](https://github.com/opensearch-project/opensearch-java/pull/2118)) +- Fix `ShardFailure` serializing/deserializing `index`/`node`/`shard` instead of the server's `_index`/`_node`/`_shard` keys, causing `MissingRequiredPropertyException` and silently dropped fields ([#2037](https://github.com/opensearch-project/opensearch-java/pull/2037)) +- Fix `PathHierarchyTokenizer` optional fields incorrectly marked required causing deserialization failure ([#2038](https://github.com/opensearch-project/opensearch-java/pull/2038)) ### Changed - Updated API spec download URL to `https://api-spec.opensearch.org` ([#2116](https://github.com/opensearch-project/opensearch-java/pull/2116)) diff --git a/java-client/src/generated/java/org/opensearch/client/opensearch/_types/DerivedField.java b/java-client/src/generated/java/org/opensearch/client/opensearch/_types/DerivedField.java index eb2e081559..41602d50a2 100644 --- a/java-client/src/generated/java/org/opensearch/client/opensearch/_types/DerivedField.java +++ b/java-client/src/generated/java/org/opensearch/client/opensearch/_types/DerivedField.java @@ -68,9 +68,6 @@ public class DerivedField implements PlainJsonSerializable, ToCopyableBuilder op) { op.add(Builder::format, JsonpDeserializer.stringDeserializer(), "format"); op.add(Builder::ignoreMalformed, JsonpDeserializer.booleanDeserializer(), "ignore_malformed"); - op.add(Builder::name, JsonpDeserializer.stringDeserializer(), "name"); op.add(Builder::prefilterField, JsonpDeserializer.stringDeserializer(), "prefilter_field"); op.add(Builder::properties, JsonpDeserializer.stringMapDeserializer(JsonData._DESERIALIZER), "properties"); op.add(Builder::script, Script._DESERIALIZER, "script"); @@ -385,7 +357,6 @@ public int hashCode() { int result = 17; result = 31 * result + Objects.hashCode(this.format); result = 31 * result + Objects.hashCode(this.ignoreMalformed); - result = 31 * result + this.name.hashCode(); result = 31 * result + Objects.hashCode(this.prefilterField); result = 31 * result + Objects.hashCode(this.properties); result = 31 * result + this.script.hashCode(); @@ -400,7 +371,6 @@ public boolean equals(Object o) { DerivedField other = (DerivedField) o; return Objects.equals(this.format, other.format) && Objects.equals(this.ignoreMalformed, other.ignoreMalformed) - && this.name.equals(other.name) && Objects.equals(this.prefilterField, other.prefilterField) && Objects.equals(this.properties, other.properties) && this.script.equals(other.script) diff --git a/java-client/src/generated/java/org/opensearch/client/opensearch/_types/ShardFailure.java b/java-client/src/generated/java/org/opensearch/client/opensearch/_types/ShardFailure.java index c46b364053..cfd6855b87 100644 --- a/java-client/src/generated/java/org/opensearch/client/opensearch/_types/ShardFailure.java +++ b/java-client/src/generated/java/org/opensearch/client/opensearch/_types/ShardFailure.java @@ -92,7 +92,7 @@ public static ShardFailure of(Function op) { - op.add(Builder::index, JsonpDeserializer.stringDeserializer(), "index"); - op.add(Builder::node, JsonpDeserializer.stringDeserializer(), "node"); + op.add(Builder::index, JsonpDeserializer.stringDeserializer(), "_index"); + op.add(Builder::node, JsonpDeserializer.stringDeserializer(), "_node"); op.add(Builder::primary, JsonpDeserializer.booleanDeserializer(), "primary"); op.add(Builder::reason, ErrorCause._DESERIALIZER, "reason"); - op.add(Builder::shard, JsonpDeserializer.integerDeserializer(), "shard"); + op.add(Builder::shard, JsonpDeserializer.integerDeserializer(), "_shard"); op.add(Builder::status, JsonpDeserializer.stringDeserializer(), "status"); } diff --git a/java-client/src/generated/java/org/opensearch/client/opensearch/_types/analysis/PathHierarchyTokenizer.java b/java-client/src/generated/java/org/opensearch/client/opensearch/_types/analysis/PathHierarchyTokenizer.java index c6f3d02aba..3c1077be9a 100644 --- a/java-client/src/generated/java/org/opensearch/client/opensearch/_types/analysis/PathHierarchyTokenizer.java +++ b/java-client/src/generated/java/org/opensearch/client/opensearch/_types/analysis/PathHierarchyTokenizer.java @@ -47,7 +47,6 @@ import org.opensearch.client.json.JsonpMapper; import org.opensearch.client.json.ObjectBuilderDeserializer; import org.opensearch.client.json.ObjectDeserializer; -import org.opensearch.client.util.ApiTypeHelper; import org.opensearch.client.util.CopyableBuilder; import org.opensearch.client.util.ObjectBuilder; import org.opensearch.client.util.ToCopyableBuilder; @@ -61,27 +60,30 @@ public class PathHierarchyTokenizer extends TokenizerBase TokenizerDefinitionVariant, ToCopyableBuilder { - private final int bufferSize; + @Nullable + private final Integer bufferSize; - @Nonnull + @Nullable private final String delimiter; @Nullable private final String replacement; - private final boolean reverse; + @Nullable + private final Boolean reverse; - private final int skip; + @Nullable + private final Integer skip; // --------------------------------------------------------------------------------------------- private PathHierarchyTokenizer(Builder builder) { super(builder); - this.bufferSize = ApiTypeHelper.requireNonNull(builder.bufferSize, this, "bufferSize"); - this.delimiter = ApiTypeHelper.requireNonNull(builder.delimiter, this, "delimiter"); + this.bufferSize = builder.bufferSize; + this.delimiter = builder.delimiter; this.replacement = builder.replacement; - this.reverse = ApiTypeHelper.requireNonNull(builder.reverse, this, "reverse"); - this.skip = ApiTypeHelper.requireNonNull(builder.skip, this, "skip"); + this.reverse = builder.reverse; + this.skip = builder.skip; } public static PathHierarchyTokenizer of(Function> fn) { @@ -97,16 +99,17 @@ public TokenizerDefinition.Kind _tokenizerDefinitionKind() { } /** - * Required - API name: {@code buffer_size} + * API name: {@code buffer_size} */ - public final int bufferSize() { + @Nullable + public final Integer bufferSize() { return this.bufferSize; } /** - * Required - API name: {@code delimiter} + * API name: {@code delimiter} */ - @Nonnull + @Nullable public final String delimiter() { return this.delimiter; } @@ -120,38 +123,48 @@ public final String replacement() { } /** - * Required - API name: {@code reverse} + * API name: {@code reverse} */ - public final boolean reverse() { + @Nullable + public final Boolean reverse() { return this.reverse; } /** - * Required - API name: {@code skip} + * API name: {@code skip} */ - public final int skip() { + @Nullable + public final Integer skip() { return this.skip; } protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) { generator.write("type", "path_hierarchy"); super.serializeInternal(generator, mapper); - generator.writeKey("buffer_size"); - generator.write(this.bufferSize); + if (this.bufferSize != null) { + generator.writeKey("buffer_size"); + generator.write(this.bufferSize); + } - generator.writeKey("delimiter"); - generator.write(this.delimiter); + if (this.delimiter != null) { + generator.writeKey("delimiter"); + generator.write(this.delimiter); + } if (this.replacement != null) { generator.writeKey("replacement"); generator.write(this.replacement); } - generator.writeKey("reverse"); - generator.write(this.reverse); + if (this.reverse != null) { + generator.writeKey("reverse"); + generator.write(this.reverse); + } - generator.writeKey("skip"); - generator.write(this.skip); + if (this.skip != null) { + generator.writeKey("skip"); + generator.write(this.skip); + } } // --------------------------------------------------------------------------------------------- @@ -171,11 +184,15 @@ public static Builder builder() { * Builder for {@link PathHierarchyTokenizer}. */ public static class Builder extends TokenizerBase.AbstractBuilder implements CopyableBuilder { + @Nullable private Integer bufferSize; + @Nullable private String delimiter; @Nullable private String replacement; + @Nullable private Boolean reverse; + @Nullable private Integer skip; public Builder() {} @@ -211,19 +228,19 @@ protected Builder self() { } /** - * Required - API name: {@code buffer_size} + * API name: {@code buffer_size} */ @Nonnull - public final Builder bufferSize(int value) { + public final Builder bufferSize(@Nullable Integer value) { this.bufferSize = value; return this; } /** - * Required - API name: {@code delimiter} + * API name: {@code delimiter} */ @Nonnull - public final Builder delimiter(String value) { + public final Builder delimiter(@Nullable String value) { this.delimiter = value; return this; } @@ -238,19 +255,19 @@ public final Builder replacement(@Nullable String value) { } /** - * Required - API name: {@code reverse} + * API name: {@code reverse} */ @Nonnull - public final Builder reverse(boolean value) { + public final Builder reverse(@Nullable Boolean value) { this.reverse = value; return this; } /** - * Required - API name: {@code skip} + * API name: {@code skip} */ @Nonnull - public final Builder skip(int value) { + public final Builder skip(@Nullable Integer value) { this.skip = value; return this; } @@ -293,11 +310,11 @@ protected static void setupPathHierarchyTokenizerDeserializer(ObjectDeserializer @Override public int hashCode() { int result = super.hashCode(); - result = 31 * result + Integer.hashCode(this.bufferSize); - result = 31 * result + this.delimiter.hashCode(); + result = 31 * result + Objects.hashCode(this.bufferSize); + result = 31 * result + Objects.hashCode(this.delimiter); result = 31 * result + Objects.hashCode(this.replacement); - result = 31 * result + Boolean.hashCode(this.reverse); - result = 31 * result + Integer.hashCode(this.skip); + result = 31 * result + Objects.hashCode(this.reverse); + result = 31 * result + Objects.hashCode(this.skip); return result; } @@ -309,10 +326,10 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || this.getClass() != o.getClass()) return false; PathHierarchyTokenizer other = (PathHierarchyTokenizer) o; - return this.bufferSize == other.bufferSize - && this.delimiter.equals(other.delimiter) + return Objects.equals(this.bufferSize, other.bufferSize) + && Objects.equals(this.delimiter, other.delimiter) && Objects.equals(this.replacement, other.replacement) - && this.reverse == other.reverse - && this.skip == other.skip; + && Objects.equals(this.reverse, other.reverse) + && Objects.equals(this.skip, other.skip); } } diff --git a/java-codegen/opensearch-openapi.yaml b/java-codegen/opensearch-openapi.yaml index b4829f72a0..56f04a451b 100644 --- a/java-codegen/opensearch-openapi.yaml +++ b/java-codegen/opensearch-openapi.yaml @@ -38878,8 +38878,6 @@ components: _common___DerivedField: type: object properties: - name: - type: string type: type: string script: @@ -38893,7 +38891,6 @@ components: format: type: string required: - - name - script - type _common___DFIIndependenceMeasure: @@ -40834,22 +40831,22 @@ components: _common___ShardFailure: type: object properties: - index: + _index: $ref: '#/components/schemas/_common___IndexName' - node: + _node: type: string reason: $ref: '#/components/schemas/_common___ErrorCause' - shard: + _shard: type: integer status: type: string primary: type: boolean required: + - _shard - primary - reason - - shard _common___ShardInfo: type: object properties: @@ -45956,10 +45953,6 @@ components: skip: $ref: '#/components/schemas/_common___StringifiedInteger' required: - - buffer_size - - delimiter - - reverse - - skip - type _common.analysis___PatternAnalyzer: type: object