-
Notifications
You must be signed in to change notification settings - Fork 896
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Convert jaxrs-client-1.1 to instrumenter api (#3934)
* Convert jaxrs-client-1.1 to instrumenter api * spotless
- Loading branch information
Showing
5 changed files
with
204 additions
and
72 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
108 changes: 108 additions & 0 deletions
108
...emetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientHttpAttributesExtractor.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
/* | ||
* Copyright The OpenTelemetry Authors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package io.opentelemetry.javaagent.instrumentation.jaxrsclient.v1_1; | ||
|
||
import com.sun.jersey.api.client.ClientRequest; | ||
import com.sun.jersey.api.client.ClientResponse; | ||
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpAttributesExtractor; | ||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; | ||
import org.checkerframework.checker.nullness.qual.Nullable; | ||
|
||
final class JaxRsClientHttpAttributesExtractor | ||
extends HttpAttributesExtractor<ClientRequest, ClientResponse> { | ||
|
||
@Override | ||
protected @Nullable String method(ClientRequest httpRequest) { | ||
return httpRequest.getMethod(); | ||
} | ||
|
||
@Override | ||
protected String url(ClientRequest httpRequest) { | ||
return httpRequest.getURI().toString(); | ||
} | ||
|
||
@Override | ||
protected @Nullable String target(ClientRequest httpRequest) { | ||
StringBuilder result = new StringBuilder(); | ||
String path = httpRequest.getURI().getPath(); | ||
if (path != null) { | ||
result.append(path); | ||
} | ||
String query = httpRequest.getURI().getQuery(); | ||
if (query != null) { | ||
result.append('?'); | ||
result.append(query); | ||
} | ||
String fragment = httpRequest.getURI().getFragment(); | ||
if (fragment != null) { | ||
result.append('#'); | ||
result.append(fragment); | ||
} | ||
return result.length() > 0 ? result.toString() : null; | ||
} | ||
|
||
@Override | ||
protected @Nullable String host(ClientRequest httpRequest) { | ||
return httpRequest.getURI().getHost(); | ||
} | ||
|
||
@Override | ||
protected @Nullable String scheme(ClientRequest httpRequest) { | ||
return httpRequest.getURI().getScheme(); | ||
} | ||
|
||
@Override | ||
protected @Nullable String userAgent(ClientRequest httpRequest) { | ||
Object header = httpRequest.getHeaders().getFirst("User-Agent"); | ||
return header != null ? header.toString() : null; | ||
} | ||
|
||
@Override | ||
protected @Nullable Long requestContentLength( | ||
ClientRequest httpRequest, @Nullable ClientResponse httpResponse) { | ||
return null; | ||
} | ||
|
||
@Override | ||
protected @Nullable Long requestContentLengthUncompressed( | ||
ClientRequest httpRequest, @Nullable ClientResponse httpResponse) { | ||
return null; | ||
} | ||
|
||
@Override | ||
protected String flavor(ClientRequest httpRequest, @Nullable ClientResponse httpResponse) { | ||
return SemanticAttributes.HttpFlavorValues.HTTP_1_1; | ||
} | ||
|
||
@Override | ||
protected @Nullable Integer statusCode(ClientRequest httpRequest, ClientResponse httpResponse) { | ||
return httpResponse.getStatus(); | ||
} | ||
|
||
@Override | ||
protected @Nullable Long responseContentLength( | ||
ClientRequest httpRequest, ClientResponse httpResponse) { | ||
int length = httpResponse.getLength(); | ||
return length != -1 ? (long) length : null; | ||
} | ||
|
||
@Override | ||
protected @Nullable Long responseContentLengthUncompressed( | ||
ClientRequest httpRequest, ClientResponse httpResponse) { | ||
return null; | ||
} | ||
|
||
@Override | ||
protected @Nullable String route(ClientRequest httpRequest) { | ||
return null; | ||
} | ||
|
||
@Override | ||
protected @Nullable String serverName( | ||
ClientRequest httpRequest, @Nullable ClientResponse httpResponse) { | ||
return null; | ||
} | ||
} |
40 changes: 40 additions & 0 deletions
40
...lemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientNetAttributesExtractor.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
/* | ||
* Copyright The OpenTelemetry Authors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package io.opentelemetry.javaagent.instrumentation.jaxrsclient.v1_1; | ||
|
||
import com.sun.jersey.api.client.ClientRequest; | ||
import com.sun.jersey.api.client.ClientResponse; | ||
import io.opentelemetry.instrumentation.api.instrumenter.net.NetAttributesExtractor; | ||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; | ||
import org.checkerframework.checker.nullness.qual.Nullable; | ||
|
||
final class JaxRsClientNetAttributesExtractor | ||
extends NetAttributesExtractor<ClientRequest, ClientResponse> { | ||
|
||
@Override | ||
public String transport(ClientRequest request) { | ||
return SemanticAttributes.NetTransportValues.IP_TCP; | ||
} | ||
|
||
@Override | ||
public @Nullable String peerName(ClientRequest request, @Nullable ClientResponse response) { | ||
return request.getURI().getHost(); | ||
} | ||
|
||
@Override | ||
public Integer peerPort(ClientRequest request, @Nullable ClientResponse response) { | ||
int port = request.getURI().getPort(); | ||
if (port != -1) { | ||
return port; | ||
} | ||
return null; | ||
} | ||
|
||
@Override | ||
public @Nullable String peerIp(ClientRequest request, @Nullable ClientResponse response) { | ||
return null; | ||
} | ||
} |
51 changes: 51 additions & 0 deletions
51
...va/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientSingletons.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
/* | ||
* Copyright The OpenTelemetry Authors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package io.opentelemetry.javaagent.instrumentation.jaxrsclient.v1_1; | ||
|
||
import com.sun.jersey.api.client.ClientRequest; | ||
import com.sun.jersey.api.client.ClientResponse; | ||
import io.opentelemetry.api.GlobalOpenTelemetry; | ||
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; | ||
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; | ||
import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusExtractor; | ||
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpAttributesExtractor; | ||
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientMetrics; | ||
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; | ||
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; | ||
import io.opentelemetry.javaagent.instrumentation.api.instrumenter.PeerServiceAttributesExtractor; | ||
|
||
public class JaxRsClientSingletons { | ||
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.jaxrs-client-1.1"; | ||
|
||
private static final Instrumenter<ClientRequest, ClientResponse> INSTRUMENTER; | ||
|
||
static { | ||
HttpAttributesExtractor<ClientRequest, ClientResponse> httpAttributesExtractor = | ||
new JaxRsClientHttpAttributesExtractor(); | ||
SpanNameExtractor<? super ClientRequest> spanNameExtractor = | ||
HttpSpanNameExtractor.create(httpAttributesExtractor); | ||
SpanStatusExtractor<? super ClientRequest, ? super ClientResponse> spanStatusExtractor = | ||
HttpSpanStatusExtractor.create(httpAttributesExtractor); | ||
JaxRsClientNetAttributesExtractor netAttributesExtractor = | ||
new JaxRsClientNetAttributesExtractor(); | ||
|
||
INSTRUMENTER = | ||
Instrumenter.<ClientRequest, ClientResponse>newBuilder( | ||
GlobalOpenTelemetry.get(), INSTRUMENTATION_NAME, spanNameExtractor) | ||
.setSpanStatusExtractor(spanStatusExtractor) | ||
.addAttributesExtractor(httpAttributesExtractor) | ||
.addAttributesExtractor(netAttributesExtractor) | ||
.addAttributesExtractor(PeerServiceAttributesExtractor.create(netAttributesExtractor)) | ||
.addRequestMetrics(HttpClientMetrics.get()) | ||
.newClientInstrumenter(new InjectAdapter()); | ||
} | ||
|
||
public static Instrumenter<ClientRequest, ClientResponse> instrumenter() { | ||
return INSTRUMENTER; | ||
} | ||
|
||
private JaxRsClientSingletons() {} | ||
} |
64 changes: 0 additions & 64 deletions
64
...java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientV1Tracer.java
This file was deleted.
Oops, something went wrong.