GH-587 Add support for inferring 'accept' content type for simple types

This fix also introduces new Function property 'accept' with no default value which implicitely would default to application/json unless the output type of the function is String at which point it would default to text/plain. However, if it was explicitely set in FunctionProperties it will be used regardless of the function output type.
Resolves #587
This commit is contained in:
Oleg Zhurakousky
2020-09-16 18:14:40 +02:00
parent e1adb011ab
commit d3afd1fea4
7 changed files with 86 additions and 50 deletions

View File

@@ -20,6 +20,7 @@ package org.springframework.cloud.function.context.catalog;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -56,7 +57,6 @@ import org.springframework.messaging.converter.MessageConverter;
import org.springframework.messaging.support.GenericMessage;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.MimeType;
import org.springframework.util.ReflectionUtils;
@@ -532,13 +532,13 @@ public class BeanFactoryAwareFunctionRegistryTests {
@Bean
public Function<String, List<String>> parseToList() {
return v -> CollectionUtils.arrayToList(v.split(","));
return v -> Arrays.asList(v.split(","));
}
@Bean
public Function<String, List<Message<String>>> parseToListOfMessages() {
return v -> {
List<Message<String>> list = (List<Message<String>>) CollectionUtils.arrayToList(v.split(",")).stream()
List<Message<String>> list = Arrays.asList(v.split(",")).stream()
.map(value -> MessageBuilder.withPayload(value).build()).collect(Collectors.toList());
return list;
};