Tidy up logic around canonicalization of attributes
Added initial test to validate builder and utils
This commit is contained in:
@@ -57,8 +57,7 @@ public final class CloudEventMessageUtils {
|
||||
private CloudEventMessageUtils() {
|
||||
}
|
||||
|
||||
//=====
|
||||
|
||||
//=========== INTERNAL USE ONLY ==
|
||||
static String _DATA = "data";
|
||||
|
||||
static String _ID = "id";
|
||||
@@ -78,6 +77,7 @@ public final class CloudEventMessageUtils {
|
||||
static String _SUBJECT = "subject";
|
||||
|
||||
static String _TIME = "time";
|
||||
// ================================
|
||||
|
||||
/**
|
||||
* String value of 'application/cloudevents' mime type.
|
||||
@@ -288,9 +288,15 @@ public final class CloudEventMessageUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* Will canonicalize Cloud Event attributes (headers) by removing well known prefixes.
|
||||
* So, for example 'ce_source' will become 'source'.
|
||||
* Will canonicalize Cloud Event attributes (headers) by ensuring canonical
|
||||
* prefix for all attributes and extensions regardless of where they came from.
|
||||
* The canonical prefix is 'ce-'.
|
||||
*
|
||||
* So, for example 'ce_source' will become 'ce-source'.
|
||||
* @param headers message headers
|
||||
* @param structured boolean signifying that headers map represents structured Cloud Event
|
||||
* at which point attributes without any prefix will still be treated as
|
||||
* Cloud Event attributes.
|
||||
*/
|
||||
private static void canonicalizeHeaders(Map<String, Object> headers, boolean structured) {
|
||||
String[] keys = headers.keySet().toArray(new String[] {});
|
||||
|
||||
@@ -16,15 +16,16 @@
|
||||
|
||||
package org.springframework.cloud.function.cloudevent;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.support.MessageBuilder;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* @author Oleg Zhurakousky
|
||||
*/
|
||||
@@ -52,5 +53,15 @@ public class CloudEventMessageUtilsAndBuilderTests {
|
||||
assertThat(CloudEventMessageUtils.getType(kafkaMessage)).isEqualTo("blah");
|
||||
assertThat(kafkaMessage.getHeaders().get("ce_specversion")).isNotNull();
|
||||
assertThat(CloudEventMessageUtils.getSpecVersion(kafkaMessage)).isEqualTo("1.0");
|
||||
|
||||
httpMessage = CloudEventMessageBuilder.fromMessage(kafkaMessage).build(CloudEventMessageUtils.DEFAULT_ATTR_PREFIX);
|
||||
attributes = CloudEventMessageUtils.getAttributes(httpMessage);
|
||||
assertThat(attributes.size()).isEqualTo(3);
|
||||
assertThat(httpMessage.getHeaders().get("ce-source")).isNotNull();
|
||||
assertThat(CloudEventMessageUtils.getSource(httpMessage)).isEqualTo(URI.create("https://foo.bar"));
|
||||
assertThat(httpMessage.getHeaders().get("ce-type")).isNotNull();
|
||||
assertThat(CloudEventMessageUtils.getType(httpMessage)).isEqualTo("blah");
|
||||
assertThat(httpMessage.getHeaders().get("ce-specversion")).isNotNull();
|
||||
assertThat(CloudEventMessageUtils.getSpecVersion(httpMessage)).isEqualTo("1.0");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user