From d7db64fdbf7f0c7ed97d490e8c7a99451e98ee9a Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Fri, 11 Mar 2011 18:06:32 +0200 Subject: [PATCH] DATAKV-36 + update BulkMapper contract --- .../data/keyvalue/redis/core/BulkMapper.java | 4 ++-- .../data/keyvalue/redis/core/RedisTemplate.java | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BulkMapper.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BulkMapper.java index 30048a241..97d37998a 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BulkMapper.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BulkMapper.java @@ -15,7 +15,7 @@ */ package org.springframework.data.keyvalue.redis.core; -import java.util.Iterator; +import java.util.List; /** * Mapper translating Redis bulk value responses (typically returned by a sort query) to actual objects. Implementations of this interface do not have to worry @@ -27,5 +27,5 @@ import java.util.Iterator; */ public interface BulkMapper { - T mapBulk(Iterator valueStream); + T mapBulk(List tuple); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisTemplate.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisTemplate.java index f2e04732e..52bded364 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisTemplate.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisTemplate.java @@ -1963,14 +1963,14 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation int bulkSize = query.getGetPattern().size(); List result = new ArrayList(values.size() / bulkSize + 1); - final List bulk = new ArrayList(bulkSize); - final List listView = Collections.unmodifiableList(bulk); - + List bulk = new ArrayList(bulkSize); for (S s : values) { + bulk.add(s); if (bulk.size() == bulkSize) { - result.add(bulkMapper.mapBulk(listView.iterator())); - bulk.clear(); + result.add(bulkMapper.mapBulk(Collections.unmodifiableList(bulk))); + // create a new list (we could reuse the old one but the client might hang on to it for some reason) + bulk = new ArrayList(bulkSize); } }