GH-1063 Fix header propagation in composed function

Resolves #1063
This commit is contained in:
Oleg Zhurakousky
2023-09-25 13:11:59 +02:00
parent 1b0a5e38af
commit afb419d701
2 changed files with 32 additions and 0 deletions

View File

@@ -61,6 +61,7 @@ import org.springframework.cloud.function.json.JacksonMapper;
import org.springframework.cloud.function.json.JsonMapper;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.ResolvableType;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.support.DefaultConversionService;
@@ -566,6 +567,14 @@ public class SimpleFunctionRegistryTests {
assertThat(FunctionTypeUtils.isMono(function.getOutputType()));
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Test
public void testHeaderPropagationInComposedFunction() {
FunctionCatalog catalog = this.configureCatalog(GH_1063_Configuration.class);
Consumer function = catalog.lookup("uppercase|reverse|print");
function.accept("hello");
}
@Test
public void testFunctionCompositionWithReactiveSupplierAndConsumer() {
SimpleFunctionRegistry catalog = new SimpleFunctionRegistry(this.conversionService, this.messageConverter,
@@ -836,4 +845,24 @@ public class SimpleFunctionRegistryTests {
}
}
@EnableAutoConfiguration
@Configuration
public static class GH_1063_Configuration {
@Bean
Function<String, Message<String>> uppercase() {
return input -> MessageBuilder.withPayload(input).setHeader("FOO", "BAR").build();
}
@Bean
Function<String, String> reverse() {
return payload -> new StringBuilder(payload).reverse().toString();
}
@Bean
Consumer<Message<String>> print() {
return msg -> assertThat(msg.getHeaders().get("FOO")).isEqualTo("BAR");
}
}
}