GH1190 Add byte[] to string conversion to CloudEventMessageUtils
Resolves #1190
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
package org.springframework.cloud.function.cloudevent;
|
package org.springframework.cloud.function.cloudevent;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -170,7 +171,11 @@ public final class CloudEventMessageUtils {
|
|||||||
|
|
||||||
public static String getId(Message<?> message) {
|
public static String getId(Message<?> message) {
|
||||||
String prefix = determinePrefixToUse(message.getHeaders());
|
String prefix = determinePrefixToUse(message.getHeaders());
|
||||||
return (String) message.getHeaders().get(prefix + MessageHeaders.ID);
|
Object value = message.getHeaders().get(prefix + MessageHeaders.ID);
|
||||||
|
if (value instanceof byte[] v) {
|
||||||
|
value = toString(v);
|
||||||
|
}
|
||||||
|
return (String) value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static URI getSource(Message<?> message) {
|
public static URI getSource(Message<?> message) {
|
||||||
@@ -180,17 +185,29 @@ public final class CloudEventMessageUtils {
|
|||||||
|
|
||||||
public static String getSpecVersion(Message<?> message) {
|
public static String getSpecVersion(Message<?> message) {
|
||||||
String prefix = determinePrefixToUse(message.getHeaders());
|
String prefix = determinePrefixToUse(message.getHeaders());
|
||||||
return (String) message.getHeaders().get(prefix + _SPECVERSION);
|
Object value = message.getHeaders().get(prefix + _SPECVERSION);
|
||||||
|
if (value instanceof byte[] v) {
|
||||||
|
value = toString(v);
|
||||||
|
}
|
||||||
|
return (String) value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getType(Message<?> message) {
|
public static String getType(Message<?> message) {
|
||||||
String prefix = determinePrefixToUse(message.getHeaders());
|
String prefix = determinePrefixToUse(message.getHeaders());
|
||||||
return (String) message.getHeaders().get(prefix + _TYPE);
|
Object value = message.getHeaders().get(prefix + _TYPE);
|
||||||
|
if (value instanceof byte[] v) {
|
||||||
|
value = toString(v);
|
||||||
|
}
|
||||||
|
return (String) value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getDataContentType(Message<?> message) {
|
public static String getDataContentType(Message<?> message) {
|
||||||
String prefix = determinePrefixToUse(message.getHeaders());
|
String prefix = determinePrefixToUse(message.getHeaders());
|
||||||
return (String) message.getHeaders().get(prefix + _DATACONTENTTYPE);
|
Object value = message.getHeaders().get(prefix + _DATACONTENTTYPE);
|
||||||
|
if (value instanceof byte[] v) {
|
||||||
|
value = toString(v);
|
||||||
|
}
|
||||||
|
return (String) value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static URI getDataSchema(Message<?> message) {
|
public static URI getDataSchema(Message<?> message) {
|
||||||
@@ -200,7 +217,11 @@ public final class CloudEventMessageUtils {
|
|||||||
|
|
||||||
public static String getSubject(Message<?> message) {
|
public static String getSubject(Message<?> message) {
|
||||||
String prefix = determinePrefixToUse(message.getHeaders());
|
String prefix = determinePrefixToUse(message.getHeaders());
|
||||||
return (String) message.getHeaders().get(prefix + _SUBJECT);
|
Object value = message.getHeaders().get(prefix + _SUBJECT);
|
||||||
|
if (value instanceof byte[] v) {
|
||||||
|
value = toString(v);
|
||||||
|
}
|
||||||
|
return (String) value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static OffsetDateTime getTime(Message<?> message) {
|
public static OffsetDateTime getTime(Message<?> message) {
|
||||||
@@ -435,11 +456,20 @@ public final class CloudEventMessageUtils {
|
|||||||
private static URI safeGetURI(Map<String, Object> map, String key) {
|
private static URI safeGetURI(Map<String, Object> map, String key) {
|
||||||
Object uri = map.get(key);
|
Object uri = map.get(key);
|
||||||
if (uri != null && uri instanceof String) {
|
if (uri != null && uri instanceof String) {
|
||||||
uri = URI.create((String) uri);
|
if (uri instanceof String) {
|
||||||
|
uri = URI.create((String) uri);
|
||||||
|
}
|
||||||
|
else if (uri instanceof byte[] u) {
|
||||||
|
uri = URI.create(toString(u));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return (URI) uri;
|
return (URI) uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String toString(byte[] value) {
|
||||||
|
return new String(value, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
public static class Protocols {
|
public static class Protocols {
|
||||||
static String AMQP = "amqp";
|
static String AMQP = "amqp";
|
||||||
static String AVRO = "avro";
|
static String AVRO = "avro";
|
||||||
|
|||||||
Reference in New Issue
Block a user