mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-25 00:09:02 +00:00
Complete Propagator.Getter implementation
As of Micrometer Tracing 1.6.0, the `Propagator.Getter` interface adds a new `getAll` method with a default implementation return a singleton collection. This commit adds the missing implementation override in both Servlet and Reactor web server contexts. Fixes gh-35965
This commit is contained in:
+19
-1
@@ -16,6 +16,9 @@
|
||||
|
||||
package org.springframework.http.server.observation;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import io.micrometer.observation.transport.Propagator;
|
||||
import io.micrometer.observation.transport.RequestReplyReceiverContext;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
@@ -32,10 +35,12 @@ import org.jspecify.annotations.Nullable;
|
||||
*/
|
||||
public class ServerRequestObservationContext extends RequestReplyReceiverContext<HttpServletRequest, HttpServletResponse> {
|
||||
|
||||
private static final HeaderGetter GETTER = new HeaderGetter();
|
||||
|
||||
private @Nullable String pathPattern;
|
||||
|
||||
public ServerRequestObservationContext(HttpServletRequest request, HttpServletResponse response) {
|
||||
super(HttpServletRequest::getHeader);
|
||||
super(GETTER);
|
||||
setCarrier(request);
|
||||
setResponse(response);
|
||||
}
|
||||
@@ -47,4 +52,17 @@ public class ServerRequestObservationContext extends RequestReplyReceiverContext
|
||||
public void setPathPattern(@Nullable String pathPattern) {
|
||||
this.pathPattern = pathPattern;
|
||||
}
|
||||
|
||||
static final class HeaderGetter implements Propagator.Getter<HttpServletRequest> {
|
||||
@Override
|
||||
public String get(HttpServletRequest carrier, String key) {
|
||||
return carrier.getHeader(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<String> getAll(HttpServletRequest carrier, String key) {
|
||||
return Collections.list(carrier.getHeaders(key));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+16
-1
@@ -20,6 +20,7 @@ import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import io.micrometer.observation.transport.Propagator;
|
||||
import io.micrometer.observation.transport.RequestReplyReceiverContext;
|
||||
import org.jspecify.annotations.Nullable;
|
||||
|
||||
@@ -46,6 +47,7 @@ public class ServerRequestObservationContext extends RequestReplyReceiverContext
|
||||
*/
|
||||
public static final String CURRENT_OBSERVATION_CONTEXT_ATTRIBUTE = ServerRequestObservationContext.class.getName();
|
||||
|
||||
private static final HeaderGetter GETTER = new HeaderGetter();
|
||||
|
||||
private final Map<String, Object> attributes;
|
||||
|
||||
@@ -63,7 +65,7 @@ public class ServerRequestObservationContext extends RequestReplyReceiverContext
|
||||
public ServerRequestObservationContext(
|
||||
ServerHttpRequest request, ServerHttpResponse response, Map<String, Object> attributes) {
|
||||
|
||||
super((req, key) -> req.getHeaders().getFirst(key));
|
||||
super(GETTER);
|
||||
setCarrier(request);
|
||||
setResponse(response);
|
||||
this.attributes = Collections.unmodifiableMap(attributes);
|
||||
@@ -129,4 +131,17 @@ public class ServerRequestObservationContext extends RequestReplyReceiverContext
|
||||
(ServerRequestObservationContext) attributes.get(CURRENT_OBSERVATION_CONTEXT_ATTRIBUTE));
|
||||
}
|
||||
|
||||
static final class HeaderGetter implements Propagator.Getter<ServerHttpRequest> {
|
||||
|
||||
@Override
|
||||
public @Nullable String get(ServerHttpRequest carrier, String key) {
|
||||
return carrier.getHeaders().getFirst(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<String> getAll(ServerHttpRequest carrier, String key) {
|
||||
return carrier.getHeaders().getOrEmpty(key);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user