From 005d87181f571e2bb4201280c88bb4410be21dad Mon Sep 17 00:00:00 2001 From: Eric Bottard Date: Mon, 3 Feb 2020 16:21:02 +0100 Subject: [PATCH] Throw identifiable exceptions on input/output conversion failure. --- .../BeanFactoryAwareFunctionRegistry.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java index c6f41b41b..6090abecf 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java @@ -71,6 +71,7 @@ import org.springframework.lang.Nullable; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.converter.CompositeMessageConverter; +import org.springframework.messaging.converter.MessageConversionException; import org.springframework.messaging.support.GenericMessage; import org.springframework.messaging.support.MessageBuilder; import org.springframework.util.Assert; @@ -94,6 +95,16 @@ public class BeanFactoryAwareFunctionRegistry private static Log logger = LogFactory.getLog(BeanFactoryAwareFunctionRegistry.class); + /** + * Identifies MessageConversionExceptions that happen when input can't be converted. + */ + public static final String COULD_NOT_CONVERT_INPUT = "Could Not Convert Input"; + + /** + * Identifies MessageConversionExceptions that happen when output can't be converted. + */ + public static final String COULD_NOT_CONVERT_OUTPUT = "Could Not Convert Output"; + private ConfigurableApplicationContext applicationContext; private final Map> registrationsByFunction = new HashMap<>(); @@ -655,7 +666,10 @@ public class BeanFactoryAwareFunctionRegistry } } } - return convertedValue != null ? convertedValue : value; + if (convertedValue == null) { + throw new MessageConversionException(COULD_NOT_CONVERT_OUTPUT); + } + return convertedValue; } @@ -764,6 +778,9 @@ public class BeanFactoryAwareFunctionRegistry if (logger.isDebugEnabled()) { logger.debug("Converted input value " + convertedValue); } + if (convertedValue == null) { + throw new MessageConversionException(COULD_NOT_CONVERT_INPUT); + } return convertedValue; }