Revise QuerydslPredicateBuilder nullability behavior.

We now no longer return a null Predicate from QuerydslPredicateBuilder.getPredicate(…) if the input values are empty or if the constraints are empty. Instead, we return an empty BooleanBuilder instance to avoid null handling on the calling side.

HandlerMethodArgumentsResolvers for QuerydslBindings retain their null/Optional.empty semantics.

Closes #2396
This commit is contained in:
Mark Paluch
2021-06-29 10:12:34 +02:00
parent 847738324f
commit 394187a03b
5 changed files with 51 additions and 28 deletions

View File

@@ -77,8 +77,10 @@ class QuerydslPredicateBuilderUnitTests {
}
@Test // DATACMNS-669, DATACMNS-1168
void getPredicateShouldReturnNullWhenPropertiesAreEmpty() {
assertThat(builder.getPredicate(ClassTypeInformation.OBJECT, values, DEFAULT_BINDINGS)).isNull();
void getPredicateShouldReturnEmptyWhenPropertiesAreEmpty() {
assertThat(
QuerydslPredicateBuilder.isEmpty(builder.getPredicate(ClassTypeInformation.OBJECT, values, DEFAULT_BINDINGS)))
.isTrue();
}
@Test // DATACMNS-669
@@ -228,6 +230,6 @@ class QuerydslPredicateBuilderUnitTests {
values.add("firstname", "");
assertThat(builder.getPredicate(USER_TYPE, values, DEFAULT_BINDINGS)).isNull();
assertThat(QuerydslPredicateBuilder.isEmpty(builder.getPredicate(USER_TYPE, values, DEFAULT_BINDINGS))).isTrue();
}
}