Skip to content

Commit c313d38

Browse files
committed
GH-1300 Add test for post processing Kotlin functions
1 parent 5d2d981 commit c313d38

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

spring-cloud-function-kotlin/src/test/java/org/springframework/cloud/function/kotlin/ContextFunctionCatalogAutoConfigurationKotlinTests.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.springframework.cloud.function.context.FunctionCatalog;
3030
import org.springframework.cloud.function.context.catalog.FunctionTypeUtils;
3131
import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry.FunctionInvocationWrapper;
32+
import org.springframework.cloud.function.context.config.KotlinLambdaToFunctionAutoConfiguration;
3233
import org.springframework.context.annotation.Bean;
3334
import org.springframework.context.annotation.Configuration;
3435
import org.springframework.context.support.GenericApplicationContext;
@@ -59,11 +60,21 @@ public void typeDiscoveryTests() {
5960
create(new Class[] { KotlinLambdasConfiguration.class,
6061
SimpleConfiguration.class,
6162
KotlinComponentFunction.class,
63+
KotlinPostProcessingFunction.class,
6264
ComponentUppercase.class,
6365
ComponentWithUnitReturn.class});
6466

6567
FunctionCatalog functionCatalog = this.context.getBean(FunctionCatalog.class);
6668

69+
// Test post-processing logic
70+
FunctionInvocationWrapper kotlinPostProcessingFunction = functionCatalog.lookup("kotlinPostProcessingFunction");
71+
kotlinPostProcessingFunction.apply("bob");
72+
kotlinPostProcessingFunction.postProcess();
73+
KotlinPostProcessingFunction postProcessingFunction = (KotlinPostProcessingFunction)
74+
((KotlinLambdaToFunctionAutoConfiguration.KotlinFunctionWrapper) kotlinPostProcessingFunction.getTarget()).getKotlinLambdaTarget();
75+
assertThat(postProcessingFunction.getInvoked()).isTrue();
76+
// End test post-processing logic
77+
6778
FunctionInvocationWrapper kotlinComponentFunction = functionCatalog.lookup("kotlinComponentFunction");
6879
assertThat(kotlinComponentFunction.isFunction()).isTrue();
6980
assertThat(kotlinComponentFunction.getInputType().getTypeName()).isEqualTo("java.lang.String");
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.springframework.cloud.function.kotlin
2+
3+
import org.springframework.cloud.function.context.PostProcessingFunction
4+
import org.springframework.messaging.Message
5+
import org.springframework.stereotype.Component
6+
import java.util.function.Function
7+
8+
@Component
9+
class KotlinPostProcessingFunction : PostProcessingFunction<String, String> {
10+
11+
var invoked = false
12+
13+
override fun apply(t: String): String {
14+
return t.uppercase();
15+
}
16+
17+
override fun postProcess(result: Message<String>?) {
18+
invoked = true;
19+
}
20+
}

0 commit comments

Comments
 (0)