GH-1225 Add additional Kotlin test to verify the regression

Resolves #1225
This commit is contained in:
Oleg Zhurakousky
2025-01-08 11:54:27 +01:00
parent 5b4c5578b7
commit 26b4a59f69
2 changed files with 19 additions and 1 deletions

View File

@@ -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);

View File

@@ -0,0 +1,11 @@
package org.springframework.cloud.function.kotlin
import org.springframework.messaging.Message
import org.springframework.stereotype.Component
@Component
class ComponentWithUnitReturn() : (Message<String>) -> Unit {
override fun invoke(message: Message<String>) {
println(message.payload)
}
}