From 296d105e193df540043cb9432addfd747f7eae9b Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Mon, 10 Dec 2018 16:55:26 +0100 Subject: [PATCH] DATACMNS-1443 - Fixed Querydsl web data binding for blank strings. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now use StringUtils.hasLength(…) in the check whether to drop request elements from binding instead of ….hasText(…) as the latter drops blank strings so that's impossible to search for properties that contain a blank. --- .../binding/QuerydslPredicateBuilder.java | 2 +- .../QuerydslPredicateBuilderUnitTests.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/querydsl/binding/QuerydslPredicateBuilder.java b/src/main/java/org/springframework/data/querydsl/binding/QuerydslPredicateBuilder.java index a01e4f705..1916c34d1 100644 --- a/src/main/java/org/springframework/data/querydsl/binding/QuerydslPredicateBuilder.java +++ b/src/main/java/org/springframework/data/querydsl/binding/QuerydslPredicateBuilder.java @@ -216,6 +216,6 @@ public class QuerydslPredicateBuilder { * @return */ private static boolean isSingleElementCollectionWithoutText(List source) { - return source.size() == 1 && !StringUtils.hasText(source.get(0)); + return source.size() == 1 && !StringUtils.hasLength(source.get(0)); } } diff --git a/src/test/java/org/springframework/data/querydsl/binding/QuerydslPredicateBuilderUnitTests.java b/src/test/java/org/springframework/data/querydsl/binding/QuerydslPredicateBuilderUnitTests.java index 397749d58..1e0ac2b2f 100755 --- a/src/test/java/org/springframework/data/querydsl/binding/QuerydslPredicateBuilderUnitTests.java +++ b/src/test/java/org/springframework/data/querydsl/binding/QuerydslPredicateBuilderUnitTests.java @@ -205,4 +205,21 @@ public class QuerydslPredicateBuilderUnitTests { assertThat(builder.getPredicate(USER_TYPE, values, bindings))// .isEqualTo($.user.as(QSpecialUser.class).specialProperty.contains("VALUE")); } + + @Test // DATACMNS-1443 + public void doesNotDropValuesContainingABlank() { + + values.add("firstname", " "); + + assertThat(builder.getPredicate(USER_TYPE, values, DEFAULT_BINDINGS)) // + .isEqualTo(QUser.user.firstname.eq(" ")); + } + + @Test // DATACMNS-1443 + public void dropsValuesContainingAnEmptyString() { + + values.add("firstname", ""); + + assertThat(builder.getPredicate(USER_TYPE, values, DEFAULT_BINDINGS)).isNull(); + } }