diff --git a/src/main/java/org/springframework/data/redis/connection/DefaultStringRedisConnection.java b/src/main/java/org/springframework/data/redis/connection/DefaultStringRedisConnection.java index 31f3c17a8..ae7e0b5ea 100644 --- a/src/main/java/org/springframework/data/redis/connection/DefaultStringRedisConnection.java +++ b/src/main/java/org/springframework/data/redis/connection/DefaultStringRedisConnection.java @@ -613,13 +613,7 @@ public class DefaultStringRedisConnection implements StringRedisConnection { } private Map deserialize(Map hashes) { - Map ret = new LinkedHashMap(hashes.size()); - - for (Map.Entry entry : hashes.entrySet()) { - ret.put(serializer.deserialize(entry.getKey()), serializer.deserialize(entry.getValue())); - } - - return ret; + return SerializationUtils.deserialize(hashes, serializer); } private List deserialize(List data) { diff --git a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionPipelineIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionPipelineIntegrationTests.java index e7b7f2373..e591ae838 100644 --- a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionPipelineIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionPipelineIntegrationTests.java @@ -30,6 +30,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.UUID; import org.junit.Before; import org.junit.Ignore; @@ -732,6 +733,21 @@ abstract public class AbstractConnectionPipelineIntegrationTests extends actual); } + @Test + public void testHSetGet() throws Exception { + String hash = getClass() + ":hashtest"; + String key1 = UUID.randomUUID().toString(); + String key2 = UUID.randomUUID().toString(); + String value1 = "foo"; + String value2 = "bar"; + actual.add(connection.hSet(hash, key1, value1)); + actual.add(connection.hSet(hash, key2, value2)); + actual.add(connection.hGet(hash, key1)); + actual.add(connection.hGetAll(hash)); + List expected = Arrays.asList(new String[] { key1, value1, key2, value2 }); + verifyResults(Arrays.asList(new Object[] { 1l, 1l, value1, expected }), actual); + } + @Test public void testHSetNX() throws Exception { actual.add(connection.hSetNX("myhash", "key1", "foo")); diff --git a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java index 37487fd23..f5bb4dcd2 100644 --- a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java @@ -17,8 +17,11 @@ package org.springframework.data.redis.connection.jedis; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; +import java.util.UUID; import org.junit.After; import org.junit.Ignore; @@ -73,24 +76,6 @@ public class JedisConnectionPipelineIntegrationTests extends public void testFlushDb() { } - @Ignore("DATAREDIS-138 NPE in DefaultStringRedisConnection deserializing a null Map") - public void testHSetGet() throws Exception { - // String hash = getClass() + ":hashtest"; - // String key1 = UUID.randomUUID().toString(); - // String key2 = UUID.randomUUID().toString(); - // String value1 = "foo"; - // String value2 = "bar"; - // actual.add(connection.hSet(hash, key1, value1)); - // actual.add(connection.hSet(hash, key2, value2)); - // actual.add(connection.hGet(hash, key1)); - // actual.add(connection.hGetAll(hash)); - // Map expected = new HashMap(); - // expected.put(key1, value1); - // expected.put(key2, value2); - // verifyResults(Arrays.asList(new Object[] { 1l, 1l, value1, expected - // }), actual); - } - @Ignore("DATAREDIS-143 Jedis ClassCastExceptions closing pipeline on certain ops") public void testGetConfig() { } @@ -236,6 +221,23 @@ public class JedisConnectionPipelineIntegrationTests extends verifyResults(Arrays.asList(new Object[] { 1l, 1l, 0l, false }), actual); } + @Test + public void testHSetGet() throws Exception { + String hash = getClass() + ":hashtest"; + String key1 = UUID.randomUUID().toString(); + String key2 = UUID.randomUUID().toString(); + String value1 = "foo"; + String value2 = "bar"; + actual.add(connection.hSet(hash, key1, value1)); + actual.add(connection.hSet(hash, key2, value2)); + actual.add(connection.hGet(hash, key1)); + actual.add(connection.hGetAll(hash)); + Map expected = new HashMap(); + expected.put(key1, value1); + expected.put(key2, value2); + verifyResults(Arrays.asList(new Object[] { 1l, 1l, value1, expected }), actual); + } + @Test @IfProfileValue(name = "runLongTests", value = "true") public void testExpireAt() throws Exception { diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionPipelineIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionPipelineIntegrationTests.java index ab974f676..788f302f6 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionPipelineIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionPipelineIntegrationTests.java @@ -27,6 +27,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.UUID; import org.junit.Ignore; import org.junit.Test; @@ -80,27 +81,26 @@ public class LettuceConnectionPipelineIntegrationTests extends public void testZCount() { } - @Ignore("DATAREDIS-138 NPE in DefaultStringRedisConnection deserializing a null Map") - public void testHSetGet() throws Exception { - // String hash = getClass() + ":hashtest"; - // String key1 = UUID.randomUUID().toString(); - // String key2 = UUID.randomUUID().toString(); - // String value1 = "foo"; - // String value2 = "bar"; - // actual.add(connection.hSet(hash, key1, value1)); - // actual.add(connection.hSet(hash, key2, value2)); - // actual.add(connection.hGet(hash, key1)); - // actual.add(connection.hGetAll(hash)); - // Map expected = new HashMap(); - // expected.put(key1, value1); - // expected.put(key2, value2); - // verifyResults(Arrays.asList(new Object[] { true, true, value1, - // expected }), actual); - } - // Overrides, usually due to return values being Long vs Boolean or Set vs // List + @Test + public void testHSetGet() throws Exception { + String hash = getClass() + ":hashtest"; + String key1 = UUID.randomUUID().toString(); + String key2 = UUID.randomUUID().toString(); + String value1 = "foo"; + String value2 = "bar"; + actual.add(connection.hSet(hash, key1, value1)); + actual.add(connection.hSet(hash, key2, value2)); + actual.add(connection.hGet(hash, key1)); + actual.add(connection.hGetAll(hash)); + Map expected = new HashMap(); + expected.put(key1, value1); + expected.put(key2, value2); + verifyResults(Arrays.asList(new Object[] { true, true, value1, expected }), actual); + } + @Test public void testInfo() throws Exception { assertNull(connection.info()); diff --git a/src/test/java/org/springframework/data/redis/connection/rjc/RjcConnectionPipelineIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/rjc/RjcConnectionPipelineIntegrationTests.java index 6bde1ceed..1b498d141 100644 --- a/src/test/java/org/springframework/data/redis/connection/rjc/RjcConnectionPipelineIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/rjc/RjcConnectionPipelineIntegrationTests.java @@ -89,23 +89,6 @@ public class RjcConnectionPipelineIntegrationTests extends public void testZRevRangeWithScores() { } - @Ignore("DATAREDIS-138 NPE in DefaultStringRedisConnection deserializing a null Map") - public void testHSetGet() throws Exception { - // String hash = getClass() + ":hashtest"; - // String key1 = UUID.randomUUID().toString(); - // String key2 = UUID.randomUUID().toString(); - // String value1 = "foo"; - // String value2 = "bar"; - // actual.add(connection.hSet(hash, key1, value1)); - // actual.add(connection.hSet(hash, key2, value2)); - // actual.add(connection.hGet(hash, key1)); - // actual.add(connection.hGetAll(hash)); - // List expected = Arrays.asList(new String[] { key1, value1, - // key2, value2 }); - // verifyResults(Arrays.asList(new Object[] { 1l, 1l, value1, expected - // }), actual); - } - @Ignore("DATAREDIS-148 Syntax error on RJC zUnionStore") public void testZUnionStoreAggWeights() { } diff --git a/src/test/java/org/springframework/data/redis/connection/srp/SrpConnectionPipelineIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/srp/SrpConnectionPipelineIntegrationTests.java index 4b2ad9748..d1907b45a 100644 --- a/src/test/java/org/springframework/data/redis/connection/srp/SrpConnectionPipelineIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/srp/SrpConnectionPipelineIntegrationTests.java @@ -98,23 +98,6 @@ public class SrpConnectionPipelineIntegrationTests extends public void testZRangeByScoreWithScoresOffsetCount() { } - @Ignore("DATAREDIS-138 NPE in DefaultStringRedisConnection deserializing a null Map") - public void testHSetGet() throws Exception { - // String hash = getClass() + ":hashtest"; - // String key1 = UUID.randomUUID().toString(); - // String key2 = UUID.randomUUID().toString(); - // String value1 = "foo"; - // String value2 = "bar"; - // actual.add(connection.hSet(hash, key1, value1)); - // actual.add(connection.hSet(hash, key2, value2)); - // actual.add(connection.hGet(hash, key1)); - // actual.add(connection.hGetAll(hash)); - // List expected = Arrays.asList(new String[] {key1, value1, - // key2, value2}); - // verifyResults(Arrays.asList(new Object[] { 1l, 1l, value1, expected - // }), actual); - } - @Test(expected = UnsupportedOperationException.class) public void testZInterStoreAggWeights() { super.testZInterStoreAggWeights();