Skip to content

Commit 0ca185f

Browse files
committed
Implement ExtendedTextMapGetter in spring-webmvc-5.3 instrumentation
1 parent 299154c commit 0ca185f

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
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: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@
55

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

8-
import io.opentelemetry.context.propagation.TextMapGetter;
8+
import static java.util.Collections.emptyIterator;
9+
10+
import io.opentelemetry.context.propagation.internal.ExtendedTextMapGetter;
911
import java.util.Collections;
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
@@ -21,4 +25,24 @@ public Iterable<String> keys(HttpServletRequest carrier) {
2125
public String get(HttpServletRequest carrier, String key) {
2226
return carrier.getHeader(key);
2327
}
28+
29+
@Override
30+
public Iterator<String> getAll(HttpServletRequest carrier, String key) {
31+
Enumeration<String> values = carrier.getHeaders(key);
32+
if (values == null) {
33+
return emptyIterator();
34+
}
35+
36+
return new Iterator<String>() {
37+
@Override
38+
public boolean hasNext() {
39+
return values.hasMoreElements();
40+
}
41+
42+
@Override
43+
public String next() {
44+
return values.nextElement();
45+
}
46+
};
47+
}
2448
}

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)