From 43062c4e95e410992fd1b16f9ae577b483e36dd3 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 c4ad2416a..9755052ed 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 @@ -57,11 +57,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 96269d0ef..eba6ed885 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 { 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 { 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(); }