From d75ab305c8c08aeda14ec79353b3d67b7f7acb53 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Mon, 10 Dec 2018 17:26:14 +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 bd230fab1..59f1fb4bb 100644 --- a/src/main/java/org/springframework/data/querydsl/binding/QuerydslPredicateBuilder.java +++ b/src/main/java/org/springframework/data/querydsl/binding/QuerydslPredicateBuilder.java @@ -226,6 +226,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 48ad47fc4..75cabe342 100644 --- a/src/test/java/org/springframework/data/querydsl/binding/QuerydslPredicateBuilderUnitTests.java +++ b/src/test/java/org/springframework/data/querydsl/binding/QuerydslPredicateBuilderUnitTests.java @@ -218,4 +218,21 @@ public class QuerydslPredicateBuilderUnitTests { assertThat(predicate, is((Predicate) $.user.as(QSpecialUser.class).specialProperty.contains("VALUE"))); } + + @Test // DATACMNS-1443 + public void doesNotDropValuesContainingABlank() { + + values.add("firstname", " "); + + assertThat(builder.getPredicate(USER_TYPE, values, DEFAULT_BINDINGS), // + is((Predicate) QUser.user.firstname.eq(" "))); + } + + @Test // DATACMNS-1443 + public void dropsValuesContainingAnEmptyString() { + + values.add("firstname", ""); + + assertThat(builder.getPredicate(USER_TYPE, values, DEFAULT_BINDINGS), is(nullValue())); + } }