From 0609f47a5ea663a7b5a3d8f48ff0fa0f068df685 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 6c4f238a4..bb45cad86 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 fb759ffdb..539f2c031 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(); + } }