GH-1117 Enhance support for function composition to handle null returns

Resolves #1117
This commit is contained in:
Oleg Zhurakousky
2024-03-27 19:05:21 +01:00
parent 8745f32ac2
commit d70079eb4d
2 changed files with 30 additions and 1 deletions

View File

@@ -115,6 +115,15 @@ public class BeanFactoryAwareFunctionRegistryTests {
assertThat(result).isEqualTo("{}");
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Test
public void testCompositionWithNullReturnInBetween() {
FunctionCatalog catalog = this.configureCatalog(CompositionWithNullReturnInBetween.class);
Function function = catalog.lookup("echo1|echo2");
String result = (String) function.apply(MessageBuilder.withPayload(new EmptyPojo()).build());
assertThat(result).isEqualTo("null");
}
@Test
public void testFunctionEligibilityFiltering() {
System.setProperty("spring.cloud.function.ineligible-definitions", "asJsonNode");
@@ -1455,4 +1464,24 @@ public class BeanFactoryAwareFunctionRegistryTests {
public static class EmptyPojo {
}
@EnableAutoConfiguration
@Configuration
public static class CompositionWithNullReturnInBetween {
@Bean
public Function<String, String> echo1() {
return v -> null;
}
@Bean
public Function<String, String> echo2() {
return v -> {
if (v == null) {
return "null";
}
return v;
};
}
}
}