From 3b7b1ace8b032df3d8c4526e79118502541d9da2 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 6 Mar 2023 14:43:07 +0100 Subject: [PATCH] Polishing. Introduce isEmpty method for HintFunction for easier invocation avoiding negations on the call site. See #3218 Original pull request: #4311 --- .../data/mongodb/core/HintFunction.java | 13 +++++++++++-- .../data/mongodb/core/MongoTemplate.java | 2 +- .../data/mongodb/core/ReactiveMongoTemplate.java | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/HintFunction.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/HintFunction.java index c4e07f5b3..b7b4a3588 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/HintFunction.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/HintFunction.java @@ -68,6 +68,15 @@ class HintFunction { return (hint instanceof String hintString && StringUtils.hasText(hintString)) || hint instanceof Bson; } + /** + * If a hint is not present, returns {@code true}, otherwise {@code false}. + * + * @return {@code true} if a hint is not present, otherwise {@code false}. + */ + public boolean isEmpty() { + return !isPresent(); + } + /** * Apply the hint to consumers depending on the hint format if {@link #isPresent() present}. * @@ -79,7 +88,7 @@ class HintFunction { public void ifPresent(@Nullable CodecRegistryProvider registryProvider, Function stringConsumer, Function bsonConsumer) { - if (!isPresent()) { + if (isEmpty()) { return; } apply(registryProvider, stringConsumer, bsonConsumer); @@ -97,7 +106,7 @@ class HintFunction { public R apply(@Nullable CodecRegistryProvider registryProvider, Function stringConsumer, Function bsonConsumer) { - if (!isPresent()) { + if (isEmpty()) { throw new IllegalStateException("No hint present"); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index b88b6d6b5..c23548ea3 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -3226,7 +3226,7 @@ public class MongoTemplate Meta meta = query.getMeta(); HintFunction hintFunction = HintFunction.from(query.getHint()); if (query.getSkip() <= 0 && query.getLimit() <= 0 && ObjectUtils.isEmpty(query.getSortObject()) - && !hintFunction.isPresent() && !meta.hasValues() && !query.getCollation().isPresent()) { + && hintFunction.isEmpty() && !meta.hasValues() && query.getCollation().isEmpty()) { return cursorToUse; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java index d49dffafe..3983ee1e0 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java @@ -3108,7 +3108,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati HintFunction hintFunction = HintFunction.from(query.getHint()); Meta meta = query.getMeta(); if (query.getSkip() <= 0 && query.getLimit() <= 0 && ObjectUtils.isEmpty(query.getSortObject()) - && !hintFunction.isPresent() && !meta.hasValues()) { + && hintFunction.isEmpty() && !meta.hasValues()) { return findPublisherToUse; }