From 38981003b911477681762229b04c0cb328066010 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Wed, 31 Jul 2019 08:28:34 +0200 Subject: [PATCH] Simplified MessageConverter configuration --- ...ntextFunctionCatalogAutoConfiguration.java | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) 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 b70ec0c78..0d59c7628 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 @@ -46,12 +46,12 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.support.DefaultConversionService; -import org.springframework.lang.Nullable; import org.springframework.messaging.converter.ByteArrayMessageConverter; import org.springframework.messaging.converter.CompositeMessageConverter; import org.springframework.messaging.converter.MappingJackson2MessageConverter; import org.springframework.messaging.converter.MessageConverter; import org.springframework.messaging.converter.StringMessageConverter; +import org.springframework.util.CollectionUtils; /** @@ -68,18 +68,29 @@ public class ContextFunctionCatalogAutoConfiguration { static final String PREFERRED_MAPPER_PROPERTY = "spring.http.converters.preferred-json-mapper"; @Bean - public FunctionRegistry functionCatalog(@Nullable CompositeMessageConverter messageConverter, - Map additionalConverters) { + public FunctionRegistry functionCatalog(Map messageConverters) { ConversionService conversionService = new DefaultConversionService(); - if (messageConverter == null) { - List messageConverters = new ArrayList<>(); - messageConverters.addAll(additionalConverters.values()); - messageConverters.add(new MappingJackson2MessageConverter()); - messageConverters.add(new ByteArrayMessageConverter()); - messageConverters.add(new StringMessageConverter()); - messageConverter = new CompositeMessageConverter(messageConverters); - } + CompositeMessageConverter messageConverter = null; + List mcList = new ArrayList<>(); + boolean addDefaultConverters = true; + if (!CollectionUtils.isEmpty(messageConverters)) { + for (MessageConverter mc : messageConverters.values()) { + if (mc instanceof CompositeMessageConverter) { + mcList.addAll(((CompositeMessageConverter) mc).getConverters()); + addDefaultConverters = false; + } + else { + mcList.add(mc); + } + } + } + if (addDefaultConverters) { + mcList.add(new MappingJackson2MessageConverter()); + mcList.add(new ByteArrayMessageConverter()); + mcList.add(new StringMessageConverter()); + } + messageConverter = new CompositeMessageConverter(mcList); return new BeanFactoryAwareFunctionRegistry(conversionService, messageConverter); }