Skip to content

Commit 111185c

Browse files
Fix the bugs in list setters to clear then in case of empty input (#91)
* Fix the bugs in list setters to clear then in case of empty input
1 parent 07348c9 commit 111185c

File tree

2 files changed

+82
-4
lines changed

2 files changed

+82
-4
lines changed

document-store/src/main/java/org/hypertrace/core/documentstore/query/Query.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,9 @@ public QueryBuilder setSelection(final Selection selection) {
125125
}
126126

127127
public QueryBuilder setSelections(final List<SelectionSpec> selectionSpecs) {
128-
if (CollectionUtils.isNotEmpty(selectionSpecs)) {
128+
if (CollectionUtils.isEmpty(selectionSpecs)) {
129+
this.selectionBuilder = null;
130+
} else {
129131
getSelectionBuilder().clearSelectionSpecs();
130132
}
131133

@@ -170,9 +172,12 @@ public QueryBuilder setAggregation(final Aggregation aggregation) {
170172
}
171173

172174
public QueryBuilder setAggregations(final List<GroupTypeExpression> expressions) {
173-
if (CollectionUtils.isNotEmpty(expressions)) {
175+
if (CollectionUtils.isEmpty(expressions)) {
176+
this.aggregationBuilder = null;
177+
} else {
174178
getAggregationBuilder().clearExpressions();
175179
}
180+
176181
return addAggregations(expressions);
177182
}
178183

@@ -204,9 +209,12 @@ public QueryBuilder setSort(final Sort sort) {
204209
}
205210

206211
public QueryBuilder setSorts(final List<SortingSpec> specs) {
207-
if (CollectionUtils.isNotEmpty(specs)) {
212+
if (CollectionUtils.isEmpty(specs)) {
213+
this.sortBuilder = null;
214+
} else {
208215
getSortBuilder().clearSortingSpecs();
209216
}
217+
210218
return addSorts(specs);
211219
}
212220

@@ -233,9 +241,12 @@ public QueryBuilder setPagination(final Pagination pagination) {
233241
}
234242

235243
public QueryBuilder setFromClauses(final List<FromTypeExpression> expressions) {
236-
if (CollectionUtils.isNotEmpty(expressions)) {
244+
if (CollectionUtils.isEmpty(expressions)) {
245+
this.fromClauseBuilder = null;
246+
} else {
237247
getFromClauseBuilder().clearFromTypeExpressions();
238248
}
249+
239250
return addFromClauses(expressions);
240251
}
241252

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package org.hypertrace.core.documentstore.query;
2+
3+
import static java.util.Collections.emptyList;
4+
import static org.hypertrace.core.documentstore.expression.operators.SortOrder.DESC;
5+
import static org.junit.jupiter.api.Assertions.assertEquals;
6+
7+
import org.hypertrace.core.documentstore.expression.impl.ConstantExpression;
8+
import org.hypertrace.core.documentstore.expression.impl.IdentifierExpression;
9+
import org.hypertrace.core.documentstore.expression.impl.UnnestExpression;
10+
import org.hypertrace.core.documentstore.query.Query.QueryBuilder;
11+
import org.junit.jupiter.api.BeforeEach;
12+
import org.junit.jupiter.api.Test;
13+
import org.junit.jupiter.api.TestInstance;
14+
import org.junit.jupiter.api.TestInstance.Lifecycle;
15+
16+
@TestInstance(Lifecycle.PER_CLASS)
17+
class QueryBuilderTest {
18+
19+
private QueryBuilder queryBuilder;
20+
21+
@BeforeEach
22+
void setUp() {
23+
queryBuilder = Query.builder();
24+
}
25+
26+
@Test
27+
void testSetAndClearSelections() {
28+
final Query queryWithSelections =
29+
queryBuilder.addSelection(ConstantExpression.of("Something")).build();
30+
assertEquals(1, queryWithSelections.getSelections().size());
31+
32+
final Query queryWithoutSelections = queryBuilder.setSelections(emptyList()).build();
33+
assertEquals(0, queryWithoutSelections.getSelections().size());
34+
}
35+
36+
@Test
37+
void testSetAndClearSorts() {
38+
final Query queryWithSorts =
39+
queryBuilder.addSort(IdentifierExpression.of("Something"), DESC).build();
40+
assertEquals(1, queryWithSorts.getSorts().size());
41+
42+
final Query queryWithoutSorts = queryBuilder.setSorts(emptyList()).build();
43+
assertEquals(0, queryWithoutSorts.getSorts().size());
44+
}
45+
46+
@Test
47+
void testSetAndClearAggregations() {
48+
final Query queryWithAggregations =
49+
queryBuilder.addAggregation(IdentifierExpression.of("Something")).build();
50+
assertEquals(1, queryWithAggregations.getAggregations().size());
51+
52+
final Query queryWithoutAggregations = queryBuilder.setAggregations(emptyList()).build();
53+
assertEquals(0, queryWithoutAggregations.getAggregations().size());
54+
}
55+
56+
@Test
57+
void testSetAndClearFromClauses() {
58+
final Query queryWithFromClauses =
59+
queryBuilder
60+
.addFromClause(UnnestExpression.of(IdentifierExpression.of("Something"), false))
61+
.build();
62+
assertEquals(1, queryWithFromClauses.getFromTypeExpressions().size());
63+
64+
final Query queryWithoutFromClauses = queryBuilder.setFromClauses(emptyList()).build();
65+
assertEquals(0, queryWithoutFromClauses.getFromTypeExpressions().size());
66+
}
67+
}

0 commit comments

Comments
 (0)