Skip to content

Commit b23e972

Browse files
eddiemcdaniel10-pulsaramp911de
authored andcommitted
DATAREDIS-1172 - Fix parameter type of hash value serializer in StreamReceiver.
Original pull request: spring-projects#542.
1 parent 9267f39 commit b23e972

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/main/java/org/springframework/data/redis/stream/StreamReceiver.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
* </pre>
9090
*
9191
* @author Mark Paluch
92+
* @author Eddie McDaniel
9293
* @param <K> Stream key and Stream field type.
9394
* @param <V> Stream value type.
9495
* @since 2.2
@@ -397,7 +398,7 @@ public <HK, HV> StreamReceiverOptionsBuilder<K, MapRecord<K, HK, HV>> hashKeySer
397398
*/
398399
@SuppressWarnings("unchecked")
399400
public <HK, HV> StreamReceiverOptionsBuilder<K, MapRecord<K, HK, HV>> hashValueSerializer(
400-
SerializationPair<HK> pair) {
401+
SerializationPair<HV> pair) {
401402

402403
Assert.notNull(pair, "SerializationPair must not be null");
403404

src/test/java/org/springframework/data/redis/stream/StreamReceiverIntegrationTests.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,22 @@
1717

1818
import static org.assertj.core.api.Assertions.*;
1919
import static org.junit.Assume.*;
20+
import static org.mockito.ArgumentMatchers.*;
2021

2122
import lombok.AllArgsConstructor;
2223
import lombok.Data;
2324
import reactor.core.publisher.Flux;
2425
import reactor.test.StepVerifier;
2526

27+
import java.nio.ByteBuffer;
2628
import java.time.Duration;
2729
import java.util.Collections;
2830

2931
import org.junit.AfterClass;
3032
import org.junit.Before;
3133
import org.junit.BeforeClass;
3234
import org.junit.Test;
35+
import org.mockito.Mockito;
3336
import org.springframework.data.redis.ConnectionFactoryTracker;
3437
import org.springframework.data.redis.RedisSystemException;
3538
import org.springframework.data.redis.RedisVersionUtils;
@@ -55,6 +58,7 @@
5558
* Integration tests for {@link StreamReceiver}.
5659
*
5760
* @author Mark Paluch
61+
* @author Eddie McDaniel
5862
*/
5963
public class StreamReceiverIntegrationTests {
6064

@@ -168,6 +172,31 @@ public void shouldReceiveObjectHashRecords() {
168172
.verify(Duration.ofSeconds(5));
169173
}
170174

175+
@Test // DATAREDIS-1172
176+
public void shouldReceiveCustomHashValueRecords() {
177+
178+
SerializationPair<Integer> serializationPair = Mockito.mock(SerializationPair.class);
179+
Mockito.when(serializationPair.read(any(ByteBuffer.class))).thenReturn(345920);
180+
181+
StreamReceiverOptions<String, MapRecord<String, String, Integer>> receiverOptions = StreamReceiverOptions.builder()
182+
.<String, Integer>hashValueSerializer(serializationPair).build();
183+
184+
StreamReceiver<String, MapRecord<String, String, Integer>> receiver = StreamReceiver.create(connectionFactory,
185+
receiverOptions);
186+
187+
Flux<MapRecord<String, String, Integer>> messages = receiver.receive(StreamOffset.fromStart("my-stream"));
188+
189+
messages.as(StepVerifier::create)
190+
.then(() -> reactiveRedisTemplate.opsForStream()
191+
.add("my-stream", Collections.singletonMap("Jesse", "Pinkman")).subscribe())
192+
.consumeNextWith(it -> {
193+
assertThat(it.getStream()).isEqualTo("my-stream");
194+
assertThat(it.getValue()).contains(entry("Jesse", 345920));
195+
})
196+
.thenCancel()
197+
.verify(Duration.ofSeconds(5));
198+
}
199+
171200
@Test // DATAREDIS-864
172201
public void latestModeLosesMessages() {
173202

0 commit comments

Comments
 (0)