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