|
18 | 18 |
|
19 | 19 | import static org.assertj.core.api.Assertions.assertThat;
|
20 | 20 |
|
| 21 | +import java.util.ArrayList; |
| 22 | +import java.util.Date; |
| 23 | +import java.util.List; |
| 24 | + |
21 | 25 | import org.junit.jupiter.api.AfterEach;
|
22 | 26 | import org.junit.jupiter.api.BeforeEach;
|
23 | 27 | import org.junit.jupiter.api.Test;
|
24 | 28 |
|
25 | 29 | import org.springframework.beans.factory.annotation.Autowired;
|
| 30 | +import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; |
| 31 | +import org.springframework.data.redis.serializer.JacksonObjectWriter; |
26 | 32 | import org.springframework.integration.IntegrationMessageHeaderAccessor;
|
| 33 | +import org.springframework.integration.channel.NullChannel; |
| 34 | +import org.springframework.integration.history.MessageHistory; |
27 | 35 | import org.springframework.integration.redis.RedisContainerTest;
|
| 36 | +import org.springframework.integration.store.MessageGroup; |
28 | 37 | import org.springframework.integration.support.MessageBuilder;
|
29 | 38 | import org.springframework.integration.support.MutableMessageBuilder;
|
| 39 | +import org.springframework.integration.support.json.JacksonJsonUtils; |
30 | 40 | import org.springframework.messaging.Message;
|
31 | 41 | import org.springframework.messaging.PollableChannel;
|
32 | 42 | import org.springframework.messaging.support.GenericMessage;
|
33 | 43 | import org.springframework.test.annotation.DirtiesContext;
|
34 | 44 | import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
35 | 45 |
|
| 46 | +import com.fasterxml.jackson.databind.ObjectMapper; |
| 47 | + |
36 | 48 | /**
|
37 | 49 | * @author Gary Russell
|
38 | 50 | * @author Artem Bilan
|
@@ -169,4 +181,29 @@ void testPriority() {
|
169 | 181 | assertThat(this.priorityCms.messageGroupSize("priorityCms:testChannel3")).isZero();
|
170 | 182 | }
|
171 | 183 |
|
| 184 | + @Test |
| 185 | + void testJsonSerialization() { |
| 186 | + RedisChannelMessageStore store = new RedisChannelMessageStore(RedisContainerTest.connectionFactory()); |
| 187 | + ObjectMapper mapper = JacksonJsonUtils.messagingAwareMapper(); |
| 188 | + GenericJackson2JsonRedisSerializer serializer = |
| 189 | + new GenericJackson2JsonRedisSerializer(mapper, |
| 190 | + (mapper1, source, type) -> mapper1.readValue(source, Object.class), |
| 191 | + JacksonObjectWriter.create()); |
| 192 | + store.setValueSerializer(serializer); |
| 193 | + |
| 194 | + Message<?> genericMessage = new GenericMessage<>(new Date()); |
| 195 | + NullChannel testComponent = new NullChannel(); |
| 196 | + testComponent.setBeanName("testChannel"); |
| 197 | + genericMessage = MessageHistory.write(genericMessage, testComponent); |
| 198 | + |
| 199 | + String groupId = "jsonMessagesStore"; |
| 200 | + |
| 201 | + store.addMessageToGroup(groupId, genericMessage); |
| 202 | + MessageGroup messageGroup = store.getMessageGroup(groupId); |
| 203 | + assertThat(messageGroup.size()).isEqualTo(1); |
| 204 | + List<Message<?>> messages = new ArrayList<>(messageGroup.getMessages()); |
| 205 | + assertThat(messages.get(0)).isEqualTo(genericMessage); |
| 206 | + assertThat(messages.get(0).getHeaders()).containsKeys(MessageHistory.HEADER_NAME); |
| 207 | + } |
| 208 | + |
172 | 209 | }
|
0 commit comments