Skip to content

Commit ab09759

Browse files
Turn SortFieldAndFormat into a record (#113398)
It's in the title, prerequisite for #113164
1 parent 19b3d5f commit ab09759

File tree

8 files changed

+61
-64
lines changed

8 files changed

+61
-64
lines changed

server/src/main/java/org/elasticsearch/search/sort/SortBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ public static Optional<SortAndFormats> buildSort(List<SortBuilder<?>> sortBuilde
159159
List<DocValueFormat> sortFormats = new ArrayList<>(sortBuilders.size());
160160
for (SortBuilder<?> builder : sortBuilders) {
161161
SortFieldAndFormat sf = builder.build(context);
162-
sortFields.add(sf.field);
163-
sortFormats.add(sf.format);
162+
sortFields.add(sf.field());
163+
sortFormats.add(sf.format());
164164
}
165165
if (sortFields.isEmpty() == false) {
166166
// optimize if we just sort on score non reversed, we don't really

server/src/main/java/org/elasticsearch/search/sort/SortFieldAndFormat.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@
1313

1414
import java.util.Objects;
1515

16-
public final class SortFieldAndFormat {
17-
18-
public final SortField field;
19-
public final DocValueFormat format;
16+
public record SortFieldAndFormat(SortField field, DocValueFormat format) {
2017

2118
public SortFieldAndFormat(SortField field, DocValueFormat format) {
2219
this.field = Objects.requireNonNull(field);

server/src/test/java/org/elasticsearch/index/search/nested/NestedSortingTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,7 @@ private static TopFieldDocs search(
820820
Query query = new BooleanQuery.Builder().add(queryBuilder.toQuery(searchExecutionContext), Occur.MUST)
821821
.add(Queries.newNonNestedFilter(searchExecutionContext.indexVersionCreated()), Occur.FILTER)
822822
.build();
823-
Sort sort = new Sort(sortBuilder.build(searchExecutionContext).field);
823+
Sort sort = new Sort(sortBuilder.build(searchExecutionContext).field());
824824
return searcher.search(query, 10, sort);
825825
}
826826

server/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public void testBuildSortField() throws IOException {
152152
for (int runs = 0; runs < NUMBER_OF_TESTBUILDERS; runs++) {
153153
T sortBuilder = createTestItem();
154154
SortFieldAndFormat sortField = Rewriteable.rewrite(sortBuilder, mockShardContext).build(mockShardContext);
155-
sortFieldAssertions(sortBuilder, sortField.field, sortField.format);
155+
sortFieldAssertions(sortBuilder, sortField.field(), sortField.format());
156156
}
157157
}
158158

server/src/test/java/org/elasticsearch/search/sort/FieldSortBuilderTests.java

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -150,26 +150,26 @@ protected void sortFieldAssertions(FieldSortBuilder builder, SortField sortField
150150
public void testBuildSortFieldMissingValue() throws IOException {
151151
SearchExecutionContext searchExecutionContext = createMockSearchExecutionContext();
152152
FieldSortBuilder fieldSortBuilder = new FieldSortBuilder("value").missing("_first");
153-
SortField sortField = fieldSortBuilder.build(searchExecutionContext).field;
153+
SortField sortField = fieldSortBuilder.build(searchExecutionContext).field();
154154
SortedNumericSortField expectedSortField = new SortedNumericSortField("value", SortField.Type.DOUBLE);
155155
expectedSortField.setMissingValue(Double.NEGATIVE_INFINITY);
156156
assertEquals(expectedSortField, sortField);
157157

158158
fieldSortBuilder = new FieldSortBuilder("value").missing("_last");
159-
sortField = fieldSortBuilder.build(searchExecutionContext).field;
159+
sortField = fieldSortBuilder.build(searchExecutionContext).field();
160160
expectedSortField = new SortedNumericSortField("value", SortField.Type.DOUBLE);
161161
expectedSortField.setMissingValue(Double.POSITIVE_INFINITY);
162162
assertEquals(expectedSortField, sortField);
163163

164164
Double randomDouble = randomDouble();
165165
fieldSortBuilder = new FieldSortBuilder("value").missing(randomDouble);
166-
sortField = fieldSortBuilder.build(searchExecutionContext).field;
166+
sortField = fieldSortBuilder.build(searchExecutionContext).field();
167167
expectedSortField = new SortedNumericSortField("value", SortField.Type.DOUBLE);
168168
expectedSortField.setMissingValue(randomDouble);
169169
assertEquals(expectedSortField, sortField);
170170

171171
fieldSortBuilder = new FieldSortBuilder("value").missing(randomDouble.toString());
172-
sortField = fieldSortBuilder.build(searchExecutionContext).field;
172+
sortField = fieldSortBuilder.build(searchExecutionContext).field();
173173
expectedSortField = new SortedNumericSortField("value", SortField.Type.DOUBLE);
174174
expectedSortField.setMissingValue(randomDouble);
175175
assertEquals(expectedSortField, sortField);
@@ -181,19 +181,19 @@ public void testBuildSortFieldMissingValue() throws IOException {
181181
public void testBuildSortFieldOrder() throws IOException {
182182
SearchExecutionContext searchExecutionContext = createMockSearchExecutionContext();
183183
FieldSortBuilder fieldSortBuilder = new FieldSortBuilder("value");
184-
SortField sortField = fieldSortBuilder.build(searchExecutionContext).field;
184+
SortField sortField = fieldSortBuilder.build(searchExecutionContext).field();
185185
SortedNumericSortField expectedSortField = new SortedNumericSortField("value", SortField.Type.DOUBLE, false);
186186
expectedSortField.setMissingValue(Double.POSITIVE_INFINITY);
187187
assertEquals(expectedSortField, sortField);
188188

189189
fieldSortBuilder = new FieldSortBuilder("value").order(SortOrder.ASC);
190-
sortField = fieldSortBuilder.build(searchExecutionContext).field;
190+
sortField = fieldSortBuilder.build(searchExecutionContext).field();
191191
expectedSortField = new SortedNumericSortField("value", SortField.Type.DOUBLE, false);
192192
expectedSortField.setMissingValue(Double.POSITIVE_INFINITY);
193193
assertEquals(expectedSortField, sortField);
194194

195195
fieldSortBuilder = new FieldSortBuilder("value").order(SortOrder.DESC);
196-
sortField = fieldSortBuilder.build(searchExecutionContext).field;
196+
sortField = fieldSortBuilder.build(searchExecutionContext).field();
197197
expectedSortField = new SortedNumericSortField("value", SortField.Type.DOUBLE, true, SortedNumericSelector.Type.MAX);
198198
expectedSortField.setMissingValue(Double.NEGATIVE_INFINITY);
199199
assertEquals(expectedSortField, sortField);
@@ -206,44 +206,44 @@ public void testMultiValueMode() throws IOException {
206206
SearchExecutionContext searchExecutionContext = createMockSearchExecutionContext();
207207

208208
FieldSortBuilder sortBuilder = new FieldSortBuilder("value").sortMode(SortMode.MIN);
209-
SortField sortField = sortBuilder.build(searchExecutionContext).field;
209+
SortField sortField = sortBuilder.build(searchExecutionContext).field();
210210
assertThat(sortField, instanceOf(SortedNumericSortField.class));
211211
SortedNumericSortField numericSortField = (SortedNumericSortField) sortField;
212212
assertEquals(SortedNumericSelector.Type.MIN, numericSortField.getSelector());
213213

214214
sortBuilder = new FieldSortBuilder("value").sortMode(SortMode.MAX);
215-
sortField = sortBuilder.build(searchExecutionContext).field;
215+
sortField = sortBuilder.build(searchExecutionContext).field();
216216
assertThat(sortField, instanceOf(SortedNumericSortField.class));
217217
numericSortField = (SortedNumericSortField) sortField;
218218
assertEquals(SortedNumericSelector.Type.MAX, numericSortField.getSelector());
219219

220220
sortBuilder = new FieldSortBuilder("value").sortMode(SortMode.SUM);
221-
sortField = sortBuilder.build(searchExecutionContext).field;
221+
sortField = sortBuilder.build(searchExecutionContext).field();
222222
assertThat(sortField.getComparatorSource(), instanceOf(XFieldComparatorSource.class));
223223
XFieldComparatorSource comparatorSource = (XFieldComparatorSource) sortField.getComparatorSource();
224224
assertEquals(MultiValueMode.SUM, comparatorSource.sortMode());
225225

226226
sortBuilder = new FieldSortBuilder("value").sortMode(SortMode.AVG);
227-
sortField = sortBuilder.build(searchExecutionContext).field;
227+
sortField = sortBuilder.build(searchExecutionContext).field();
228228
assertThat(sortField.getComparatorSource(), instanceOf(XFieldComparatorSource.class));
229229
comparatorSource = (XFieldComparatorSource) sortField.getComparatorSource();
230230
assertEquals(MultiValueMode.AVG, comparatorSource.sortMode());
231231

232232
sortBuilder = new FieldSortBuilder("value").sortMode(SortMode.MEDIAN);
233-
sortField = sortBuilder.build(searchExecutionContext).field;
233+
sortField = sortBuilder.build(searchExecutionContext).field();
234234
assertThat(sortField.getComparatorSource(), instanceOf(XFieldComparatorSource.class));
235235
comparatorSource = (XFieldComparatorSource) sortField.getComparatorSource();
236236
assertEquals(MultiValueMode.MEDIAN, comparatorSource.sortMode());
237237

238238
// sort mode should also be set by build() implicitly to MIN or MAX if not set explicitly on builder
239239
sortBuilder = new FieldSortBuilder("value");
240-
sortField = sortBuilder.build(searchExecutionContext).field;
240+
sortField = sortBuilder.build(searchExecutionContext).field();
241241
assertThat(sortField, instanceOf(SortedNumericSortField.class));
242242
numericSortField = (SortedNumericSortField) sortField;
243243
assertEquals(SortedNumericSelector.Type.MIN, numericSortField.getSelector());
244244

245245
sortBuilder = new FieldSortBuilder("value").order(SortOrder.DESC);
246-
sortField = sortBuilder.build(searchExecutionContext).field;
246+
sortField = sortBuilder.build(searchExecutionContext).field();
247247
assertThat(sortField, instanceOf(SortedNumericSortField.class));
248248
numericSortField = (SortedNumericSortField) sortField;
249249
assertEquals(SortedNumericSelector.Type.MAX, numericSortField.getSelector());
@@ -258,7 +258,7 @@ public void testBuildNested() throws IOException {
258258
FieldSortBuilder sortBuilder = new FieldSortBuilder("fieldName").setNestedSort(
259259
new NestedSortBuilder("path").setFilter(QueryBuilders.termQuery(MAPPED_STRING_FIELDNAME, "value"))
260260
);
261-
SortField sortField = sortBuilder.build(searchExecutionContext).field;
261+
SortField sortField = sortBuilder.build(searchExecutionContext).field();
262262
assertThat(sortField.getComparatorSource(), instanceOf(XFieldComparatorSource.class));
263263
XFieldComparatorSource comparatorSource = (XFieldComparatorSource) sortField.getComparatorSource();
264264
Nested nested = comparatorSource.nested();
@@ -267,7 +267,7 @@ public void testBuildNested() throws IOException {
267267

268268
NestedSortBuilder nestedSort = new NestedSortBuilder("path");
269269
sortBuilder = new FieldSortBuilder("fieldName").setNestedSort(nestedSort);
270-
sortField = sortBuilder.build(searchExecutionContext).field;
270+
sortField = sortBuilder.build(searchExecutionContext).field();
271271
assertThat(sortField.getComparatorSource(), instanceOf(XFieldComparatorSource.class));
272272
comparatorSource = (XFieldComparatorSource) sortField.getComparatorSource();
273273
nested = comparatorSource.nested();
@@ -276,7 +276,7 @@ public void testBuildNested() throws IOException {
276276

277277
nestedSort.setFilter(QueryBuilders.termQuery(MAPPED_STRING_FIELDNAME, "value"));
278278
sortBuilder = new FieldSortBuilder("fieldName").setNestedSort(nestedSort);
279-
sortField = sortBuilder.build(searchExecutionContext).field;
279+
sortField = sortBuilder.build(searchExecutionContext).field();
280280
assertThat(sortField.getComparatorSource(), instanceOf(XFieldComparatorSource.class));
281281
comparatorSource = (XFieldComparatorSource) sortField.getComparatorSource();
282282
nested = comparatorSource.nested();
@@ -308,27 +308,27 @@ public void testShardDocSort() throws IOException {
308308
reverse ? SortOrder.DESC : SortOrder.ASC
309309
);
310310
SortFieldAndFormat sortAndFormat = sortBuilder.build(searchExecutionContext);
311-
assertThat(sortAndFormat.field.getClass(), equalTo(ShardDocSortField.class));
312-
ShardDocSortField sortField = (ShardDocSortField) sortAndFormat.field;
311+
assertThat(sortAndFormat.field().getClass(), equalTo(ShardDocSortField.class));
312+
ShardDocSortField sortField = (ShardDocSortField) sortAndFormat.field();
313313
assertThat(sortField.getShardRequestIndex(), equalTo(searchExecutionContext.getShardRequestIndex()));
314314
assertThat(sortField.getReverse(), equalTo(reverse));
315-
assertThat(sortAndFormat.format, equalTo(DocValueFormat.RAW));
315+
assertThat(sortAndFormat.format(), equalTo(DocValueFormat.RAW));
316316
}
317317

318318
public void testFormatDateTime() throws Exception {
319319
SearchExecutionContext searchExecutionContext = createMockSearchExecutionContext();
320320

321321
SortFieldAndFormat sortAndFormat = SortBuilders.fieldSort("custom-date").build(searchExecutionContext);
322-
assertThat(sortAndFormat.format.formatSortValue(1615580798601L), equalTo(1615580798601L));
322+
assertThat(sortAndFormat.format().formatSortValue(1615580798601L), equalTo(1615580798601L));
323323

324324
sortAndFormat = SortBuilders.fieldSort("custom-date").setFormat("yyyy-MM-dd").build(searchExecutionContext);
325-
assertThat(sortAndFormat.format.formatSortValue(1615580798601L), equalTo("2021-03-12"));
325+
assertThat(sortAndFormat.format().formatSortValue(1615580798601L), equalTo("2021-03-12"));
326326

327327
sortAndFormat = SortBuilders.fieldSort("custom-date").setFormat("epoch_millis").build(searchExecutionContext);
328-
assertThat(sortAndFormat.format.formatSortValue(1615580798601L), equalTo("1615580798601"));
328+
assertThat(sortAndFormat.format().formatSortValue(1615580798601L), equalTo("1615580798601"));
329329

330330
sortAndFormat = SortBuilders.fieldSort("custom-date").setFormat("yyyy/MM/dd HH:mm:ss").build(searchExecutionContext);
331-
assertThat(sortAndFormat.format.formatSortValue(1615580798601L), equalTo("2021/03/12 20:26:38"));
331+
assertThat(sortAndFormat.format().formatSortValue(1615580798601L), equalTo("2021/03/12 20:26:38"));
332332
}
333333

334334
public void testInvalidFormat() {
@@ -371,12 +371,12 @@ public void testModeNonNumericField() throws IOException {
371371
SearchExecutionContext searchExecutionContext = createMockSearchExecutionContext();
372372

373373
FieldSortBuilder sortBuilder = new FieldSortBuilder(MAPPED_STRING_FIELDNAME).sortMode(SortMode.MIN);
374-
SortField sortField = sortBuilder.build(searchExecutionContext).field;
374+
SortField sortField = sortBuilder.build(searchExecutionContext).field();
375375
assertThat(sortField, instanceOf(SortedSetSortField.class));
376376
assertEquals(SortedSetSelector.Type.MIN, ((SortedSetSortField) sortField).getSelector());
377377

378378
sortBuilder = new FieldSortBuilder(MAPPED_STRING_FIELDNAME).sortMode(SortMode.MAX);
379-
sortField = sortBuilder.build(searchExecutionContext).field;
379+
sortField = sortBuilder.build(searchExecutionContext).field();
380380
assertThat(sortField, instanceOf(SortedSetSortField.class));
381381
assertEquals(SortedSetSelector.Type.MAX, ((SortedSetSortField) sortField).getSelector());
382382

0 commit comments

Comments
 (0)