diff --git a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java index f7156eb14..e7079ae03 100644 --- a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java +++ b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java @@ -563,6 +563,20 @@ public class BeanFactoryAwareFunctionRegistryTests { assertThat(f.get().getHeaders().get(MessageHeaders.CONTENT_TYPE)).isEqualTo(MimeTypeUtils.parseMimeType("text/*")); } + @Test + public void testGH_608_C() { + ApplicationContext context = new SpringApplicationBuilder(MessageFunctionConfiguration.class) + .run("--logging.level.org.springframework.cloud.function=DEBUG", + "--spring.main.lazy-initialization=true"); + FunctionCatalog catalog = context.getBean(FunctionCatalog.class); + + String productJson = "{\"key\":\"someKey\",\"data\": {\"name\":\"bike\"}}"; + + FunctionInvocationWrapper function = catalog.lookup("echoGenericObjectFlux", "application/json"); + Message result = ((Flux>) function.apply(productJson)).blockFirst(); + assertThat(new String(result.getPayload())).isEqualTo("\"bike\""); + } + @Test public void testGH_609() { FunctionCatalog catalog = this.configureCatalog(SampleFunctionConfiguration.class); @@ -822,6 +836,11 @@ public class BeanFactoryAwareFunctionRegistryTests { } }; } + + @Bean + public Function>>, Flux> echoGenericObjectFlux() { + return x -> x.map(eventMessage -> eventMessage.getPayload().getData().getName()); + } } @EnableAutoConfiguration