From 26b4a59f6913fe0d89eecb950d6c9d9c11e6b560 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Wed, 8 Jan 2025 11:54:27 +0100 Subject: [PATCH] GH-1225 Add additional Kotlin test to verify the regression Resolves #1225 --- ...xtFunctionCatalogAutoConfigurationKotlinTests.java | 9 ++++++++- .../cloud/function/kotlin/ComponentWithUnitReturn.kt | 11 +++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 spring-cloud-function-kotlin/src/test/kotlin/org/springframework/cloud/function/kotlin/ComponentWithUnitReturn.kt diff --git a/spring-cloud-function-kotlin/src/test/java/org/springframework/cloud/function/kotlin/ContextFunctionCatalogAutoConfigurationKotlinTests.java b/spring-cloud-function-kotlin/src/test/java/org/springframework/cloud/function/kotlin/ContextFunctionCatalogAutoConfigurationKotlinTests.java index 5954bf4c8..ae28d985d 100644 --- a/spring-cloud-function-kotlin/src/test/java/org/springframework/cloud/function/kotlin/ContextFunctionCatalogAutoConfigurationKotlinTests.java +++ b/spring-cloud-function-kotlin/src/test/java/org/springframework/cloud/function/kotlin/ContextFunctionCatalogAutoConfigurationKotlinTests.java @@ -32,6 +32,8 @@ import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.GenericApplicationContext; +import org.springframework.core.ResolvableType; +import org.springframework.messaging.Message; import org.springframework.messaging.support.MessageBuilder; import static org.assertj.core.api.Assertions.assertThat; @@ -57,7 +59,8 @@ public class ContextFunctionCatalogAutoConfigurationKotlinTests { create(new Class[] { KotlinLambdasConfiguration.class, SimpleConfiguration.class, KotlinComponentFunction.class, - ComponentUppercase.class}); + ComponentUppercase.class, + ComponentWithUnitReturn.class}); FunctionCatalog functionCatalog = this.context.getBean(FunctionCatalog.class); @@ -72,6 +75,10 @@ public class ContextFunctionCatalogAutoConfigurationKotlinTests { assertThat(kotlinFunction.getInputType()).isEqualTo(String.class); assertThat(kotlinFunction.getOutputType()).isEqualTo(String.class); + FunctionInvocationWrapper componentWithUnitReturn = functionCatalog.lookup("componentWithUnitReturn"); + assertThat(componentWithUnitReturn.isConsumer()).isTrue(); + assertThat(componentWithUnitReturn.getInputType()).isEqualTo(ResolvableType.forClassWithGenerics(Message.class, String.class).getType()); + FunctionInvocationWrapper kotlinConsumer = functionCatalog.lookup("kotlinConsumer"); assertThat(kotlinConsumer.isConsumer()).isTrue(); assertThat(kotlinConsumer.getInputType()).isEqualTo(String.class); diff --git a/spring-cloud-function-kotlin/src/test/kotlin/org/springframework/cloud/function/kotlin/ComponentWithUnitReturn.kt b/spring-cloud-function-kotlin/src/test/kotlin/org/springframework/cloud/function/kotlin/ComponentWithUnitReturn.kt new file mode 100644 index 000000000..93950d9bf --- /dev/null +++ b/spring-cloud-function-kotlin/src/test/kotlin/org/springframework/cloud/function/kotlin/ComponentWithUnitReturn.kt @@ -0,0 +1,11 @@ +package org.springframework.cloud.function.kotlin + +import org.springframework.messaging.Message +import org.springframework.stereotype.Component + +@Component +class ComponentWithUnitReturn() : (Message) -> Unit { + override fun invoke(message: Message) { + println(message.payload) + } +}