Skip to content

Commit

Permalink
TermvectorsResponse fix for optionals. (#642) (#658)
Browse files Browse the repository at this point in the history
* TermvectorsResponse fix for optionals.



* Add Changelog.



* Tabs vs. spaces fix.



* Version is not optional.



* Changelog fix.



* Period removed.



---------

Signed-off-by: pieper <mike.pieper@ser.de>
Signed-off-by: Vacha Shah <vachshah@amazon.com>
Co-authored-by: MikePieperSer <41434171+MikePieperSer@users.noreply.github.com>
  • Loading branch information
VachaShah and MikePieperSer authored Oct 9, 2023
1 parent 3d2f20b commit 53489bc
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 12 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- Don't over-allocate in HeapBufferedAsyncEntityConsumer in order to consume the response ([#620](https://github.com/opensearch-project/opensearch-java/pull/620))
- Fixed CVE-2976 + added CVE checker ([#624](https://github.com/opensearch-project/opensearch-java/pull/624))
- Fix parsing of GetFieldMappingResponse ([#641](https://github.com/opensearch-project/opensearch-java/pull/641))
- Fix TermvectorsResponse for optional fields ([#642](https://github.com/opensearch-project/opensearch-java/pull/642))

### Security

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@

package org.opensearch.client.opensearch.core.termvectors;

import jakarta.json.stream.JsonGenerator;
import java.util.List;
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;
Expand All @@ -41,10 +45,6 @@
import org.opensearch.client.util.ApiTypeHelper;
import org.opensearch.client.util.ObjectBuilder;
import org.opensearch.client.util.ObjectBuilderBase;
import jakarta.json.stream.JsonGenerator;
import java.util.List;
import java.util.function.Function;
import javax.annotation.Nullable;

// typedef: _global.termvectors.Term

Expand All @@ -57,7 +57,7 @@ public class Term implements JsonpSerializable {
@Nullable
private final Double score;

private final int termFreq;
private final Integer termFreq;

private final List<Token> tokens;

Expand All @@ -70,8 +70,8 @@ private Term(Builder builder) {

this.docFreq = builder.docFreq;
this.score = builder.score;
this.termFreq = ApiTypeHelper.requireNonNull(builder.termFreq, this, "termFreq");
this.tokens = ApiTypeHelper.unmodifiableRequired(builder.tokens, this, "tokens");
this.termFreq = builder.termFreq;
this.tokens = ApiTypeHelper.unmodifiable(builder.tokens);
this.ttf = builder.ttf;

}
Expand Down Expand Up @@ -139,8 +139,10 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
generator.write(this.score);

}
generator.writeKey("term_freq");
generator.write(this.termFreq);
if (null != this.termFreq) {
generator.writeKey("term_freq");
generator.write(this.termFreq);
}

if (ApiTypeHelper.isDefined(this.tokens)) {
generator.writeKey("tokens");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public class TermVector implements JsonpSerializable {

private TermVector(Builder builder) {

this.fieldStatistics = ApiTypeHelper.requireNonNull(builder.fieldStatistics, this, "fieldStatistics");
this.fieldStatistics = builder.fieldStatistics;
this.terms = ApiTypeHelper.unmodifiableRequired(builder.terms, this, "terms");

}
Expand Down Expand Up @@ -92,8 +92,10 @@ public void serialize(JsonGenerator generator, JsonpMapper mapper) {

protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {

generator.writeKey("field_statistics");
this.fieldStatistics.serialize(generator, mapper);
if (null != this.fieldStatistics) {
generator.writeKey("field_statistics");
this.fieldStatistics.serialize(generator, mapper);
}

if (ApiTypeHelper.isDefined(this.terms)) {
generator.writeKey("terms");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.opensearch.client.opensearch._types.analysis.TokenFilterDefinition;
import org.opensearch.client.opensearch._types.analysis.TokenizerBuilders;
import org.opensearch.client.opensearch._types.analysis.TokenizerDefinition;
import org.opensearch.client.opensearch.core.TermvectorsResponse;
import org.opensearch.client.opensearch._types.mapping.FieldMapping;
import org.opensearch.client.opensearch._types.mapping.Property;
import org.opensearch.client.opensearch._types.mapping.TermVectorOption;
Expand Down Expand Up @@ -248,5 +249,29 @@ public void testFieldMappingResponse() {

assertNotNull(mappings.get(field3Name));
}

@Test
public void testTermvectorsResponseOptionals() {
// Build a response without any optionals
final TermvectorsResponse response = TermvectorsResponse.of(b -> b
.index("index")
.id("id")
.version(1)
.found(true)
.took(0)
.termVectors("key1", tvb -> tvb
.terms("term1", tb -> tb
.score(0.3)
)
)
);

String str = toJson(response);
assertEquals("{\"found\":true,\"_id\":\"id\",\"_index\":\"index\","
+"\"term_vectors\":{\"key1\":{\"terms\":{\"term1\":{\"score\":0.3}}}},\"took\":0,\"_version\":1}", str);

final TermvectorsResponse response2 = fromJson(str, TermvectorsResponse._DESERIALIZER);
assertEquals(response.index(), response2.index());
}

}

0 comments on commit 53489bc

Please sign in to comment.