From e95279daaeb3ad6c5ed8ab48b814b40c48971fe2 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Tue, 3 Nov 2020 15:38:27 +0100 Subject: [PATCH] Polish to fix build --- .../cloud/function/adapter/aws/SpringBootRequestHandler.java | 4 ++++ .../function/context/catalog/SimpleFunctionRegistry.java | 3 +++ .../config/ContextFunctionCatalogAutoConfiguration.java | 5 +++-- .../context/config/ContextFunctionCatalogInitializer.java | 4 ++-- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootRequestHandler.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootRequestHandler.java index d3505162b..95bb543ec 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootRequestHandler.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootRequestHandler.java @@ -28,6 +28,7 @@ import reactor.core.publisher.Flux; import org.springframework.cloud.function.context.AbstractSpringFunctionAdapterInitializer; import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry.FunctionInvocationWrapper; +import org.springframework.messaging.Message; /** * @param event type @@ -61,6 +62,9 @@ public class SpringBootRequestHandler extends AbstractSpringFunctionAdapte protected T result(Object input, Publisher output) { List result = new ArrayList<>(); for (Object value : Flux.from(output).toIterable()) { + if (value instanceof Message && !((FunctionInvocationWrapper) this.function()).isOutputTypeMessage()) { + value = ((Message) value).getPayload(); + } result.add(convertOutput(value)); } if (isSingleValue(input) && result.size() == 1) { diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java index e103c2d53..5f44ae6b8 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java @@ -729,6 +729,9 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect * */ private Object convertInputIfNecessary(Object input, Type type) { + if (type == null) { + return input; + } if (this.getRawClassFor(type) == Void.class && !(input instanceof Publisher) && !(input instanceof Message)) { logger.info("Input value '" + input + "' is ignored for function '" + this.functionDefinition + "' since it's input type is Void and as such it is treated as Supplier."); 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 36632d8b1..8aaa824f6 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 @@ -95,10 +95,11 @@ public class ContextFunctionCatalogAutoConfiguration { mcList = mcList.stream() .filter(c -> isConverterEligible(c)) .collect(Collectors.toList()); - mcList.add(new StringMessageConverter()); - mcList.add(new PrimitiveTypesFromStringMessageConverter(conversionService)); + mcList.add(new JsonMessageConverter(jsonMapper)); mcList.add(new ByteArrayMessageConverter()); + mcList.add(new StringMessageConverter()); + mcList.add(new PrimitiveTypesFromStringMessageConverter(conversionService)); if (!CollectionUtils.isEmpty(mcList)) { diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogInitializer.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogInitializer.java index 20dd26aad..87d014f33 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogInitializer.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogInitializer.java @@ -170,10 +170,10 @@ public class ContextFunctionCatalogInitializer implements ApplicationContextInit List messageConverters = new ArrayList<>(); JsonMapper jsonMapper = this.context.getBean(JsonMapper.class); - messageConverters.add(new StringMessageConverter()); - messageConverters.add(new PrimitiveTypesFromStringMessageConverter(new DefaultConversionService())); messageConverters.add(new JsonMessageConverter(jsonMapper)); messageConverters.add(new ByteArrayMessageConverter()); + messageConverters.add(new StringMessageConverter()); + messageConverters.add(new PrimitiveTypesFromStringMessageConverter(new DefaultConversionService())); SmartCompositeMessageConverter messageConverter = new SmartCompositeMessageConverter(messageConverters);