diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfiguration.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfiguration.java index 06155623d..e5371b35c 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfiguration.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfiguration.java @@ -219,8 +219,8 @@ public class ContextFunctionCatalogAutoConfiguration { } catch (Exception e) { mapper = new ObjectMapper(); - mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); } + mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); return new JacksonMapper(mapper); } } 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 ebeb9dd94..878054aa9 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 @@ -106,6 +106,15 @@ public class BeanFactoryAwareFunctionRegistryTests { System.clearProperty("spring.cloud.function.definition"); } + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Test + public void testEmptyPojoConversion() { + FunctionCatalog catalog = this.configureCatalog(EmptyPojoConfiguratioin.class); + Function function = catalog.lookup("echo"); + String result = (String) function.apply(MessageBuilder.withPayload(new EmptyPojo()).build()); + assertThat(result).isEqualTo("{}"); + } + @Test public void testFunctionEligibilityFiltering() { System.setProperty("spring.cloud.function.ineligible-definitions", "asJsonNode"); @@ -1433,4 +1442,17 @@ public class BeanFactoryAwareFunctionRegistryTests { this.data = data; } } + @EnableAutoConfiguration + @Configuration + public static class EmptyPojoConfiguratioin { + + @Bean + public Function echo() { + return v -> v; + } + } + + public static class EmptyPojo { + + } }