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() {
|
private CloudEventMessageUtils() {
|
||||||
}
|
}
|
||||||
|
|
||||||
//=====
|
//=========== INTERNAL USE ONLY ==
|
||||||
|
|
||||||
static String _DATA = "data";
|
static String _DATA = "data";
|
||||||
|
|
||||||
static String _ID = "id";
|
static String _ID = "id";
|
||||||
@@ -78,6 +77,7 @@ public final class CloudEventMessageUtils {
|
|||||||
static String _SUBJECT = "subject";
|
static String _SUBJECT = "subject";
|
||||||
|
|
||||||
static String _TIME = "time";
|
static String _TIME = "time";
|
||||||
|
// ================================
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* String value of 'application/cloudevents' mime type.
|
* 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.
|
* Will canonicalize Cloud Event attributes (headers) by ensuring canonical
|
||||||
* So, for example 'ce_source' will become 'source'.
|
* 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 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) {
|
private static void canonicalizeHeaders(Map<String, Object> headers, boolean structured) {
|
||||||
String[] keys = headers.keySet().toArray(new String[] {});
|
String[] keys = headers.keySet().toArray(new String[] {});
|
||||||
|
|||||||
@@ -16,15 +16,16 @@
|
|||||||
|
|
||||||
package org.springframework.cloud.function.cloudevent;
|
package org.springframework.cloud.function.cloudevent;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import org.springframework.messaging.Message;
|
import org.springframework.messaging.Message;
|
||||||
import org.springframework.messaging.support.MessageBuilder;
|
import org.springframework.messaging.support.MessageBuilder;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Oleg Zhurakousky
|
* @author Oleg Zhurakousky
|
||||||
*/
|
*/
|
||||||
@@ -52,5 +53,15 @@ public class CloudEventMessageUtilsAndBuilderTests {
|
|||||||
assertThat(CloudEventMessageUtils.getType(kafkaMessage)).isEqualTo("blah");
|
assertThat(CloudEventMessageUtils.getType(kafkaMessage)).isEqualTo("blah");
|
||||||
assertThat(kafkaMessage.getHeaders().get("ce_specversion")).isNotNull();
|
assertThat(kafkaMessage.getHeaders().get("ce_specversion")).isNotNull();
|
||||||
assertThat(CloudEventMessageUtils.getSpecVersion(kafkaMessage)).isEqualTo("1.0");
|
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