From e2788fbab0dd86f7ffad1110bb5844e6f13d57bb Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Mon, 23 Nov 2020 20:25:18 +0100 Subject: [PATCH] GH-611 Add test to ensure there is no regression Resolves #611 --- ...BeanFactoryAwareFunctionRegistryTests.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java index b4a8b5646..bfd4ab9de 100644 --- a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java +++ b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java @@ -59,6 +59,7 @@ import org.springframework.messaging.support.GenericMessage; import org.springframework.messaging.support.MessageBuilder; import org.springframework.stereotype.Component; import org.springframework.util.MimeType; +import org.springframework.util.MimeTypeUtils; import org.springframework.util.ReflectionUtils; import static java.util.Collections.singletonList; @@ -531,6 +532,13 @@ public class BeanFactoryAwareFunctionRegistryTests { assertThat(((Person) config.consumerInputRef.get()).getName()).isEqualTo("Ricky"); } + @Test + public void testGH_611() { + FunctionCatalog catalog = this.configureCatalog(NegotiatingMessageConverterConfiguration.class); + Supplier> f = catalog.lookup("supplier", "text/*"); + assertThat(f.get().getHeaders().get(MessageHeaders.CONTENT_TYPE)).isEqualTo(MimeTypeUtils.parseMimeType("text/*")); + } + @Test public void testGH_609() { FunctionCatalog catalog = this.configureCatalog(SampleFunctionConfiguration.class); @@ -605,6 +613,11 @@ public class BeanFactoryAwareFunctionRegistryTests { @EnableAutoConfiguration public static class NegotiatingMessageConverterConfiguration { + @Bean + public Supplier supplier() { + return () -> 123; + } + @Bean public Function echo() { return v -> v; @@ -620,6 +633,38 @@ public class BeanFactoryAwareFunctionRegistryTests { return new ConverterB(); } + @Bean + public MessageConverter messageConverterC() { + return new ConverterC(); + } + + public static class ConverterC extends ConverterA { + ConverterC() { + super("text/*"); + } + + @Override + protected Object convertFromInternal( + Message message, Class targetClass, @Nullable Object conversionHint) { + return message.getPayload().toString(); + } + + @Override + public Object convertToInternal(Object rawPayload, MessageHeaders headers, Object conversionHint) { + return rawPayload; + } + + @Override + protected boolean canConvertFrom(Message message, @Nullable Class targetClass) { + return supportsMimeType(message.getHeaders()) && Integer.class.isAssignableFrom(targetClass) + && message.getPayload() instanceof Integer; + } + + @Override + protected boolean canConvertTo(Object payload, @Nullable MessageHeaders headers) { + return payload instanceof Integer; + } + } public static class ConverterB extends ConverterA { ConverterB() {