From 3a52c3b3cf85c479294886f57844a75e6ddeeefd Mon Sep 17 00:00:00 2001 From: Soby Chacko Date: Fri, 29 Sep 2023 16:14:08 -0400 Subject: [PATCH] GH-2821: Kafka Streams branching as Component bean - When Kafka Streams branching function is provided as a Component bean, there is an issue where the raw class check on the return outbound resolvable type cuases an NPE. Fixing this issue by adding a null check on the return type's raw class. Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2821 --- .../streams/function/KafkaStreamsBindableProxyFactory.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/binders/kafka-binder/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/function/KafkaStreamsBindableProxyFactory.java b/binders/kafka-binder/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/function/KafkaStreamsBindableProxyFactory.java index 80806e92b..791457c24 100644 --- a/binders/kafka-binder/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/function/KafkaStreamsBindableProxyFactory.java +++ b/binders/kafka-binder/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/function/KafkaStreamsBindableProxyFactory.java @@ -209,7 +209,8 @@ public class KafkaStreamsBindableProxyFactory extends AbstractBindableProxyFacto if (bean != null && (BiFunction.class.isAssignableFrom(bean.getClass()) || BiConsumer.class.isAssignableFrom(bean.getClass()))) { numberOfInputs = 2; } - else if (returnType.getRawClass().isAssignableFrom(Function.class) || returnType.getRawClass().isAssignableFrom(Consumer.class)) { + else if (returnType.getRawClass() != null && (returnType.getRawClass().isAssignableFrom(Function.class) + || returnType.getRawClass().isAssignableFrom(Consumer.class))) { numberOfInputs = 1; ResolvableType arg1 = returnType;