From 15f541bf4cad6212bc99ca2035ecaa263f9378cf Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 10 Sep 2024 10:12:43 +0200 Subject: [PATCH] Polishing. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Improve pattern variable naming, use ClassUtils.getDescriptiveType(…) to avoid null-pointer exceptions. Simplify RedisOperationChain condition checks. See #2788 --- .../repository/query/RedisQueryCreator.java | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/springframework/data/redis/repository/query/RedisQueryCreator.java b/src/main/java/org/springframework/data/redis/repository/query/RedisQueryCreator.java index ae3884897..0479654a8 100644 --- a/src/main/java/org/springframework/data/redis/repository/query/RedisQueryCreator.java +++ b/src/main/java/org/springframework/data/redis/repository/query/RedisQueryCreator.java @@ -15,6 +15,7 @@ */ package org.springframework.data.redis.repository.query; +import java.util.Collection; import java.util.Iterator; import org.springframework.dao.InvalidDataAccessApiUsageException; @@ -30,6 +31,7 @@ import org.springframework.data.repository.query.parser.AbstractQueryCreator; import org.springframework.data.repository.query.parser.Part; import org.springframework.data.repository.query.parser.PartTree; import org.springframework.lang.Nullable; +import org.springframework.util.ClassUtils; import org.springframework.util.CollectionUtils; /** @@ -80,17 +82,15 @@ public class RedisQueryCreator extends AbstractQueryCreator complete(@Nullable final RedisOperationChain criteria, Sort sort) { + protected KeyValueQuery complete(@Nullable RedisOperationChain criteria, Sort sort) { KeyValueQuery query = new KeyValueQuery<>(criteria); - if (criteria != null && !CollectionUtils.isEmpty(criteria.getSismember()) - && !CollectionUtils.isEmpty(criteria.getOrSismember())) - if (criteria.getSismember().size() == 1 && criteria.getOrSismember().size() == 1) { - - criteria.getOrSismember().add(criteria.getSismember().iterator().next()); - criteria.getSismember().clear(); - } + if (criteria != null && containsExactlyOne(criteria.getSismember()) + && containsExactlyOne(criteria.getOrSismember())) { + criteria.getOrSismember().addAll(criteria.getSismember()); + criteria.getSismember().clear(); + } if (sort.isSorted()) { query.setSort(sort); @@ -111,29 +111,33 @@ public class RedisQueryCreator extends AbstractQueryCreator collection) { + return !CollectionUtils.isEmpty(collection) && collection.size() == 1; + } }