GH-422, GH-606 Fix attributes generatioin

This commit is contained in:
Oleg Zhurakousky
2020-11-16 14:20:02 +01:00
parent ac54a83e09
commit 6093aefe14
4 changed files with 24 additions and 14 deletions

View File

@@ -286,7 +286,7 @@ public final class CloudEventMessageUtils {
}
}
public static Map<String, Object> generateDefaultCloudEventHeaders(Message<?> inputMessage, Object result, String applicationName) {
public static CloudEventAttributes generateAttributes(Message<?> inputMessage, Object result, String applicationName) {
CloudEventAttributes attributes = new CloudEventAttributes(inputMessage.getHeaders(), CloudEventMessageUtils.determinePrefixToUse(inputMessage));
if (attributes.isValidCloudEvent()) {
return attributes
@@ -295,6 +295,6 @@ public final class CloudEventMessageUtils {
.setType(result.getClass().getName())
.setSource(applicationName);
}
return Collections.emptyMap();
return new CloudEventAttributes(Collections.emptyMap());
}
}

View File

@@ -19,7 +19,6 @@ package org.springframework.cloud.function.context.catalog;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import java.util.function.BiFunction;
import java.util.function.Consumer;
@@ -168,14 +167,14 @@ public class BeanFactoryAwareFunctionRegistry extends SimpleFunctionRegistry imp
@Override
public Message<?> apply(Message<?> inputMessage, Object invocationResult) {
// TODO: Factor it out! Cloud Events specific code
Map<String, Object> generatedCeHeaders = CloudEventMessageUtils
.generateDefaultCloudEventHeaders(inputMessage, invocationResult, getApplicationName());
CloudEventAttributes attributes = new CloudEventAttributes(generatedCeHeaders);
CloudEventAttributes generatedCeHeaders = CloudEventMessageUtils
.generateAttributes(inputMessage, invocationResult, getApplicationName());
CloudEventAttributes attributes = new CloudEventAttributes(generatedCeHeaders, CloudEventMessageUtils.determinePrefixToUse(inputMessage));
if (cloudEventAtttributesProvider != null) {
cloudEventAtttributesProvider.generateDefaultCloudEventHeaders(attributes);
}
Message message = MessageBuilder.withPayload(invocationResult)
.copyHeaders(generatedCeHeaders)
.copyHeaders(attributes)
.build();
return message;