GH-680 Add support for strict (or not) dependency on target-protocol header for CE

Resolves #680
This commit is contained in:
Oleg Zhurakousky
2021-04-14 18:49:01 +02:00
parent b7edd1e1b7
commit 727322b1f0
3 changed files with 27 additions and 3 deletions

View File

@@ -275,9 +275,13 @@ public final class CloudEventMessageUtils {
* @return prefix (e.g., 'ce_' or 'ce-' etc.)
*/
static String determinePrefixToUse(Map<String, Object> messageHeaders) {
return determinePrefixToUse(messageHeaders, false);
}
static String determinePrefixToUse(Map<String, Object> messageHeaders, boolean strict) {
String targetProtocol = (String) messageHeaders.get(MessageUtils.TARGET_PROTOCOL);
String prefix = determinePrefixToUse(targetProtocol);
if (StringUtils.hasText(prefix)) {
if (StringUtils.hasText(prefix) && (strict || StringUtils.hasText((String) messageHeaders.get(prefix + _SPECVERSION)))) {
return prefix;
}
else {
@@ -294,7 +298,7 @@ public final class CloudEventMessageUtils {
}
}
return "";
return DEFAULT_ATTR_PREFIX;
}
/**

View File

@@ -90,7 +90,7 @@ public class CloudEventsFunctionInvocationHelper implements FunctionInvocationHe
if (this.messageConverter != null && CLOUD_EVENT_CLASS != null && CLOUD_EVENT_CLASS.isAssignableFrom(result.getClass())) {
convertedResult = this.messageConverter.toMessage(result, input.getHeaders());
}
String targetPrefix = CloudEventMessageUtils.determinePrefixToUse(input.getHeaders());
String targetPrefix = CloudEventMessageUtils.determinePrefixToUse(input.getHeaders(), true);
return this.doPostProcessResult(convertedResult, targetPrefix);
}