@@ -18,7 +18,6 @@ package org.springframework.cloud.function.context.config;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.springframework.cloud.function.cloudevent.CloudEventMessageUtils;
|
||||
import org.springframework.cloud.function.json.JsonMapper;
|
||||
@@ -76,9 +75,6 @@ public class JsonMessageConverter extends AbstractMessageConverter {
|
||||
|
||||
@Override
|
||||
protected Object convertFromInternal(Message<?> message, Class<?> targetClass, @Nullable Object conversionHint) {
|
||||
if (targetClass.isInstance(message.getPayload()) && !(message.getPayload() instanceof Collection<?>)) {
|
||||
return message.getPayload();
|
||||
}
|
||||
Type convertToType = conversionHint == null ? targetClass : (Type) conversionHint;
|
||||
if (targetClass == byte[].class && message.getPayload() instanceof String) {
|
||||
return ((String) message.getPayload()).getBytes(StandardCharsets.UTF_8);
|
||||
|
||||
@@ -45,6 +45,9 @@ public class SmartCompositeMessageConverter extends CompositeMessageConverter {
|
||||
@Nullable
|
||||
public Object fromMessage(Message<?> message, Class<?> targetClass) {
|
||||
for (MessageConverter converter : getConverters()) {
|
||||
if (targetClass.isInstance(message.getPayload()) && !(message.getPayload() instanceof Collection<?>)) {
|
||||
return message.getPayload();
|
||||
}
|
||||
Object result = converter.fromMessage(message, targetClass);
|
||||
if (result != null) {
|
||||
return result;
|
||||
@@ -57,6 +60,9 @@ public class SmartCompositeMessageConverter extends CompositeMessageConverter {
|
||||
@Nullable
|
||||
public Object fromMessage(Message<?> message, Class<?> targetClass, @Nullable Object conversionHint) {
|
||||
for (MessageConverter converter : getConverters()) {
|
||||
if (targetClass.isInstance(message.getPayload()) && !(message.getPayload() instanceof Collection<?>)) {
|
||||
return message.getPayload();
|
||||
}
|
||||
Object result = (converter instanceof SmartMessageConverter ?
|
||||
((SmartMessageConverter) converter).fromMessage(message, targetClass, conversionHint) :
|
||||
converter.fromMessage(message, targetClass));
|
||||
|
||||
@@ -49,6 +49,7 @@ import org.springframework.cloud.function.context.FunctionType;
|
||||
import org.springframework.cloud.function.context.HybridFunctionalRegistrationTests.UppercaseFunction;
|
||||
import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry.FunctionInvocationWrapper;
|
||||
import org.springframework.cloud.function.context.config.JsonMessageConverter;
|
||||
import org.springframework.cloud.function.context.config.SmartCompositeMessageConverter;
|
||||
import org.springframework.cloud.function.json.GsonMapper;
|
||||
import org.springframework.cloud.function.json.JacksonMapper;
|
||||
import org.springframework.cloud.function.json.JsonMapper;
|
||||
@@ -87,7 +88,7 @@ public class SimpleFunctionRegistryTests {
|
||||
messageConverters.add(new JsonMessageConverter(jsonMapper));
|
||||
messageConverters.add(new ByteArrayMessageConverter());
|
||||
messageConverters.add(new StringMessageConverter());
|
||||
this.messageConverter = new CompositeMessageConverter(messageConverters);
|
||||
this.messageConverter = new SmartCompositeMessageConverter(messageConverters);
|
||||
|
||||
this.conversionService = new DefaultConversionService();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user