
io.opentelemetry.javaagent.instrumentation.jaxrs.v3_0.JerseySpanName Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of opentelemetry-javaagent-jaxrs-3.0-jersey-3.0 Show documentation
Show all versions of opentelemetry-javaagent-jaxrs-3.0-jersey-3.0 Show documentation
Instrumentation of Java libraries using OpenTelemetry.
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.javaagent.instrumentation.jaxrs.v3_0;
import static io.opentelemetry.javaagent.instrumentation.jaxrs.JaxrsPathUtil.normalizePath;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRoute;
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRouteGetter;
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRouteSource;
import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath;
import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
import jakarta.ws.rs.core.Request;
import jakarta.ws.rs.core.UriInfo;
import javax.annotation.Nullable;
import org.glassfish.jersey.server.ContainerRequest;
import org.glassfish.jersey.server.ExtendedUriInfo;
public class JerseySpanName implements HttpServerRouteGetter {
public static final JerseySpanName INSTANCE = new JerseySpanName();
public void updateServerSpanName(Request request) {
Context context = Context.current();
HttpServerRoute.update(context, HttpServerRouteSource.NESTED_CONTROLLER, this, request);
}
@Override
@Nullable
public String get(Context context, Request request) {
ContainerRequest containerRequest = (ContainerRequest) request;
UriInfo uriInfo = containerRequest.getUriInfo();
ExtendedUriInfo extendedUriInfo = (ExtendedUriInfo) uriInfo;
return extendedUriInfo.getMatchedTemplates().stream()
.map((uriTemplate) -> normalizePath(uriTemplate.getTemplate()))
.reduce((a, b) -> b + a)
.map(s -> ServletContextPath.prepend(context, JaxrsContextPath.prepend(context, s)))
.orElse(null);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy