From fea157fc70f5f5c7511154fdd060243ec5363e4f Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Thu, 11 Aug 2022 19:24:48 +0300 Subject: [PATCH] Grizzly: capture all matching request & response headers (#6463) --- .../grizzly/GrizzlyHttpAttributesGetter.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) 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