PR 6524 with amendments (#6569)
Co-authored-by: junwense <970597653@qq.com> Co-authored-by: SeanJ <44492651+junwense@users.noreply.github.com>
This commit is contained in:
parent
20bcd7546b
commit
fbb5ebb01e
|
@ -14,18 +14,31 @@ class CaseInsensitiveMap extends HashMap<String, String> {
|
||||||
|
|
||||||
private static final long serialVersionUID = -4202518750189126871L;
|
private static final long serialVersionUID = -4202518750189126871L;
|
||||||
|
|
||||||
|
CaseInsensitiveMap() {}
|
||||||
|
|
||||||
CaseInsensitiveMap(Map<String, String> carrier) {
|
CaseInsensitiveMap(Map<String, String> carrier) {
|
||||||
super(carrier);
|
if (carrier != null) {
|
||||||
|
this.putAll(carrier);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String put(String key, String value) {
|
public String put(String key, String value) {
|
||||||
return super.put(key.toLowerCase(Locale.ROOT), value);
|
return super.put(getKeyLowerCase(key), value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void putAll(Map<? extends String, ? extends String> m) {
|
||||||
|
m.forEach(this::put);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getKeyLowerCase(String key) {
|
||||||
|
return key.toLowerCase(Locale.ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public String get(Object key) {
|
public String get(Object key) {
|
||||||
return super.get(((String) key).toLowerCase(Locale.ROOT));
|
return super.get(getKeyLowerCase((String) key));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.opentelemetry.api.incubator.propagation;
|
||||||
|
|
||||||
|
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
class CaseInsensitiveMapTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createByConstructor() {
|
||||||
|
Map<String, String> map = new HashMap<>();
|
||||||
|
map.put("Key1", "test");
|
||||||
|
map.put("Key2", "test2");
|
||||||
|
|
||||||
|
CaseInsensitiveMap caseInsensitiveMap = new CaseInsensitiveMap(map);
|
||||||
|
|
||||||
|
Map<String, String> standardMap = new HashMap<>();
|
||||||
|
standardMap.put("key1", "test");
|
||||||
|
standardMap.put("key2", "test2");
|
||||||
|
|
||||||
|
assertThat(caseInsensitiveMap).isEqualTo(standardMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void putAll() {
|
||||||
|
CaseInsensitiveMap caseInsensitiveMap = new CaseInsensitiveMap();
|
||||||
|
Map<String, String> standardMap = new HashMap<>();
|
||||||
|
standardMap.put("key1", "test");
|
||||||
|
standardMap.put("key2", "test2");
|
||||||
|
caseInsensitiveMap.putAll(standardMap);
|
||||||
|
assertThat(caseInsensitiveMap).isEqualTo(standardMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void putIfAbsent() {
|
||||||
|
CaseInsensitiveMap caseInsensitiveMap = new CaseInsensitiveMap();
|
||||||
|
caseInsensitiveMap.putIfAbsent("key1", "test");
|
||||||
|
assertThat(caseInsensitiveMap.get("KEY1")).isEqualTo("test");
|
||||||
|
caseInsensitiveMap.putIfAbsent("key1", "nope");
|
||||||
|
assertThat(caseInsensitiveMap.get("KEY1")).isEqualTo("test");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createByConstructorWithNullMap() {
|
||||||
|
CaseInsensitiveMap caseInsensitiveMap = new CaseInsensitiveMap(null);
|
||||||
|
assertThat(caseInsensitiveMap).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void caseInsensitivity() {
|
||||||
|
CaseInsensitiveMap caseInsensitiveMap = new CaseInsensitiveMap(null);
|
||||||
|
|
||||||
|
assertThat(caseInsensitiveMap).isEmpty();
|
||||||
|
|
||||||
|
caseInsensitiveMap.put("KEY1", "test1");
|
||||||
|
caseInsensitiveMap.put("KEY2", "test2");
|
||||||
|
assertThat(caseInsensitiveMap.get("key1")).isEqualTo("test1");
|
||||||
|
assertThat(caseInsensitiveMap.get("key2")).isEqualTo("test2");
|
||||||
|
assertThat(caseInsensitiveMap.get("kEy2")).isEqualTo("test2");
|
||||||
|
assertThat(caseInsensitiveMap.get("KEY2")).isEqualTo("test2");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue