diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/json/MessageJacksonDeserializer.java b/spring-integration-core/src/main/java/org/springframework/integration/support/json/MessageJacksonDeserializer.java index fcccc08616..cab8f60bb5 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/json/MessageJacksonDeserializer.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/json/MessageJacksonDeserializer.java @@ -1,5 +1,5 @@ /* - * Copyright 2017-2021 the original author or authors. + * Copyright 2017-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,11 +24,13 @@ import org.springframework.integration.support.MutableMessageHeaders; import org.springframework.messaging.Message; import org.springframework.util.Assert; +import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.deser.std.StdNodeBasedDeserializer; +import com.fasterxml.jackson.databind.jsontype.TypeDeserializer; import com.fasterxml.jackson.databind.type.TypeFactory; /** @@ -66,6 +68,13 @@ public abstract class MessageJacksonDeserializer> extends S return this.mapper; } + @Override + public Object deserializeWithType(JsonParser jp, DeserializationContext ctxt, TypeDeserializer td) + throws IOException { + + return super.deserialize(jp, ctxt); + } + @Override public T convert(JsonNode root, DeserializationContext ctxt) throws IOException { Map headers = this.mapper.readValue(root.get("headers").traverse(), diff --git a/spring-integration-redis/src/test/java/org/springframework/integration/redis/store/RedisChannelMessageStoreTests.java b/spring-integration-redis/src/test/java/org/springframework/integration/redis/store/RedisChannelMessageStoreTests.java index 351974b30d..b3cada21dc 100644 --- a/spring-integration-redis/src/test/java/org/springframework/integration/redis/store/RedisChannelMessageStoreTests.java +++ b/spring-integration-redis/src/test/java/org/springframework/integration/redis/store/RedisChannelMessageStoreTests.java @@ -28,7 +28,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; -import org.springframework.data.redis.serializer.JacksonObjectWriter; import org.springframework.integration.IntegrationMessageHeaderAccessor; import org.springframework.integration.channel.NullChannel; import org.springframework.integration.history.MessageHistory; @@ -185,10 +184,7 @@ class RedisChannelMessageStoreTests implements RedisContainerTest { void testJsonSerialization() { RedisChannelMessageStore store = new RedisChannelMessageStore(RedisContainerTest.connectionFactory()); ObjectMapper mapper = JacksonJsonUtils.messagingAwareMapper(); - GenericJackson2JsonRedisSerializer serializer = - new GenericJackson2JsonRedisSerializer(mapper, - (mapper1, source, type) -> mapper1.readValue(source, Object.class), - JacksonObjectWriter.create()); + GenericJackson2JsonRedisSerializer serializer = new GenericJackson2JsonRedisSerializer(mapper); store.setValueSerializer(serializer); Message genericMessage = new GenericMessage<>(new Date());