diff --git a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyHttpAttributesGetter.java b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyHttpAttributesGetter.java index 8ce16215416d..320820dde4c6 100644 --- a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyHttpAttributesGetter.java +++ b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyHttpAttributesGetter.java @@ -6,9 +6,9 @@ package io.opentelemetry.javaagent.instrumentation.grizzly; import static java.util.Collections.emptyList; -import static java.util.Collections.singletonList; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesGetter; +import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; import org.glassfish.grizzly.http.HttpRequestPacket; @@ -24,8 +24,16 @@ public String method(HttpRequestPacket request) { @Override public List requestHeader(HttpRequestPacket request, String name) { - String value = request.getHeader(name); - return value == null ? emptyList() : singletonList(value); + return toHeaderList(request.getHeaders().values(name)); + } + + private static List toHeaderList(Iterable values) { + if (values.iterator().hasNext()) { + List result = new ArrayList<>(); + values.forEach(result::add); + return result; + } + return emptyList(); } @Override @@ -36,8 +44,7 @@ public Integer statusCode(HttpRequestPacket request, HttpResponsePacket response @Override public List responseHeader( HttpRequestPacket request, HttpResponsePacket response, String name) { - String value = response.getHeader(name); - return value == null ? emptyList() : singletonList(value); + return toHeaderList(response.getHeaders().values(name)); } @Override