@@ -753,11 +753,6 @@ public class SimpleFunctionRegistry implements FunctionRegistry {
|
||||
if (functionInvocationHelper != null && CloudEventMessageUtils.isCloudEvent(((Message) input))) {
|
||||
result = functionInvocationHelper.postProcessResult(result, (Message) input);
|
||||
}
|
||||
else {
|
||||
Map<String, Object> headersMap = new HashMap<>(((Message) result).getHeaders());
|
||||
this.sanitizeHeaders(((Message) input).getHeaders()).forEach((k, v) -> headersMap.putIfAbsent(k, v));
|
||||
result = MessageBuilder.withPayload(((Message) result).getPayload()).copyHeaders(headersMap).build();
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (functionInvocationHelper != null && CloudEventMessageUtils.isCloudEvent(((Message) input))) {
|
||||
|
||||
@@ -156,6 +156,17 @@ public class BeanFactoryAwareFunctionRegistryTests {
|
||||
assertThat(c.size()).isEqualTo(2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReturnedMessageIsUnmodified() throws Exception {
|
||||
FunctionCatalog catalog = this.configureCatalog();
|
||||
Function<Message<String>, Message<byte[]>> function = catalog.lookup("uppercaseMessage", "application/json");
|
||||
assertThat(function).isNotNull();
|
||||
|
||||
Message<byte[]> result = function.apply(MessageBuilder.withPayload("bob").setHeader("foo", "foo").build());
|
||||
assertThat(result.getHeaders().containsKey("foo")).isFalse();
|
||||
assertThat(result.getHeaders().containsKey("bar")).isTrue();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Test
|
||||
public void testDefaultLookup() throws Exception {
|
||||
@@ -1078,6 +1089,15 @@ public class BeanFactoryAwareFunctionRegistryTests {
|
||||
return v -> v.toUpperCase();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Function<Message<String>, Message<String>> uppercaseMessage() {
|
||||
return message -> {
|
||||
Message<String> result = MessageBuilder.fromMessage(message)
|
||||
.removeHeader("foo").setHeader("bar", "bar").build();
|
||||
return result;
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Function<String, Void> consumerFunction() {
|
||||
return v -> {
|
||||
|
||||
Reference in New Issue
Block a user