Skip to content

Commit b6977cf

Browse files
author
xiepuhuan
committed
Implement ExtendedTextMapGetter in spring-webmvc-5.3 instrumentation
1 parent 299154c commit b6977cf

File tree

3 files changed

+31
-4
lines changed

3 files changed

+31
-4
lines changed

instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/JavaxHttpServletRequestGetter.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,39 @@
55

66
package io.opentelemetry.instrumentation.spring.webmvc.v5_3;
77

8-
import io.opentelemetry.context.propagation.TextMapGetter;
9-
import java.util.Collections;
8+
import static java.util.Collections.emptyIterator;
9+
import static java.util.Collections.list;
10+
11+
import io.opentelemetry.context.propagation.internal.ExtendedTextMapGetter;
12+
import java.util.Enumeration;
13+
import java.util.Iterator;
1014
import javax.servlet.http.HttpServletRequest;
1115

12-
enum JavaxHttpServletRequestGetter implements TextMapGetter<HttpServletRequest> {
16+
enum JavaxHttpServletRequestGetter implements ExtendedTextMapGetter<HttpServletRequest> {
1317
INSTANCE;
1418

1519
@Override
1620
public Iterable<String> keys(HttpServletRequest carrier) {
17-
return Collections.list(carrier.getHeaderNames());
21+
return list(carrier.getHeaderNames());
1822
}
1923

2024
@Override
2125
public String get(HttpServletRequest carrier, String key) {
2226
return carrier.getHeader(key);
2327
}
28+
29+
30+
@Override
31+
public Iterator<String> getAll(HttpServletRequest carrier, String key) {
32+
if (carrier == null) {
33+
return emptyIterator();
34+
}
35+
36+
Enumeration<String> values = carrier.getHeaders(key);
37+
if (values == null) {
38+
return emptyIterator();
39+
}
40+
41+
return list(values).iterator();
42+
}
2443
}

instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/test/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/WebMvcHttpServerTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ protected void configure(HttpServerTestOptions options) {
5353
}
5454
return expectedHttpRoute(endpoint, method);
5555
});
56+
57+
options.setTestExtractMultiBaggage(true);
5658
}
5759

5860
@Test

testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/HttpServerTestOptions.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,12 @@ public HttpServerTestOptions useHttp2() {
231231
return setUseHttp2(true);
232232
}
233233

234+
@CanIgnoreReturnValue
235+
public HttpServerTestOptions setTestExtractMultiBaggage(boolean testExtractMultiBaggage) {
236+
this.testExtractMultiBaggage = testExtractMultiBaggage;
237+
return this;
238+
}
239+
234240
@FunctionalInterface
235241
public interface SpanNameMapper {
236242

0 commit comments

Comments
 (0)