From d1a0aff623cbe052d067cd3c68b5896deba88c21 Mon Sep 17 00:00:00 2001 From: Soby Chacko Date: Fri, 29 Sep 2023 17:00:07 -0400 Subject: [PATCH] GH-2820: Component beans and function return types - When Kafka Streams functions are provided as component beans, the function type check in the core Spring Cloud Stream framework, fails with an NPE. Addressing this issue. Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2820 --- .../cloud/stream/function/FunctionConfiguration.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/FunctionConfiguration.java b/core/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/FunctionConfiguration.java index 0d46a5a32..f675caa72 100644 --- a/core/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/FunctionConfiguration.java +++ b/core/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/FunctionConfiguration.java @@ -1026,11 +1026,15 @@ public class FunctionConfiguration { if (this.applicationContext.containsBean(functionName)) { Object functionBean = this.applicationContext.getBean(functionName); Type functionType = FunctionTypeUtils.discoverFunctionType(functionBean, functionName, (GenericApplicationContext) this.applicationContext); - String functionTypeStringValue = functionType.toString(); - if (functionTypeStringValue.contains("KTable") || functionTypeStringValue.contains("KStream")) { + if (functionType == null) { eligibleDefinition = false; } - + else { + String functionTypeStringValue = functionType.toString(); + if (functionTypeStringValue.contains("KTable") || functionTypeStringValue.contains("KStream")) { + eligibleDefinition = false; + } + } } else { logger.warn("You have defined function definition that does not exist: " + functionName);