From 90f0685cb795026906dd551e7a25659065f62acb Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Fri, 4 May 2018 13:05:46 +0200 Subject: [PATCH] DATAREDIS-824 - Polishing. Split and add integration tests. Original Pull Request: #340 --- .../core/DefaultReactiveHashOperations.java | 4 +-- ...eactiveHashOperationsIntegrationTests.java | 28 ++++++++++++++----- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/springframework/data/redis/core/DefaultReactiveHashOperations.java b/src/main/java/org/springframework/data/redis/core/DefaultReactiveHashOperations.java index 90f6c5e8b..eab64c7a4 100644 --- a/src/main/java/org/springframework/data/redis/core/DefaultReactiveHashOperations.java +++ b/src/main/java/org/springframework/data/redis/core/DefaultReactiveHashOperations.java @@ -265,7 +265,7 @@ class DefaultReactiveHashOperations implements ReactiveHashOperations @SuppressWarnings("unchecked") private HV readHashValue(ByteBuffer value) { - return (HV) serializationContext.getHashValueSerializationPair().read(value); + return (HV) (value == null ? value : serializationContext.getHashValueSerializationPair().read(value)); } private Map.Entry deserializeHashEntry(Map.Entry source) { @@ -277,7 +277,7 @@ class DefaultReactiveHashOperations implements ReactiveHashOperations List values = new ArrayList<>(source.size()); for (ByteBuffer byteBuffer : source) { - values.add(byteBuffer == null ? null : readHashValue(byteBuffer)); + values.add(readHashValue(byteBuffer)); } return values; } diff --git a/src/test/java/org/springframework/data/redis/core/DefaultReactiveHashOperationsIntegrationTests.java b/src/test/java/org/springframework/data/redis/core/DefaultReactiveHashOperationsIntegrationTests.java index 354b7bd6c..a46926e05 100644 --- a/src/test/java/org/springframework/data/redis/core/DefaultReactiveHashOperationsIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/core/DefaultReactiveHashOperationsIntegrationTests.java @@ -166,6 +166,13 @@ public class DefaultReactiveHashOperationsIntegrationTests { .verifyComplete(); } + @Test // DATAREDIS-824 + public void getAbsentKey() { + + hashOperations.get(keyFactory.instance(), hashKeyFactory.instance()).as(StepVerifier::create) // + .verifyComplete(); + } + @Test // DATAREDIS-602 public void multiGet() { @@ -178,21 +185,28 @@ public class DefaultReactiveHashOperationsIntegrationTests { HK hashkey2 = hashKeyFactory.instance(); HV hashvalue2 = hashValueFactory.instance(); - StepVerifier.create(hashOperations.multiGet(key, Arrays.asList(hashkey1, hashkey2))) // - .consumeNextWith(actual -> { - assertThat(actual).hasSize(2).containsSequence(null, null); - }) // - .verifyComplete(); - putAll(key, hashkey1, hashvalue1, hashkey2, hashvalue2); - StepVerifier.create(hashOperations.multiGet(key, Arrays.asList(hashkey1, hashkey2))) // + hashOperations.multiGet(key, Arrays.asList(hashkey1, hashkey2)).as(StepVerifier::create) // .consumeNextWith(actual -> { assertThat(actual).hasSize(2).containsSequence(hashvalue1, hashvalue2); }) // .verifyComplete(); } + @Test // DATAREDIS-824 + public void multiGetAbsentKeys() { + + assumeTrue(hashKeyFactory instanceof StringObjectFactory && hashValueFactory instanceof StringObjectFactory); + + hashOperations.multiGet(keyFactory.instance(), Arrays.asList(hashKeyFactory.instance(), hashKeyFactory.instance())) + .as(StepVerifier::create) // + .consumeNextWith(actual -> { + assertThat(actual).hasSize(2).containsSequence(null, null); + }) // + .verifyComplete(); + } + @Test // DATAREDIS-602 public void increment() {