From 83f70ffae6873ee899170145708a165c5cd429b2 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 5 May 2025 14:13:17 +0200 Subject: [PATCH] Polishing. Reformat code. Refine tests. See #3849 Original pull request: #3856 --- .../data/jpa/domain/Specification.java | 6 ++---- .../data/jpa/domain/SpecificationUnitTests.java | 11 +++++------ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/domain/Specification.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/domain/Specification.java index 249da0815..78a6974a6 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/domain/Specification.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/domain/Specification.java @@ -56,11 +56,9 @@ public interface Specification extends Serializable { return spec == null // ? (root, query, builder) -> null // : (root, query, builder) -> { + Predicate predicate = spec.toPredicate(root, query, builder); - if(predicate != null) { - return builder.not(predicate); - } - return builder.disjunction(); + return predicate != null ? builder.not(predicate) : builder.disjunction(); }; } diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/domain/SpecificationUnitTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/domain/SpecificationUnitTests.java index 992ecdd51..a888c238a 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/domain/SpecificationUnitTests.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/domain/SpecificationUnitTests.java @@ -206,7 +206,6 @@ class SpecificationUnitTests implements Serializable { Predicate secondPredicate = mock(Predicate.class); Specification first = ((root1, query1, criteriaBuilder) -> firstPredicate); - Specification second = ((root1, query1, criteriaBuilder) -> secondPredicate); first.or(second).toPredicate(root, query, builder); @@ -214,14 +213,14 @@ class SpecificationUnitTests implements Serializable { verify(builder).or(firstPredicate, secondPredicate); } - @Test // #3849 + @Test // GH-3849 void notWithNullPredicate() { - Specification spec = (r, q, cb) -> null; - Specification notSpec = Specification.not(spec); + when(builder.disjunction()).thenReturn(mock(Predicate.class)); - notSpec.toPredicate(root, query, builder); - + Specification notSpec = Specification.not((r, q, cb) -> null); + + assertThat(notSpec.toPredicate(root, query, builder)).isNotNull(); verify(builder).disjunction(); }