From 1e2aec68abc9fc239da8d174b70d86c79bc40f5b Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Sun, 19 Jul 2020 18:37:50 +0200 Subject: [PATCH] GH-2006 Add special handling of KafkaNull to SmartMessageMethodArgumentResolver --- .../config/SmartMessageMethodArgumentResolver.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/SmartMessageMethodArgumentResolver.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/SmartMessageMethodArgumentResolver.java index 6df0f6a25..67e2a78b2 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/SmartMessageMethodArgumentResolver.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/SmartMessageMethodArgumentResolver.java @@ -73,6 +73,9 @@ class SmartMessageMethodArgumentResolver extends MessageMethodArgumentResolver { } Object payload = message.getPayload(); if (isEmptyPayload(payload)) { + if (isExplicitNullPayload(payload)) { + return null; + } throw new MessageConversionException(message, "Cannot convert from actual payload type '" + ClassUtils.getDescriptiveType(payload) @@ -97,6 +100,7 @@ class SmartMessageMethodArgumentResolver extends MessageMethodArgumentResolver { return resolvableType.getGeneric().toClass(); } + @Override protected boolean isEmptyPayload(@Nullable Object payload) { if (payload == null) { return true; @@ -112,6 +116,11 @@ class SmartMessageMethodArgumentResolver extends MessageMethodArgumentResolver { } } + protected boolean isExplicitNullPayload(@Nullable Object payload) { + return "org.springframework.kafka.support.KafkaNull" + .equals(payload.getClass().getName()); + } + private Object convertPayload(Message message, MethodParameter parameter, Class targetPayloadType) { Object result = null;