From 37c0f8b24285951c7466163c902872c567a04570 Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Mon, 29 Nov 2010 20:18:49 +0200 Subject: [PATCH] + add proper serialization of hash specific items --- .../keyvalue/redis/core/RedisTemplate.java | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) 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 fd44f0b59..3a6653a32 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 @@ -228,6 +228,15 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation return rawKeys; } + private byte[] rawHashKey(HK value) { + return (value != null ? hashKeySerializer.serialize(value) : null); + } + + private byte[] rawHashValue(HV value) { + return (value != null ? hashValueSerializer.serialize(value) : null); + } + + @SuppressWarnings("unchecked") private > T values(Collection rawValues, Class type) { Collection values = (List.class.isAssignableFrom(type) ? new ArrayList(rawValues.size()) @@ -242,12 +251,12 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation } @SuppressWarnings("unchecked") - private Collection arbitraryValues(Collection rawValues, Class type) { + private Collection hashValues(Collection rawValues, Class type) { Collection values = (List.class.isAssignableFrom(type) ? new ArrayList(rawValues.size()) : new LinkedHashSet(rawValues.size())); for (byte[] bs : rawValues) { if (bs != null) { - values.add((H) valueSerializer.deserialize(bs)); + values.add((H) hashValueSerializer.deserialize(bs)); } } @@ -942,7 +951,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation @Override public HV get(K key, Object hashKey) { final byte[] rawKey = rawKey(key); - final byte[] rawHashKey = rawValue(hashKey); + final byte[] rawHashKey = rawHashKey(hashKey); byte[] rawHashValue = execute(new RedisCallback() { @Override @@ -957,7 +966,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation @Override public Boolean hasKey(K key, Object hashKey) { final byte[] rawKey = rawKey(key); - final byte[] rawHashKey = rawValue(hashKey); + final byte[] rawHashKey = rawHashKey(hashKey); return execute(new RedisCallback() { @Override @@ -970,7 +979,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation @Override public Integer increment(K key, HK hashKey, final int delta) { final byte[] rawKey = rawKey(key); - final byte[] rawHashKey = rawValue(hashKey); + final byte[] rawHashKey = rawHashKey(hashKey); return execute(new RedisCallback() { @Override @@ -992,7 +1001,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation } }, true); - return (Set) arbitraryValues(rawValues, Set.class); + return (Set) hashValues(rawValues, Set.class); } @Override @@ -1014,7 +1023,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation final Map hashes = new LinkedHashMap(m.size()); for (Map.Entry entry : hashes.entrySet()) { - hashes.put(rawValue(entry.getKey()), rawValue(entry.getValue())); + hashes.put(rawHashKey(entry.getKey()), rawHashValue(entry.getValue())); } execute(new RedisCallback() { @@ -1029,8 +1038,8 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation @Override public void set(K key, HK hashKey, HV value) { final byte[] rawKey = rawKey(key); - final byte[] rawHashKey = rawValue(hashKey); - final byte[] rawHashValue = rawValue(value); + final byte[] rawHashKey = rawHashKey(hashKey); + final byte[] rawHashValue = rawHashValue(value); execute(new RedisCallback() { @Override @@ -1052,13 +1061,13 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation } }, true); - return (List) arbitraryValues(rawValues, List.class); + return (List) hashValues(rawValues, List.class); } @Override public void delete(K key, Object hashKey) { final byte[] rawKey = rawKey(key); - final byte[] rawHashKey = rawValue(hashKey); + final byte[] rawHashKey = rawHashKey(hashKey); execute(new RedisCallback() { @Override