Browse Source

Declare current observation context as available since 6.0.15

See gh-31609
See gh-31646
pull/32145/head
Juergen Hoeller 2 years ago
parent
commit
3817936ca5
  1. 24
      spring-web/src/main/java/org/springframework/http/client/observation/ClientRequestObservationContext.java
  2. 45
      spring-webflux/src/main/java/org/springframework/web/reactive/function/client/ClientRequestObservationContext.java

24
spring-web/src/main/java/org/springframework/http/client/observation/ClientRequestObservationContext.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2023 the original author or authors. * Copyright 2002-2024 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -23,10 +23,12 @@ import org.springframework.http.client.ClientHttpResponse;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
/** /**
* Context that holds information for metadata collection * Context that holds information for metadata collection during the
* during the {@link ClientHttpObservationDocumentation#HTTP_CLIENT_EXCHANGES client HTTP exchanges} observations. * {@link ClientHttpObservationDocumentation#HTTP_CLIENT_EXCHANGES client HTTP exchanges} observations.
*
* <p>This context also extends {@link RequestReplySenderContext} for propagating tracing * <p>This context also extends {@link RequestReplySenderContext} for propagating tracing
* information with the HTTP client exchange. * information with the HTTP client exchange.
*
* @author Brian Clozel * @author Brian Clozel
* @since 6.0 * @since 6.0
*/ */
@ -35,6 +37,7 @@ public class ClientRequestObservationContext extends RequestReplySenderContext<C
@Nullable @Nullable
private String uriTemplate; private String uriTemplate;
/** /**
* Create an observation context for {@link ClientHttpRequest} observations. * Create an observation context for {@link ClientHttpRequest} observations.
* @param request the HTTP client request * @param request the HTTP client request
@ -50,13 +53,6 @@ public class ClientRequestObservationContext extends RequestReplySenderContext<C
} }
} }
/**
* Return the URI template used for the current client exchange, {@code null} if none was used.
*/
@Nullable
public String getUriTemplate() {
return this.uriTemplate;
}
/** /**
* Set the URI template used for the current client exchange. * Set the URI template used for the current client exchange.
@ -65,4 +61,12 @@ public class ClientRequestObservationContext extends RequestReplySenderContext<C
this.uriTemplate = uriTemplate; this.uriTemplate = uriTemplate;
} }
/**
* Return the URI template used for the current client exchange, {@code null} if none was used.
*/
@Nullable
public String getUriTemplate() {
return this.uriTemplate;
}
} }

45
spring-webflux/src/main/java/org/springframework/web/reactive/function/client/ClientRequestObservationContext.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2022 the original author or authors. * Copyright 2002-2024 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -23,11 +23,12 @@ import io.micrometer.observation.transport.RequestReplySenderContext;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
/** /**
* Context that holds information for metadata collection * Context that holds information for metadata collection during the
* during the {@link ClientHttpObservationDocumentation#HTTP_REACTIVE_CLIENT_EXCHANGES HTTP client exchange observations}. * {@link ClientHttpObservationDocumentation#HTTP_REACTIVE_CLIENT_EXCHANGES HTTP client exchange observations}.
*
* <p>The {@link #getCarrier() tracing context carrier} is a {@link ClientRequest.Builder request builder}, * <p>The {@link #getCarrier() tracing context carrier} is a {@link ClientRequest.Builder request builder},
* since the actual request is immutable. For {@code KeyValue} extraction, the {@link #getRequest() actual request} * since the actual request is immutable. For {@code KeyValue} extraction,
* should be used instead. * the {@link #getRequest() actual request} should be used instead.
* *
* @author Brian Clozel * @author Brian Clozel
* @since 6.0 * @since 6.0
@ -37,10 +38,11 @@ public class ClientRequestObservationContext extends RequestReplySenderContext<C
/** /**
* Name of the request attribute holding the {@link ClientRequestObservationContext context} * Name of the request attribute holding the {@link ClientRequestObservationContext context}
* for the current observation. * for the current observation.
* @since 6.1.1 * @since 6.0.15
*/ */
public static final String CURRENT_OBSERVATION_CONTEXT_ATTRIBUTE = ClientRequestObservationContext.class.getName(); public static final String CURRENT_OBSERVATION_CONTEXT_ATTRIBUTE = ClientRequestObservationContext.class.getName();
@Nullable @Nullable
private String uriTemplate; private String uriTemplate;
@ -60,6 +62,14 @@ public class ClientRequestObservationContext extends RequestReplySenderContext<C
} }
} }
/**
* Set the URI template used for the current client exchange.
*/
public void setUriTemplate(@Nullable String uriTemplate) {
this.uriTemplate = uriTemplate;
}
/** /**
* Return the URI template used for the current client exchange, {@code null} if none was used. * Return the URI template used for the current client exchange, {@code null} if none was used.
*/ */
@ -69,10 +79,11 @@ public class ClientRequestObservationContext extends RequestReplySenderContext<C
} }
/** /**
* Set the URI template used for the current client exchange. * Set whether the client aborted the current HTTP exchange.
* @param aborted whether the exchange has been aborted
*/ */
public void setUriTemplate(@Nullable String uriTemplate) { void setAborted(boolean aborted) {
this.uriTemplate = uriTemplate; this.aborted = aborted;
} }
/** /**
@ -84,11 +95,10 @@ public class ClientRequestObservationContext extends RequestReplySenderContext<C
} }
/** /**
* Set whether the client aborted the current HTTP exchange. * Set the client request.
* @param aborted whether the exchange has been aborted
*/ */
void setAborted(boolean aborted) { public void setRequest(ClientRequest request) {
this.aborted = aborted; this.request = request;
} }
/** /**
@ -99,21 +109,16 @@ public class ClientRequestObservationContext extends RequestReplySenderContext<C
return this.request; return this.request;
} }
/**
* Set the client request.
*/
public void setRequest(ClientRequest request) {
this.request = request;
}
/** /**
* Get the current {@link ClientRequestObservationContext observation context} * Get the current {@link ClientRequestObservationContext observation context}
* from the given request, if available. * from the given request, if available.
* @param request the current client request * @param request the current client request
* @return the current observation context * @return the current observation context
* @since 6.1.2 * @since 6.0.15
*/ */
public static Optional<ClientRequestObservationContext> findCurrent(ClientRequest request) { public static Optional<ClientRequestObservationContext> findCurrent(ClientRequest request) {
return Optional.ofNullable((ClientRequestObservationContext) request.attributes().get(CURRENT_OBSERVATION_CONTEXT_ATTRIBUTE)); return Optional.ofNullable((ClientRequestObservationContext) request.attributes().get(CURRENT_OBSERVATION_CONTEXT_ATTRIBUTE));
} }
} }

Loading…
Cancel
Save