28
28
import org .springframework .data .redis .connection .stream .RecordId ;
29
29
import org .springframework .data .redis .connection .stream .StreamRecords ;
30
30
import org .springframework .data .redis .hash .HashMapper ;
31
+ import org .springframework .data .redis .serializer .Jackson2JsonRedisSerializer ;
31
32
import org .springframework .data .redis .serializer .RedisSerializer ;
32
33
34
+ import java .io .Serializable ;
35
+
33
36
/**
34
37
* @author Christoph Strobl
38
+ * @author Romain Beghi
35
39
*/
36
40
public class StreamRecordsUnitTests {
37
41
38
42
static final String STRING_STREAM_KEY = "stream-key" ;
39
43
static final RecordId RECORD_ID = RecordId .of ("1-0" );
40
44
static final String STRING_MAP_KEY = "string-key" ;
41
45
static final String STRING_VAL = "string-val" ;
46
+ static final DummyObject OBJECT_VAL = new DummyObject ();
47
+
48
+ static final Jackson2JsonRedisSerializer <DummyObject > JSON_REDIS_SERIALIZER = new Jackson2JsonRedisSerializer <>(DummyObject .class );
42
49
43
50
static final byte [] SERIALIZED_STRING_VAL = RedisSerializer .string ().serialize (STRING_VAL );
44
51
static final byte [] SERIALIZED_STRING_MAP_KEY = RedisSerializer .string ().serialize (STRING_MAP_KEY );
45
52
static final byte [] SERIALIZED_STRING_STREAM_KEY = RedisSerializer .string ().serialize (STRING_STREAM_KEY );
53
+ static final byte [] SERIALIZED_OBJECT_VAL = JSON_REDIS_SERIALIZER .serialize (OBJECT_VAL );
54
+
55
+ private static class DummyObject implements Serializable {
56
+ private final Integer dummyId = 1 ;
57
+
58
+ public Integer getDummyId () {
59
+ return this .dummyId ;
60
+ }
61
+ }
46
62
47
63
@ Test // DATAREDIS-864
48
64
public void objectRecordToMapRecordViaHashMapper () {
@@ -71,7 +87,7 @@ public void mapRecordToObjectRecordViaHashMapper() {
71
87
}
72
88
73
89
@ Test // DATAREDIS-864
74
- public void serializeMapRecord () {
90
+ public void serializeMapRecordStringAsHashValue () {
75
91
76
92
MapRecord <String , String , String > source = Record .of (Collections .singletonMap (STRING_MAP_KEY , STRING_VAL ))
77
93
.withId (RECORD_ID ).withStreamKey (STRING_STREAM_KEY );
@@ -84,6 +100,20 @@ public void serializeMapRecord() {
84
100
assertThat (target .getValue ().values ().iterator ().next ()).isEqualTo (SERIALIZED_STRING_VAL );
85
101
}
86
102
103
+ @ Test // DATAREDIS-993
104
+ public void serializeMapRecordObjectAsHashValue () {
105
+
106
+ MapRecord <String , String , DummyObject > source = Record .of (Collections .singletonMap (STRING_MAP_KEY , OBJECT_VAL ))
107
+ .withId (RECORD_ID ).withStreamKey (STRING_STREAM_KEY );
108
+
109
+ ByteRecord target = source .serialize (RedisSerializer .string (), RedisSerializer .string (), JSON_REDIS_SERIALIZER );
110
+
111
+ assertThat (target .getId ()).isEqualTo (RECORD_ID );
112
+ assertThat (target .getStream ()).isEqualTo (SERIALIZED_STRING_STREAM_KEY );
113
+ assertThat (target .getValue ().keySet ().iterator ().next ()).isEqualTo (SERIALIZED_STRING_MAP_KEY );
114
+ assertThat (target .getValue ().values ().iterator ().next ()).isEqualTo (SERIALIZED_OBJECT_VAL );
115
+ }
116
+
87
117
@ Test // DATAREDIS-864
88
118
public void deserializeByteMapRecord () {
89
119
0 commit comments