* Fixes #1081: add instance of checks
This commit is contained in:
committed by
Marcin Grzejszczak
parent
5a3bb0c0e3
commit
e02cea7bc0
@@ -79,13 +79,14 @@ enum MessageHeaderPropagation
|
||||
nativeAccessor.setNativeHeader(key, value);
|
||||
}
|
||||
else {
|
||||
Map<String, List<String>> nativeHeaders = (Map) accessor
|
||||
.getHeader(NATIVE_HEADERS);
|
||||
Object nativeHeaders = accessor.getHeader(NATIVE_HEADERS);
|
||||
if (nativeHeaders == null) {
|
||||
accessor.setHeader(NATIVE_HEADERS,
|
||||
nativeHeaders = new LinkedMultiValueMap<>());
|
||||
}
|
||||
nativeHeaders.put(key, Collections.singletonList(value));
|
||||
if (nativeHeaders instanceof Map<?, ?>) {
|
||||
((Map) nativeHeaders).put(key, Collections.singletonList(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,16 +116,16 @@ enum MessageHeaderPropagation
|
||||
if (accessor instanceof NativeMessageHeaderAccessor) {
|
||||
NativeMessageHeaderAccessor nativeAccessor = (NativeMessageHeaderAccessor) accessor;
|
||||
String result = nativeAccessor.getFirstNativeHeader(key);
|
||||
if (result != null)
|
||||
if (result != null) {
|
||||
return result;
|
||||
}
|
||||
else {
|
||||
Map<String, List<String>> nativeHeaders = (Map) accessor
|
||||
.getHeader(NATIVE_HEADERS);
|
||||
if (nativeHeaders != null) {
|
||||
List<String> result = nativeHeaders.get(key);
|
||||
if (result != null && !result.isEmpty())
|
||||
return result.get(0);
|
||||
}
|
||||
} else {
|
||||
Object nativeHeaders = accessor.getHeader(NATIVE_HEADERS);
|
||||
if (nativeHeaders instanceof Map) {
|
||||
Object result = ((Map) nativeHeaders).get(key);
|
||||
if (result instanceof List && !((List) result).isEmpty()) {
|
||||
return String.valueOf(((List) result).get(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
Object result = accessor.getHeader(key);
|
||||
@@ -155,13 +156,11 @@ enum MessageHeaderPropagation
|
||||
if (accessor instanceof NativeMessageHeaderAccessor) {
|
||||
NativeMessageHeaderAccessor nativeAccessor = (NativeMessageHeaderAccessor) accessor;
|
||||
nativeAccessor.removeNativeHeader(keyToRemove);
|
||||
}
|
||||
else {
|
||||
Map<String, List<String>> nativeHeaders = (Map) accessor
|
||||
.getHeader(NATIVE_HEADERS);
|
||||
if (nativeHeaders == null)
|
||||
continue;
|
||||
nativeHeaders.remove(keyToRemove);
|
||||
} else {
|
||||
Object nativeHeaders = accessor.getHeader(NATIVE_HEADERS);
|
||||
if (nativeHeaders instanceof Map) {
|
||||
((Map) nativeHeaders).remove(keyToRemove);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.util.Collections;
|
||||
import brave.propagation.Propagation;
|
||||
import org.junit.Test;
|
||||
import org.springframework.messaging.support.MessageHeaderAccessor;
|
||||
import org.springframework.messaging.support.NativeMessageHeaderAccessor;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@@ -73,4 +74,31 @@ public class MessageHeaderPropagationTest
|
||||
String value = MessageHeaderPropagation.INSTANCE.get(carrier, "non existent key");
|
||||
assertNull(value);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSkipWrongValueTypeForGet() {
|
||||
MessageHeaderAccessor carrier = carrier();
|
||||
carrier.setHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS,
|
||||
"{spanTraceId=[123], spanId=[456], spanSampled=[0]}"
|
||||
);
|
||||
MessageHeaderPropagation.INSTANCE.get(carrier, "X-B3-SpanId");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSkipWrongValueTypeForRemoval() {
|
||||
MessageHeaderAccessor carrier = carrier();
|
||||
carrier.setHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS,
|
||||
"{spanTraceId=[123], spanId=[456], spanSampled=[0]}"
|
||||
);
|
||||
MessageHeaderPropagation.removeAnyTraceHeaders(carrier, Collections.singletonList("X-B3-SpanId"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSkipWrongValueTypeForPut() {
|
||||
MessageHeaderAccessor carrier = carrier();
|
||||
carrier.setHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS,
|
||||
"{spanTraceId=[123], spanId=[456], spanSampled=[0]}"
|
||||
);
|
||||
MessageHeaderPropagation.INSTANCE.put(carrier, "X-B3-SpanId", "1234");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user