Skip to content

Commit 3fb7c87

Browse files
committed
DATACMNS-1057 - SingleValueBinding now returns a non-Optional again.
The binding is populated with a value so we can also expect a predicate to be returned.
1 parent 6894fcb commit 3fb7c87

File tree

4 files changed

+15
-19
lines changed

4 files changed

+15
-19
lines changed

src/main/java/org/springframework/data/querydsl/binding/QuerydslBindings.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ public void firstOptional(OptionalValueBinding<P, T> binding) {
357357
public void first(SingleValueBinding<P, T> binding) {
358358

359359
Assert.notNull(binding, "Binding must not be null!");
360-
all((path, value) -> Optionals.next(value.iterator()).flatMap(t -> binding.bind(path, t)));
360+
all((path, value) -> Optionals.next(value.iterator()).map(t -> binding.bind(path, t)));
361361
}
362362

363363
/**
@@ -476,8 +476,7 @@ public <P extends Path<T>> void firstOptional(OptionalValueBinding<P, T> binding
476476
public <P extends Path<T>> void first(SingleValueBinding<P, T> binding) {
477477

478478
Assert.notNull(binding, "Binding must not be null!");
479-
all((MultiValueBinding<P, T>) (path, value) -> Optionals.next(value.iterator())
480-
.flatMap(t -> binding.bind(path, t)));
479+
all((MultiValueBinding<P, T>) (path, value) -> Optionals.next(value.iterator()).map(t -> binding.bind(path, t)));
481480
}
482481

483482
/**

src/main/java/org/springframework/data/querydsl/binding/SingleValueBinding.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
*/
1616
package org.springframework.data.querydsl.binding;
1717

18-
import java.util.Optional;
19-
2018
import com.querydsl.core.types.Path;
2119
import com.querydsl.core.types.Predicate;
2220

@@ -40,5 +38,5 @@ public interface SingleValueBinding<T extends Path<? extends S>, S> {
4038
* @return can be {@literal null}, in which case the binding will not be incorporated in the overall {@link Predicate}
4139
* .
4240
*/
43-
Optional<Predicate> bind(T path, S value);
41+
Predicate bind(T path, S value);
4442
}

src/test/java/org/springframework/data/querydsl/binding/QuerydslBindingsUnitTests.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ public class QuerydslBindingsUnitTests {
4343
QuerydslPredicateBuilder builder;
4444
QuerydslBindings bindings;
4545

46-
static final SingleValueBinding<StringPath, String> CONTAINS_BINDING = (path, value) -> Optional
47-
.of(path.contains(value));
46+
static final SingleValueBinding<StringPath, String> CONTAINS_BINDING = (path, value) -> path.contains(value);
4847

4948
@Before
5049
public void setUp() {
@@ -266,13 +265,13 @@ enum ContainsBinding implements SingleValueBinding<StringPath, String> {
266265

267266
INSTANCE;
268267

269-
/*
268+
/*
270269
* (non-Javadoc)
271270
* @see org.springframework.data.querydsl.binding.SingleValueBinding#bind(com.querydsl.core.types.Path, java.lang.Object)
272271
*/
273272
@Override
274-
public Optional<Predicate> bind(StringPath path, String value) {
275-
return Optional.of(path.contains(value));
273+
public Predicate bind(StringPath path, String value) {
274+
return path.contains(value);
276275
}
277276
}
278277
}

src/test/java/org/springframework/data/web/querydsl/QuerydslPredicateArgumentResolverUnitTests.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ public void resolveArgumentShouldCreateSingleStringParameterPredicateCorrectly()
9797

9898
request.addParameter("firstname", "rand");
9999

100-
Predicate predicate = resolver.resolveArgument(
101-
getMethodParameterFor("simpleFind", Predicate.class), null, new ServletWebRequest(request), null);
100+
Predicate predicate = resolver.resolveArgument(getMethodParameterFor("simpleFind", Predicate.class), null,
101+
new ServletWebRequest(request), null);
102102

103103
assertThat(predicate).isEqualTo((Predicate) QUser.user.firstname.eq("rand"));
104104
}
@@ -157,8 +157,8 @@ public void shouldCreatePredicateForNonStringPropertyCorrectly() throws Exceptio
157157

158158
request.addParameter("inceptionYear", "978");
159159

160-
Predicate predicate = resolver.resolveArgument(
161-
getMethodParameterFor("specificFind", Predicate.class), null, new ServletWebRequest(request), null);
160+
Predicate predicate = resolver.resolveArgument(getMethodParameterFor("specificFind", Predicate.class), null,
161+
new ServletWebRequest(request), null);
162162

163163
assertThat(predicate).isEqualTo((Predicate) QUser.user.inceptionYear.eq(978L));
164164
}
@@ -168,8 +168,8 @@ public void shouldCreatePredicateForNonStringListPropertyCorrectly() throws Exce
168168

169169
request.addParameter("inceptionYear", new String[] { "978", "998" });
170170

171-
Predicate predicate = resolver.resolveArgument(
172-
getMethodParameterFor("specificFind", Predicate.class), null, new ServletWebRequest(request), null);
171+
Predicate predicate = resolver.resolveArgument(getMethodParameterFor("specificFind", Predicate.class), null,
172+
new ServletWebRequest(request), null);
173173

174174
assertThat(predicate).isEqualTo((Predicate) QUser.user.inceptionYear.in(978L, 998L));
175175
}
@@ -222,7 +222,7 @@ static class SpecificBinding implements QuerydslBinderCustomizer<QUser> {
222222
public void customize(QuerydslBindings bindings, QUser user) {
223223

224224
bindings.bind(user.firstname).firstOptional((path, value) -> value.map(it -> path.eq(it.toUpperCase())));
225-
bindings.bind(user.lastname).first((path, value) -> Optional.of(path.toLowerCase().eq(value)));
225+
bindings.bind(user.lastname).first((path, value) -> path.toLowerCase().eq(value));
226226

227227
bindings.excluding(user.address);
228228
}
@@ -253,7 +253,7 @@ public static class SampleRepo implements QuerydslBinderCustomizer<QUser> {
253253

254254
@Override
255255
public void customize(QuerydslBindings bindings, QUser user) {
256-
bindings.bind(QUser.user.firstname).first((path, value) -> Optional.of(path.contains(value)));
256+
bindings.bind(QUser.user.firstname).first((path, value) -> path.contains(value));
257257
}
258258
}
259259
}

0 commit comments

Comments
 (0)