Skip to content

Commit 2f34f63

Browse files
committed
Polishing.
Reduce allocations by reusing IndexDefinition in RemoveIndexedData. Tweak test method name. See #2882 Original pull request: #2895
1 parent 8afabc1 commit 2f34f63

File tree

4 files changed

+12
-21
lines changed

4 files changed

+12
-21
lines changed

Diff for: src/main/java/org/springframework/data/redis/core/convert/PathIndexResolver.java

+3-13
Original file line numberDiff line numberDiff line change
@@ -210,24 +210,14 @@ protected Set<IndexedData> resolveIndex(String keyspace, String propertyPath,
210210
}
211211

212212
Object transformedValue = indexDefinition.valueTransformer().convert(value);
213+
IndexedData indexedData;
213214

214-
IndexedData indexedData = null;
215215
if (transformedValue == null) {
216-
217-
indexedData = new RemoveIndexedData(new IndexedData() {
218-
@Override
219-
public String getIndexName() {
220-
return indexDefinition.getIndexName();
221-
}
222-
223-
@Override
224-
public String getKeyspace() {
225-
return indexDefinition.getKeyspace();
226-
}
227-
});
216+
indexedData = new RemoveIndexedData(indexDefinition);
228217
} else {
229218
indexedData = indexedDataFactoryProvider.getIndexedDataFactory(indexDefinition).createIndexedDataFor(value);
230219
}
220+
231221
data.add(indexedData);
232222
}
233223
}

Diff for: src/main/java/org/springframework/data/redis/core/convert/RemoveIndexedData.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package org.springframework.data.redis.core.convert;
1717

18+
import org.springframework.data.redis.core.index.IndexDefinition;
19+
1820
/**
1921
* {@link RemoveIndexedData} represents a removed index entry from a secondary index for a property path in a given keyspace.
2022
*
@@ -23,21 +25,20 @@
2325
*/
2426
public class RemoveIndexedData implements IndexedData {
2527

26-
private final IndexedData delegate;
28+
private final IndexDefinition indexDefinition;
2729

28-
RemoveIndexedData(IndexedData delegate) {
29-
super();
30-
this.delegate = delegate;
30+
RemoveIndexedData(IndexDefinition indexDefinition) {
31+
this.indexDefinition = indexDefinition;
3132
}
3233

3334
@Override
3435
public String getIndexName() {
35-
return delegate.getIndexName();
36+
return indexDefinition.getIndexName();
3637
}
3738

3839
@Override
3940
public String getKeyspace() {
40-
return delegate.getKeyspace();
41+
return indexDefinition.getKeyspace();
4142
}
4243

4344
@Override

Diff for: src/main/java/org/springframework/data/redis/core/index/IndexDefinition.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
/**
2525
* {@link IndexDefinition} allow to set up a blueprint for creating secondary index structures in Redis. Setting up
2626
* conditions allows to define {@link Condition} that have to be passed in order to add a value to the index. This
27-
* allows to fine grained tune the index structure. {@link IndexValueTransformer} gets applied to the raw value for
27+
* allows to fine-grained tune the index structure. {@link IndexValueTransformer} gets applied to the raw value for
2828
* creating the actual index entry.
2929
*
3030
* @author Christoph Strobl

Diff for: src/test/java/org/springframework/data/redis/core/RedisKeyValueAdapterTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ void putWritesSimpleIndexDataCorrectly() {
148148
}
149149

150150
@Test // GH-2882
151-
void indexDataShouldBeCleardIfPropertyValueIsSetToNull() {
151+
void indexDataShouldBeClearedIfPropertyValueIsSetToNull() {
152152

153153
Person rand = new Person();
154154
rand.firstname = "rand";

0 commit comments

Comments
 (0)