GH-895 Remove reflection usage form CloudEventMessageUtils

This commit is contained in:
Oleg Zhurakousky
2022-07-13 13:52:42 +02:00
parent 30728c07e1
commit f4e714882b

View File

@@ -16,10 +16,10 @@
package org.springframework.cloud.function.cloudevent; package org.springframework.cloud.function.cloudevent;
import java.lang.reflect.Field;
import java.net.URI; import java.net.URI;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -34,7 +34,6 @@ import org.springframework.messaging.converter.MessageConverter;
import org.springframework.messaging.support.MessageBuilder; import org.springframework.messaging.support.MessageBuilder;
import org.springframework.util.MimeType; import org.springframework.util.MimeType;
import org.springframework.util.MimeTypeUtils; import org.springframework.util.MimeTypeUtils;
import org.springframework.util.ReflectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
/** /**
@@ -61,12 +60,6 @@ public final class CloudEventMessageUtils {
}; };
private static Field MESSAGE_HEADERS = ReflectionUtils.findField(MessageHeaders.class, "headers");
static {
MESSAGE_HEADERS.setAccessible(true);
}
private CloudEventMessageUtils() { private CloudEventMessageUtils() {
} }
@@ -233,7 +226,7 @@ public final class CloudEventMessageUtils {
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
static Message<?> toCanonical(Message<?> inputMessage, MessageConverter messageConverter) { static Message<?> toCanonical(Message<?> inputMessage, MessageConverter messageConverter) {
Map<String, Object> headers = (Map<String, Object>) ReflectionUtils.getField(MESSAGE_HEADERS, inputMessage.getHeaders()); Map<String, Object> headers = new HashMap<>(inputMessage.getHeaders());
canonicalizeHeaders(headers, false); canonicalizeHeaders(headers, false);
if (isCloudEvent(inputMessage) && headers.containsKey("content-type")) { if (isCloudEvent(inputMessage) && headers.containsKey("content-type")) {
inputMessage = MessageBuilder.fromMessage(inputMessage).setHeader(MessageHeaders.CONTENT_TYPE, headers.get("content-type")).build(); inputMessage = MessageBuilder.fromMessage(inputMessage).setHeader(MessageHeaders.CONTENT_TYPE, headers.get("content-type")).build();
@@ -269,7 +262,7 @@ public final class CloudEventMessageUtils {
return MessageBuilder.fromMessage(inputMessage).setHeader(MessageHeaders.CONTENT_TYPE, inputContentType) return MessageBuilder.fromMessage(inputMessage).setHeader(MessageHeaders.CONTENT_TYPE, inputContentType)
.build(); .build();
} }
return inputMessage; return MessageBuilder.withPayload(inputMessage.getPayload()).copyHeaders(headers).build();
} }