From 2f34f63e288e248ed4f3599925db96744f720ee5 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 19 Apr 2024 08:16:59 +0200 Subject: [PATCH] Polishing. Reduce allocations by reusing IndexDefinition in RemoveIndexedData. Tweak test method name. See #2882 Original pull request: #2895 --- .../redis/core/convert/PathIndexResolver.java | 16 +++------------- .../redis/core/convert/RemoveIndexedData.java | 13 +++++++------ .../data/redis/core/index/IndexDefinition.java | 2 +- .../redis/core/RedisKeyValueAdapterTests.java | 2 +- 4 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/springframework/data/redis/core/convert/PathIndexResolver.java b/src/main/java/org/springframework/data/redis/core/convert/PathIndexResolver.java index 47023696a..f23873ee9 100644 --- a/src/main/java/org/springframework/data/redis/core/convert/PathIndexResolver.java +++ b/src/main/java/org/springframework/data/redis/core/convert/PathIndexResolver.java @@ -210,24 +210,14 @@ public class PathIndexResolver implements IndexResolver { } Object transformedValue = indexDefinition.valueTransformer().convert(value); + IndexedData indexedData; - IndexedData indexedData = null; if (transformedValue == null) { - - indexedData = new RemoveIndexedData(new IndexedData() { - @Override - public String getIndexName() { - return indexDefinition.getIndexName(); - } - - @Override - public String getKeyspace() { - return indexDefinition.getKeyspace(); - } - }); + indexedData = new RemoveIndexedData(indexDefinition); } else { indexedData = indexedDataFactoryProvider.getIndexedDataFactory(indexDefinition).createIndexedDataFor(value); } + data.add(indexedData); } } diff --git a/src/main/java/org/springframework/data/redis/core/convert/RemoveIndexedData.java b/src/main/java/org/springframework/data/redis/core/convert/RemoveIndexedData.java index e2fa89c2a..fde0d7d74 100644 --- a/src/main/java/org/springframework/data/redis/core/convert/RemoveIndexedData.java +++ b/src/main/java/org/springframework/data/redis/core/convert/RemoveIndexedData.java @@ -15,6 +15,8 @@ */ package org.springframework.data.redis.core.convert; +import org.springframework.data.redis.core.index.IndexDefinition; + /** * {@link RemoveIndexedData} represents a removed index entry from a secondary index for a property path in a given keyspace. * @@ -23,21 +25,20 @@ package org.springframework.data.redis.core.convert; */ public class RemoveIndexedData implements IndexedData { - private final IndexedData delegate; + private final IndexDefinition indexDefinition; - RemoveIndexedData(IndexedData delegate) { - super(); - this.delegate = delegate; + RemoveIndexedData(IndexDefinition indexDefinition) { + this.indexDefinition = indexDefinition; } @Override public String getIndexName() { - return delegate.getIndexName(); + return indexDefinition.getIndexName(); } @Override public String getKeyspace() { - return delegate.getKeyspace(); + return indexDefinition.getKeyspace(); } @Override diff --git a/src/main/java/org/springframework/data/redis/core/index/IndexDefinition.java b/src/main/java/org/springframework/data/redis/core/index/IndexDefinition.java index 55190f826..86151fc07 100644 --- a/src/main/java/org/springframework/data/redis/core/index/IndexDefinition.java +++ b/src/main/java/org/springframework/data/redis/core/index/IndexDefinition.java @@ -24,7 +24,7 @@ import org.springframework.util.ObjectUtils; /** * {@link IndexDefinition} allow to set up a blueprint for creating secondary index structures in Redis. Setting up * conditions allows to define {@link Condition} that have to be passed in order to add a value to the index. This - * allows to fine grained tune the index structure. {@link IndexValueTransformer} gets applied to the raw value for + * allows to fine-grained tune the index structure. {@link IndexValueTransformer} gets applied to the raw value for * creating the actual index entry. * * @author Christoph Strobl diff --git a/src/test/java/org/springframework/data/redis/core/RedisKeyValueAdapterTests.java b/src/test/java/org/springframework/data/redis/core/RedisKeyValueAdapterTests.java index afa842f13..1e23e01c6 100644 --- a/src/test/java/org/springframework/data/redis/core/RedisKeyValueAdapterTests.java +++ b/src/test/java/org/springframework/data/redis/core/RedisKeyValueAdapterTests.java @@ -148,7 +148,7 @@ public class RedisKeyValueAdapterTests { } @Test // GH-2882 - void indexDataShouldBeCleardIfPropertyValueIsSetToNull() { + void indexDataShouldBeClearedIfPropertyValueIsSetToNull() { Person rand = new Person(); rand.firstname = "rand";