Skip to content

Commit ea116a8

Browse files
committed
Use TreeMap
1 parent e56b785 commit ea116a8

4 files changed

Lines changed: 13 additions & 59 deletions

File tree

dd-java-agent/instrumentation/java/java-net/java-net-11.0/src/main/java/datadog/trace/instrumentation/httpclient/HttpHeadersInstrumentation.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,7 @@ public ElementMatcher<TypeDescription> hierarchyMatcher() {
4848
@Override
4949
public String[] helperClassNames() {
5050
return new String[] {
51-
packageName + ".CaseInsensitiveKey",
52-
packageName + ".HttpHeadersInjectAdapter",
53-
packageName + ".JavaNetClientDecorator",
51+
packageName + ".HttpHeadersInjectAdapter", packageName + ".JavaNetClientDecorator",
5452
};
5553
}
5654

dd-java-agent/instrumentation/java/java-net/java-net-11.0/src/main/java11/datadog/trace/instrumentation/httpclient/CaseInsensitiveKey.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

dd-java-agent/instrumentation/java/java-net/java-net-11.0/src/main/java11/datadog/trace/instrumentation/httpclient/HeadersAdvice.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,22 @@
44
import static datadog.trace.instrumentation.httpclient.HttpHeadersInjectAdapter.KEEP;
55
import static datadog.trace.instrumentation.httpclient.HttpHeadersInjectAdapter.SETTER;
66
import static datadog.trace.instrumentation.httpclient.JavaNetClientDecorator.DECORATE;
7+
import static java.lang.String.CASE_INSENSITIVE_ORDER;
78

89
import java.net.http.HttpHeaders;
9-
import java.util.LinkedHashMap;
1010
import java.util.List;
1111
import java.util.Map;
12+
import java.util.TreeMap;
1213
import net.bytebuddy.asm.Advice;
1314

1415
public class HeadersAdvice {
1516
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
1617
public static void methodExit(@Advice.Return(readOnly = false) HttpHeaders headers) {
17-
final Map<CaseInsensitiveKey, List<String>> headerMap = new LinkedHashMap<>();
18-
// Note: we don't want to modify the case of the current headers
19-
// However adding duplicate keys will throw an IllegalArgumentException so we need to dedupe
18+
// Note: adding duplicate keys will throw an IllegalArgumentException so we need to dedupe
2019
// case insensitively
21-
for (final Map.Entry<String, List<String>> entry : headers.map().entrySet()) {
22-
headerMap.put(new CaseInsensitiveKey(entry.getKey()), entry.getValue());
23-
}
20+
final Map<String, List<String>> headerMap = new TreeMap<>(CASE_INSENSITIVE_ORDER);
21+
headerMap.putAll(headers.map());
2422
DECORATE.injectContext(getCurrentContext(), headerMap, SETTER);
25-
// convert back
26-
final Map<String, List<String>> finalMap = new LinkedHashMap<>();
27-
for (final Map.Entry<CaseInsensitiveKey, List<String>> entry : headerMap.entrySet()) {
28-
finalMap.put(entry.getKey().getValue(), entry.getValue());
29-
}
30-
headers = HttpHeaders.of(finalMap, KEEP);
23+
headers = HttpHeaders.of(headerMap, KEEP);
3124
}
3225
}

dd-java-agent/instrumentation/java/java-net/java-net-11.0/src/main/java11/datadog/trace/instrumentation/httpclient/HttpHeadersInjectAdapter.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,17 @@
66
import java.util.Map;
77
import java.util.function.BiPredicate;
88

9-
public class HttpHeadersInjectAdapter
10-
implements CarrierSetter<Map<CaseInsensitiveKey, List<String>>> {
9+
public class HttpHeadersInjectAdapter implements CarrierSetter<Map<String, List<String>>> {
1110

1211
public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter();
1312
public static final BiPredicate<String, String> KEEP = HttpHeadersInjectAdapter::keep;
1413

15-
public static boolean keep(String key, String value) {
16-
return true;
14+
@Override
15+
public void set(final Map<String, List<String>> carrier, final String key, final String value) {
16+
carrier.put(key, Collections.singletonList(value));
1717
}
1818

19-
@Override
20-
public void set(Map<CaseInsensitiveKey, List<String>> carrier, String key, String value) {
21-
carrier.put(new CaseInsensitiveKey(key), Collections.singletonList(value));
19+
public static boolean keep(String key, String value) {
20+
return true;
2221
}
2322
}

0 commit comments

Comments
 (0)