Skip to content

Commit 3446073

Browse files
authored
Fix ScoreFunction: variants are optional (#257) (#258)
1 parent 0a47bd2 commit 3446073

File tree

8 files changed

+146
-194
lines changed

8 files changed

+146
-194
lines changed

java-client/src/main/java/co/elastic/clients/elasticsearch/_types/query_dsl/DecayFunctionBase.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import co.elastic.clients.json.JsonpDeserializable;
2727
import co.elastic.clients.json.JsonpDeserializer;
2828
import co.elastic.clients.json.JsonpMapper;
29+
import co.elastic.clients.json.JsonpSerializable;
2930
import co.elastic.clients.json.ObjectBuilderDeserializer;
3031
import co.elastic.clients.json.ObjectDeserializer;
3132
import co.elastic.clients.util.ObjectBuilder;
@@ -43,14 +44,13 @@
4344
* specification</a>
4445
*/
4546

46-
public abstract class DecayFunctionBase extends ScoreFunctionBase {
47+
public abstract class DecayFunctionBase implements JsonpSerializable {
4748
@Nullable
4849
private final MultiValueMode multiValueMode;
4950

5051
// ---------------------------------------------------------------------------------------------
5152

5253
protected DecayFunctionBase(AbstractBuilder<?> builder) {
53-
super(builder);
5454

5555
this.multiValueMode = builder.multiValueMode;
5656

@@ -64,9 +64,17 @@ public final MultiValueMode multiValueMode() {
6464
return this.multiValueMode;
6565
}
6666

67+
/**
68+
* Serialize this object to JSON.
69+
*/
70+
public void serialize(JsonGenerator generator, JsonpMapper mapper) {
71+
generator.writeStartObject();
72+
serializeInternal(generator, mapper);
73+
generator.writeEnd();
74+
}
75+
6776
protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
6877

69-
super.serializeInternal(generator, mapper);
7078
if (this.multiValueMode != null) {
7179
generator.writeKey("multi_value_mode");
7280
this.multiValueMode.serialize(generator, mapper);
@@ -76,7 +84,7 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
7684

7785
protected abstract static class AbstractBuilder<BuilderT extends AbstractBuilder<BuilderT>>
7886
extends
79-
ScoreFunctionBase.AbstractBuilder<BuilderT> {
87+
WithJsonObjectBuilderBase<BuilderT> {
8088
@Nullable
8189
private MultiValueMode multiValueMode;
8290

@@ -88,12 +96,14 @@ public final BuilderT multiValueMode(@Nullable MultiValueMode value) {
8896
return self();
8997
}
9098

99+
protected abstract BuilderT self();
100+
91101
}
92102

93103
// ---------------------------------------------------------------------------------------------
94104
protected static <BuilderT extends AbstractBuilder<BuilderT>> void setupDecayFunctionBaseDeserializer(
95105
ObjectDeserializer<BuilderT> op) {
96-
ScoreFunctionBase.setupScoreFunctionBaseDeserializer(op);
106+
97107
op.add(AbstractBuilder::multiValueMode, MultiValueMode._DESERIALIZER, "multi_value_mode");
98108

99109
}

java-client/src/main/java/co/elastic/clients/elasticsearch/_types/query_dsl/FieldValueFactorScoreFunction.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@
2626
import co.elastic.clients.json.JsonpDeserializable;
2727
import co.elastic.clients.json.JsonpDeserializer;
2828
import co.elastic.clients.json.JsonpMapper;
29+
import co.elastic.clients.json.JsonpSerializable;
2930
import co.elastic.clients.json.ObjectBuilderDeserializer;
3031
import co.elastic.clients.json.ObjectDeserializer;
3132
import co.elastic.clients.util.ApiTypeHelper;
3233
import co.elastic.clients.util.ObjectBuilder;
34+
import co.elastic.clients.util.WithJsonObjectBuilderBase;
3335
import jakarta.json.stream.JsonGenerator;
3436
import java.lang.Double;
3537
import java.lang.String;
@@ -46,7 +48,7 @@
4648
* specification</a>
4749
*/
4850
@JsonpDeserializable
49-
public class FieldValueFactorScoreFunction extends ScoreFunctionBase implements FunctionScoreVariant {
51+
public class FieldValueFactorScoreFunction implements FunctionScoreVariant, JsonpSerializable {
5052
private final String field;
5153

5254
@Nullable
@@ -61,7 +63,6 @@ public class FieldValueFactorScoreFunction extends ScoreFunctionBase implements
6163
// ---------------------------------------------------------------------------------------------
6264

6365
private FieldValueFactorScoreFunction(Builder builder) {
64-
super(builder);
6566

6667
this.field = ApiTypeHelper.requireNonNull(builder.field, this, "field");
6768
this.factor = builder.factor;
@@ -113,9 +114,17 @@ public final FieldValueFactorModifier modifier() {
113114
return this.modifier;
114115
}
115116

117+
/**
118+
* Serialize this object to JSON.
119+
*/
120+
public void serialize(JsonGenerator generator, JsonpMapper mapper) {
121+
generator.writeStartObject();
122+
serializeInternal(generator, mapper);
123+
generator.writeEnd();
124+
}
125+
116126
protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
117127

118-
super.serializeInternal(generator, mapper);
119128
generator.writeKey("field");
120129
generator.write(this.field);
121130

@@ -142,7 +151,7 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
142151
* Builder for {@link FieldValueFactorScoreFunction}.
143152
*/
144153

145-
public static class Builder extends ScoreFunctionBase.AbstractBuilder<Builder>
154+
public static class Builder extends WithJsonObjectBuilderBase<Builder>
146155
implements
147156
ObjectBuilder<FieldValueFactorScoreFunction> {
148157
private String field;
@@ -216,7 +225,7 @@ public FieldValueFactorScoreFunction build() {
216225

217226
protected static void setupFieldValueFactorScoreFunctionDeserializer(
218227
ObjectDeserializer<FieldValueFactorScoreFunction.Builder> op) {
219-
ScoreFunctionBase.setupScoreFunctionBaseDeserializer(op);
228+
220229
op.add(Builder::field, JsonpDeserializer.stringDeserializer(), "field");
221230
op.add(Builder::factor, JsonpDeserializer.doubleDeserializer(), "factor");
222231
op.add(Builder::missing, JsonpDeserializer.doubleDeserializer(), "missing");

java-client/src/main/java/co/elastic/clients/elasticsearch/_types/query_dsl/FunctionScore.java

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,19 @@ public String jsonValue() {
9191

9292
}
9393

94+
@Nullable
9495
private final Kind _kind;
96+
@Nullable
9597
private final Object _value;
9698

9799
@Override
100+
@Nullable
98101
public final Kind _kind() {
99102
return _kind;
100103
}
101104

102105
@Override
106+
@Nullable
103107
public final Object _get() {
104108
return _value;
105109
}
@@ -110,10 +114,15 @@ public final Object _get() {
110114
@Nullable
111115
private final Double weight;
112116

113-
public FunctionScore(FunctionScoreVariant value) {
117+
public FunctionScore(@Nullable FunctionScoreVariant value) {
114118

115-
this._kind = ApiTypeHelper.requireNonNull(value._functionScoreKind(), this, "<variant kind>");
116-
this._value = ApiTypeHelper.requireNonNull(value, this, "<variant value>");
119+
if (value != null) {
120+
this._kind = ApiTypeHelper.requireNonNull(value._functionScoreKind(), this, "<variant kind>");
121+
this._value = ApiTypeHelper.requireNonNull(value, this, "<variant value>");
122+
} else {
123+
this._kind = null;
124+
this._value = null;
125+
}
117126

118127
this.filter = null;
119128
this.weight = null;
@@ -122,8 +131,13 @@ public FunctionScore(FunctionScoreVariant value) {
122131

123132
private FunctionScore(Builder builder) {
124133

125-
this._kind = ApiTypeHelper.requireNonNull(builder._kind, builder, "<variant kind>");
126-
this._value = ApiTypeHelper.requireNonNull(builder._value, builder, "<variant value>");
134+
if (builder._value != null) {
135+
this._kind = ApiTypeHelper.requireNonNull(builder._kind, builder, "<variant kind>");
136+
this._value = ApiTypeHelper.requireNonNull(builder._value, builder, "<variant value>");
137+
} else {
138+
this._kind = null;
139+
this._value = null;
140+
}
127141

128142
this.filter = builder.filter;
129143
this.weight = builder.weight;
@@ -270,16 +284,19 @@ public void serialize(JsonGenerator generator, JsonpMapper mapper) {
270284

271285
}
272286

273-
generator.writeKey(_kind.jsonValue());
274-
if (_value instanceof JsonpSerializable) {
275-
((JsonpSerializable) _value).serialize(generator, mapper);
287+
if (this._value != null) {
288+
generator.writeKey(_kind.jsonValue());
289+
if (_value instanceof JsonpSerializable) {
290+
((JsonpSerializable) _value).serialize(generator, mapper);
291+
}
292+
276293
}
277294

278295
generator.writeEnd();
279296

280297
}
281298

282-
public static class Builder extends WithJsonObjectBuilderBase<Builder> {
299+
public static class Builder extends WithJsonObjectBuilderBase<Builder> implements ObjectBuilder<FunctionScore> {
283300
private Kind _kind;
284301
private Object _value;
285302

@@ -379,7 +396,7 @@ public ContainerBuilder scriptScore(
379396
return this.scriptScore(fn.apply(new ScriptScoreFunction.Builder()).build());
380397
}
381398

382-
protected FunctionScore build() {
399+
public FunctionScore build() {
383400
_checkSingleUse();
384401
return new FunctionScore(this);
385402
}

java-client/src/main/java/co/elastic/clients/elasticsearch/_types/query_dsl/RandomScoreFunction.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@
2626
import co.elastic.clients.json.JsonpDeserializable;
2727
import co.elastic.clients.json.JsonpDeserializer;
2828
import co.elastic.clients.json.JsonpMapper;
29+
import co.elastic.clients.json.JsonpSerializable;
2930
import co.elastic.clients.json.ObjectBuilderDeserializer;
3031
import co.elastic.clients.json.ObjectDeserializer;
3132
import co.elastic.clients.util.ObjectBuilder;
33+
import co.elastic.clients.util.WithJsonObjectBuilderBase;
3234
import jakarta.json.stream.JsonGenerator;
3335
import java.lang.String;
3436
import java.util.Objects;
@@ -44,7 +46,7 @@
4446
* specification</a>
4547
*/
4648
@JsonpDeserializable
47-
public class RandomScoreFunction extends ScoreFunctionBase implements FunctionScoreVariant {
49+
public class RandomScoreFunction implements FunctionScoreVariant, JsonpSerializable {
4850
@Nullable
4951
private final String field;
5052

@@ -54,7 +56,6 @@ public class RandomScoreFunction extends ScoreFunctionBase implements FunctionSc
5456
// ---------------------------------------------------------------------------------------------
5557

5658
private RandomScoreFunction(Builder builder) {
57-
super(builder);
5859

5960
this.field = builder.field;
6061
this.seed = builder.seed;
@@ -89,9 +90,17 @@ public final String seed() {
8990
return this.seed;
9091
}
9192

93+
/**
94+
* Serialize this object to JSON.
95+
*/
96+
public void serialize(JsonGenerator generator, JsonpMapper mapper) {
97+
generator.writeStartObject();
98+
serializeInternal(generator, mapper);
99+
generator.writeEnd();
100+
}
101+
92102
protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
93103

94-
super.serializeInternal(generator, mapper);
95104
if (this.field != null) {
96105
generator.writeKey("field");
97106
generator.write(this.field);
@@ -111,7 +120,7 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
111120
* Builder for {@link RandomScoreFunction}.
112121
*/
113122

114-
public static class Builder extends ScoreFunctionBase.AbstractBuilder<Builder>
123+
public static class Builder extends WithJsonObjectBuilderBase<Builder>
115124
implements
116125
ObjectBuilder<RandomScoreFunction> {
117126
@Nullable
@@ -163,7 +172,7 @@ public RandomScoreFunction build() {
163172
.lazy(Builder::new, RandomScoreFunction::setupRandomScoreFunctionDeserializer);
164173

165174
protected static void setupRandomScoreFunctionDeserializer(ObjectDeserializer<RandomScoreFunction.Builder> op) {
166-
ScoreFunctionBase.setupScoreFunctionBaseDeserializer(op);
175+
167176
op.add(Builder::field, JsonpDeserializer.stringDeserializer(), "field");
168177
op.add(Builder::seed, JsonpDeserializer.stringDeserializer(), "seed");
169178

0 commit comments

Comments
 (0)