Skip to content

Commit 71fdb86

Browse files
committed
Added url template
1 parent 6a9203c commit 71fdb86

File tree

1 file changed

+24
-1
lines changed
  • instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal

1 file changed

+24
-1
lines changed

instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/internal/WebClientHttpAttributesGetter.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,41 @@
77

88
import static java.util.Collections.emptyList;
99

10+
import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpClientExperimentalAttributesGetter;
1011
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter;
1112
import java.util.List;
13+
import java.util.Map;
14+
import java.util.regex.Pattern;
1215
import javax.annotation.Nullable;
1316
import org.springframework.web.reactive.function.client.ClientRequest;
1417
import org.springframework.web.reactive.function.client.ClientResponse;
18+
import org.springframework.web.reactive.function.client.WebClient;
1519

1620
/**
1721
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
1822
* any time.
1923
*/
2024
public enum WebClientHttpAttributesGetter
21-
implements HttpClientAttributesGetter<ClientRequest, ClientResponse> {
25+
implements HttpClientExperimentalAttributesGetter<ClientRequest, ClientResponse> {
2226
INSTANCE;
2327

28+
29+
private static final String URI_TEMPLATE_ATTRIBUTE = WebClient.class.getName() + ".uriTemplate";
30+
private static final Pattern PATTERN_BEFORE_PATH = Pattern.compile("^https?://[^/]+/");
31+
32+
@Nullable
33+
@Override
34+
public String getUrlTemplate(ClientRequest clientRequest) {
35+
Map<String, Object> attributes = clientRequest.attributes();
36+
Object value = attributes.get(URI_TEMPLATE_ATTRIBUTE);
37+
if (value instanceof String) {
38+
String uriTemplate = (String) value;
39+
String path = PATTERN_BEFORE_PATH.matcher(uriTemplate).replaceFirst("");
40+
return path.startsWith("/") ? path : "/" + path;
41+
}
42+
return null;
43+
}
44+
2445
@Override
2546
public String getUrlFull(ClientRequest request) {
2647
return request.url().toString();
@@ -71,4 +92,6 @@ public String getErrorType(
7192
}
7293
return null;
7394
}
95+
96+
7497
}

0 commit comments

Comments
 (0)