From 2ea6ffa2268cd6c2e7bc7d49fec03496bf350fdc Mon Sep 17 00:00:00 2001 From: elbiocaetano Date: Fri, 22 Dec 2023 12:26:24 +0100 Subject: [PATCH] chore: fixing PR suggestions --- docs/supported-libraries.md | 3 +- .../library/build.gradle.kts | 24 ---- ...ApacheHttpClient5HttpAttributesGetter.java | 68 ----------- .../testing/build.gradle.kts | 11 -- .../apache-httpclient-5.2/library/README.md | 60 +++++++++ .../library/build.gradle.kts | 10 ++ ...ApacheHttpClient5HttpAttributesGetter.java | 114 ++++++++++++++++++ .../v5_2}/ApacheHttpClient5Request.java | 2 +- .../v5_2}/ApacheHttpClient5Telemetry.java | 4 +- .../ApacheHttpClient5TelemetryBuilder.java | 4 +- .../v5_2}/HttpHeaderSetter.java | 2 +- .../v5_2}/OtelExecChainHandler.java | 2 +- .../v5_2}/AbstractApacheHttpClient5Test.java | 23 ++-- .../v5_2}/ApacheHttpClient5Test.java | 9 +- .../v5_2/HttpUriRequest.java} | 6 +- settings.gradle.kts | 3 +- 16 files changed, 214 insertions(+), 131 deletions(-) delete mode 100644 instrumentation/apache-httpclient/apache-httpclient-5.0/library/build.gradle.kts delete mode 100644 instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5HttpAttributesGetter.java delete mode 100644 instrumentation/apache-httpclient/apache-httpclient-5.0/testing/build.gradle.kts create mode 100644 instrumentation/apache-httpclient/apache-httpclient-5.2/library/README.md create mode 100644 instrumentation/apache-httpclient/apache-httpclient-5.2/library/build.gradle.kts create mode 100644 instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5HttpAttributesGetter.java rename instrumentation/apache-httpclient/{apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0 => apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2}/ApacheHttpClient5Request.java (98%) rename instrumentation/apache-httpclient/{apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0 => apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2}/ApacheHttpClient5Telemetry.java (93%) rename instrumentation/apache-httpclient/{apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0 => apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2}/ApacheHttpClient5TelemetryBuilder.java (98%) rename instrumentation/apache-httpclient/{apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0 => apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2}/HttpHeaderSetter.java (88%) rename instrumentation/apache-httpclient/{apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0 => apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2}/OtelExecChainHandler.java (99%) rename instrumentation/apache-httpclient/{apache-httpclient-5.0/testing/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0 => apache-httpclient-5.2/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2}/AbstractApacheHttpClient5Test.java (93%) rename instrumentation/apache-httpclient/{apache-httpclient-5.0/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0 => apache-httpclient-5.2/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2}/ApacheHttpClient5Test.java (89%) rename instrumentation/apache-httpclient/{apache-httpclient-5.0/testing/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/Http5UriRequest.java => apache-httpclient-5.2/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/HttpUriRequest.java} (71%) diff --git a/docs/supported-libraries.md b/docs/supported-libraries.md index a4c583c03e53..3089ab1edb6c 100644 --- a/docs/supported-libraries.md +++ b/docs/supported-libraries.md @@ -18,7 +18,7 @@ or [contributing](../CONTRIBUTING.md). These are the supported libraries and frameworks: | Library/Framework | Auto-instrumented versions | Standalone Library Instrumentation [1] | Semantic Conventions | -|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |----------------------------------------------------------------------------------------| +|---------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------| | [Akka Actors](https://doc.akka.io/docs/akka/current/typed/index.html) | 2.3+ | N/A | Context propagation | | [Akka HTTP](https://doc.akka.io/docs/akka-http/current/index.html) | 10.0+ | N/A | [HTTP Client Spans], [HTTP Client Metrics], [HTTP Server Spans], [HTTP Server Metrics] | | [Alibaba Druid](https://github.com/alibaba/druid) | 1.0+ | [opentelemetry-alibaba-druid-1.0](../instrumentation/alibaba-druid-1.0/library) | [Database Pool Metrics] | @@ -30,6 +30,7 @@ These are the supported libraries and frameworks: | [Apache Dubbo](https://github.com/apache/dubbo/) | 2.7+ | [opentelemetry-apache-dubbo-2.7](../instrumentation/apache-dubbo-2.7/library-autoconfigure) | [RPC Client Spans], [RPC Server Spans] | | [Apache HttpAsyncClient](https://hc.apache.org/index.html) | 4.1+ | N/A | [HTTP Client Spans], [HTTP Client Metrics] | | [Apache HttpClient](https://hc.apache.org/index.html) | 2.0+ | [opentelemetry-apache-httpclient-4.3](../instrumentation/apache-httpclient/apache-httpclient-4.3/library) | [HTTP Client Spans], [HTTP Client Metrics] | +| [Apache HttpClient 5](https://hc.apache.org/index.html) | 2.0+ | [opentelemetry-apache-httpclient-5.2](../instrumentation/apache-httpclient/apache-httpclient-5.2/library) | [HTTP Client Spans], [HTTP Client Metrics] | | [Apache Kafka Producer/Consumer API](https://kafka.apache.org/documentation/#producerapi) | 0.11+ | [opentelemetry-kafka-clients-2.6](../instrumentation/kafka/kafka-clients/kafka-clients-2.6/library) | [Messaging Spans] | | [Apache Kafka Streams API](https://kafka.apache.org/documentation/streams/) | 0.11+ | N/A | [Messaging Spans] | | [Apache MyFaces](https://myfaces.apache.org/) | 1.2+ | N/A | Provides `http.route` [2], Controller Spans [3] | diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/build.gradle.kts b/instrumentation/apache-httpclient/apache-httpclient-5.0/library/build.gradle.kts deleted file mode 100644 index 42b88aebbacc..000000000000 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/build.gradle.kts +++ /dev/null @@ -1,24 +0,0 @@ -plugins { - id("otel.library-instrumentation") - id("otel.nullaway-conventions") - id("otel.animalsniffer-conventions") -} - -dependencies { - library("org.apache.httpcomponents.client5:httpclient5:5.2.1") - library("jakarta.annotation:jakarta.annotation-api:2.1.1") - - testImplementation(project(":instrumentation:apache-httpclient:apache-httpclient-5.0:testing")) - - latestDepTestLibrary("org.apache.httpcomponents.client5:httpclient5:5+") // see apache-httpclient-5.0 module -} - -tasks { - val testStableSemconv by registering(Test::class) { - jvmArgs("-Dotel.semconv-stability.opt-in=http") - } - - check { - dependsOn(testStableSemconv) - } -} diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5HttpAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5HttpAttributesGetter.java deleted file mode 100644 index c42618fcc2b0..000000000000 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5HttpAttributesGetter.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.apachehttpclient.v5_0; - -import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter; -import jakarta.annotation.Nullable; -import java.util.List; -import org.apache.hc.core5.http.HttpResponse; - -enum ApacheHttpClient5HttpAttributesGetter - implements HttpClientAttributesGetter { - INSTANCE; - - @Override - public String getHttpRequestMethod(ApacheHttpClient5Request request) { - return request.getMethod(); - } - - @Override - @Nullable - public String getUrlFull(ApacheHttpClient5Request request) { - return request.getUrl(); - } - - @Override - public List getHttpRequestHeader(ApacheHttpClient5Request request, String name) { - return request.getHeader(name); - } - - @Override - public Integer getHttpResponseStatusCode( - ApacheHttpClient5Request request, HttpResponse response, @Nullable Throwable error) { - return response.getCode(); - } - - @Override - public List getHttpResponseHeader( - ApacheHttpClient5Request request, HttpResponse response, String name) { - return ApacheHttpClient5Request.headersToList(response.getHeaders(name)); - } - - @Override - public String getNetworkProtocolName( - ApacheHttpClient5Request request, @Nullable HttpResponse response) { - return request.getProtocolName(); - } - - @Override - public String getNetworkProtocolVersion( - ApacheHttpClient5Request request, @Nullable HttpResponse response) { - return request.getProtocolVersion(); - } - - @Override - @Nullable - public String getServerAddress(ApacheHttpClient5Request request) { - return request.getServerAddress(); - } - - @Override - @Nullable - public Integer getServerPort(ApacheHttpClient5Request request) { - return request.getServerPort(); - } -} diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/testing/build.gradle.kts b/instrumentation/apache-httpclient/apache-httpclient-5.0/testing/build.gradle.kts deleted file mode 100644 index b9b99b07b38f..000000000000 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/testing/build.gradle.kts +++ /dev/null @@ -1,11 +0,0 @@ -plugins { - id("otel.java-conventions") -} - -dependencies { - api(project(":testing-common")) - - api("org.apache.httpcomponents.client5:httpclient5:5.2.1") - - implementation("io.opentelemetry:opentelemetry-api") -} diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.2/library/README.md b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/README.md new file mode 100644 index 000000000000..7002686939e7 --- /dev/null +++ b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/README.md @@ -0,0 +1,60 @@ +# Library Instrumentation for Apache Http client version 5.2 + +Provides OpenTelemetry instrumentation for [Apache Http Client 5.2](https://hc.apache.org/httpcomponents-client-5.2.x/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the [latest +release](https://search.maven.org/search?q=g:io.opentelemetry.instrumentation%20AND%20a:opentelemetry-apache-httpclient-5.2). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-apache-httpclient-5.2 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-apache-httpclient-5.2:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides a builder class `ApacheHttpClient5Telemetry` that wraps +an instance of the `HttpClientBuilder` to provide OpenTelemetry-based spans and context +propagation. + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.apachehttpclient.v5_2.ApacheHttpClient5Telemetry; +import org.apache.hc.client5.http.classic.HttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; + +public class ApacheHttpClient5Configuration { + + private OpenTelemetry openTelemetry; + + public ApacheHttpClient5Configuration(OpenTelemetry openTelemetry) { + this.openTelemetry = openTelemetry; + } + + // your configuration of the HttpClient goes here: + protected HttpClientBuilder createBuilder() { + return ApacheHttpClient5Telemetry.builder(openTelemetry).build().newHttpClientBuilder(); + } + + // creates a new httpClient with openTelemetry instrumentation + public HttpClient newHttpClient() { + return ApacheHttpClient5Telemetry.builder(openTelemetry).build().newHttpClient(); + } +} +``` diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.2/library/build.gradle.kts b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/build.gradle.kts new file mode 100644 index 000000000000..6bb2fe2479bb --- /dev/null +++ b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + id("otel.library-instrumentation") + id("otel.nullaway-conventions") + id("otel.animalsniffer-conventions") +} + +dependencies { + library("org.apache.httpcomponents.client5:httpclient5:5.2.1") + library("jakarta.annotation:jakarta.annotation-api:2.1.1") +} diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5HttpAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5HttpAttributesGetter.java new file mode 100644 index 000000000000..f11cd9374ec6 --- /dev/null +++ b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5HttpAttributesGetter.java @@ -0,0 +1,114 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.apachehttpclient.v5_2; + +import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter; +import jakarta.annotation.Nullable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import org.apache.hc.core5.http.Header; +import org.apache.hc.core5.http.HttpResponse; +import org.apache.hc.core5.http.MessageHeaders; +import org.apache.hc.core5.http.ProtocolVersion; + +enum ApacheHttpClient5HttpAttributesGetter + implements HttpClientAttributesGetter { + INSTANCE; + + @Override + public String getHttpRequestMethod(ApacheHttpClient5Request request) { + return request.getMethod(); + } + + @Override + @Nullable + public String getUrlFull(ApacheHttpClient5Request request) { + return request.getUrl(); + } + + @Override + public List getHttpRequestHeader(ApacheHttpClient5Request request, String name) { + return getHeader(request, name); + } + + @Override + public Integer getHttpResponseStatusCode( + ApacheHttpClient5Request request, HttpResponse response, @Nullable Throwable error) { + return response.getCode(); + } + + @Override + public List getHttpResponseHeader( + ApacheHttpClient5Request request, HttpResponse response, String name) { + return getHeader(response, name); + } + + private static List getHeader(MessageHeaders messageHeaders, String name) { + return headersToList(messageHeaders.getHeaders(name)); + } + + private static List getHeader(ApacheHttpClient5Request messageHeaders, String name) { + return headersToList(messageHeaders.getDelegate().getHeaders(name)); + } + + // minimize memory overhead by not using streams + private static List headersToList(Header[] headers) { + if (headers.length == 0) { + return Collections.emptyList(); + } + List headersList = new ArrayList<>(headers.length); + for (Header header : headers) { + headersList.add(header.getValue()); + } + return headersList; + } + + @Nullable + @Override + public String getNetworkProtocolName( + ApacheHttpClient5Request request, @Nullable HttpResponse response) { + ProtocolVersion protocolVersion = getVersion(request, response); + if (protocolVersion == null) { + return null; + } + return protocolVersion.getProtocol(); + } + + @Nullable + @Override + public String getNetworkProtocolVersion( + ApacheHttpClient5Request request, @Nullable HttpResponse response) { + ProtocolVersion protocolVersion = getVersion(request, response); + if (protocolVersion == null) { + return null; + } + if (protocolVersion.getMinor() == 0) { + return Integer.toString(protocolVersion.getMajor()); + } + return protocolVersion.getMajor() + "." + protocolVersion.getMinor(); + } + + @Override + @Nullable + public String getServerAddress(ApacheHttpClient5Request request) { + return request.getDelegate().getAuthority().getHostName(); + } + + @Override + public Integer getServerPort(ApacheHttpClient5Request request) { + return request.getDelegate().getAuthority().getPort(); + } + + private static ProtocolVersion getVersion( + ApacheHttpClient5Request request, @Nullable HttpResponse response) { + ProtocolVersion protocolVersion = request.getDelegate().getVersion(); + if (protocolVersion == null && response != null) { + protocolVersion = response.getVersion(); + } + return protocolVersion; + } +} diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5Request.java b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5Request.java similarity index 98% rename from instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5Request.java rename to instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5Request.java index 7150dc3c8137..7c86e384cb99 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5Request.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5Request.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.apachehttpclient.v5_0; +package io.opentelemetry.instrumentation.apachehttpclient.v5_2; import static java.util.logging.Level.FINE; diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5Telemetry.java b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5Telemetry.java similarity index 93% rename from instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5Telemetry.java rename to instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5Telemetry.java index 6a2d571dfbb8..dca1909a1b44 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5Telemetry.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5Telemetry.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.apachehttpclient.v5_0; +package io.opentelemetry.instrumentation.apachehttpclient.v5_2; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.context.propagation.ContextPropagators; @@ -49,7 +49,7 @@ public CloseableHttpClient newHttpClient() { /** Returns a new {@link HttpClientBuilder} to create a client with tracing configured. */ public HttpClientBuilder newHttpClientBuilder() { - return org.apache.hc.client5.http.impl.classic.HttpClientBuilder.create() + return HttpClientBuilder.create() .addExecInterceptorAfter( ChainElement.PROTOCOL.name(), "OtelExecChainHandler", diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5TelemetryBuilder.java b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5TelemetryBuilder.java similarity index 98% rename from instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5TelemetryBuilder.java rename to instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5TelemetryBuilder.java index fc72e5650f01..5097b8b204a4 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5TelemetryBuilder.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5TelemetryBuilder.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.apachehttpclient.v5_0; +package io.opentelemetry.instrumentation.apachehttpclient.v5_2; import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.api.OpenTelemetry; @@ -27,7 +27,7 @@ /** A builder for {@link ApacheHttpClient5Telemetry}. */ public final class ApacheHttpClient5TelemetryBuilder { - private static final String INSTRUMENTATION_NAME = "io.opentelemetry.apache-httpclient-5.0"; + private static final String INSTRUMENTATION_NAME = "io.opentelemetry.apache-httpclient-5.2"; private final OpenTelemetry openTelemetry; diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/HttpHeaderSetter.java b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/HttpHeaderSetter.java similarity index 88% rename from instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/HttpHeaderSetter.java rename to instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/HttpHeaderSetter.java index ba743b21d64e..c4c2c08fe878 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/HttpHeaderSetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/HttpHeaderSetter.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.apachehttpclient.v5_0; +package io.opentelemetry.instrumentation.apachehttpclient.v5_2; import io.opentelemetry.context.propagation.TextMapSetter; import jakarta.annotation.Nullable; diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/OtelExecChainHandler.java b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/OtelExecChainHandler.java similarity index 99% rename from instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/OtelExecChainHandler.java rename to instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/OtelExecChainHandler.java index 5e6a335bf229..773b17d7ce45 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/OtelExecChainHandler.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/OtelExecChainHandler.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.apachehttpclient.v5_0; +package io.opentelemetry.instrumentation.apachehttpclient.v5_2; import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.ContextPropagators; diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/testing/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClient5Test.java b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/AbstractApacheHttpClient5Test.java similarity index 93% rename from instrumentation/apache-httpclient/apache-httpclient-5.0/testing/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClient5Test.java rename to instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/AbstractApacheHttpClient5Test.java index eb487aeeaef4..a906f628de6b 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/testing/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClient5Test.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/AbstractApacheHttpClient5Test.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.apachehttpclient.v5_0; +package io.opentelemetry.instrumentation.apachehttpclient.v5_2; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; @@ -225,7 +225,7 @@ class ApacheClientUriRequestTest extends AbstractHttpClientTest headers) { // also testing with an absolute path below - return configureRequest(new Http5UriRequest(method, uri), headers); + return configureRequest(new HttpUriRequest(method, uri), headers); } @Override @@ -251,24 +251,29 @@ public void sendRequestWithCallback( } @Nested - class ApacheClientUriRequestContextTest extends AbstractHttpClientTest { + class ApacheClientUriRequestContextTest extends AbstractHttpClientTest { @Override - public Http5UriRequest buildRequest(String method, URI uri, Map headers) { + public HttpUriRequest buildRequest(String method, URI uri, Map headers) { // also testing with an absolute path below - return configureRequest(new Http5UriRequest(method, uri), headers); + return configureRequest(new HttpUriRequest(method, uri), headers); } @Override public int sendRequest( - Http5UriRequest request, String method, URI uri, Map headers) + HttpUriRequest request, String method, URI uri, Map headers) throws Exception { - return getClient(uri).execute(request, new BasicHttpContext(), responseHandler()); + return getClient(uri) + .execute( + new HttpHost(uri.getScheme(), uri.getHost(), uri.getPort()), + request, + new BasicHttpContext(), + responseHandler()); } @Override public void sendRequestWithCallback( - Http5UriRequest request, + HttpUriRequest request, String method, URI uri, Map headers, @@ -292,6 +297,7 @@ static int getResponseCode(ClassicHttpResponse response) { if (response.getEntity() != null && response.getEntity().getContent() != null) { response.getEntity().getContent().close(); } + response.close(); } catch (IOException e) { throw new UncheckedIOException(e); } @@ -302,6 +308,7 @@ static HttpClientResponseHandler responseCallback( HttpClientResult httpClientResult) { return response -> { try { + response.close(); httpClientResult.complete(getResponseCode(response)); } catch (Throwable t) { httpClientResult.complete(t); diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5Test.java b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5Test.java similarity index 89% rename from instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5Test.java rename to instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5Test.java index af8510e2093d..ddd02f5b7028 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/ApacheHttpClient5Test.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5Test.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.apachehttpclient.v5_0; +package io.opentelemetry.instrumentation.apachehttpclient.v5_2; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; @@ -38,12 +38,7 @@ protected CloseableHttpClient createClient(boolean readTimeout) { Collections.singletonList(AbstractHttpClientTest.TEST_RESPONSE_HEADER)) .build() .newHttpClientBuilder(); - builder.setDefaultRequestConfig( - RequestConfig.custom() - .setCircularRedirectsAllowed(true) - .setMaxRedirects(2) - .setRedirectsEnabled(true) - .build()); + builder.setDefaultRequestConfig(RequestConfig.custom().setMaxRedirects(2).build()); ConnectionConfig.Builder connectionConfigBuilder = ConnectionConfig.custom() diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/testing/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/Http5UriRequest.java b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/HttpUriRequest.java similarity index 71% rename from instrumentation/apache-httpclient/apache-httpclient-5.0/testing/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/Http5UriRequest.java rename to instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/HttpUriRequest.java index c6792a41c137..e6ef9b2b1d9a 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/testing/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_0/Http5UriRequest.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/HttpUriRequest.java @@ -3,18 +3,18 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.instrumentation.apachehttpclient.v5_0; +package io.opentelemetry.instrumentation.apachehttpclient.v5_2; import java.net.URI; import org.apache.hc.client5.http.classic.methods.HttpUriRequestBase; -final class Http5UriRequest extends HttpUriRequestBase { +final class HttpUriRequest extends HttpUriRequestBase { private static final long serialVersionUID = 1L; private final String methodName; - Http5UriRequest(String methodName, URI uri) { + HttpUriRequest(String methodName, URI uri) { super(methodName, uri); this.methodName = methodName; setUri(uri); diff --git a/settings.gradle.kts b/settings.gradle.kts index 9a4ee4d1cd1a..40591094e142 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -156,8 +156,7 @@ include(":instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent") include(":instrumentation:apache-httpclient:apache-httpclient-4.3:library") include(":instrumentation:apache-httpclient:apache-httpclient-4.3:testing") include(":instrumentation:apache-httpclient:apache-httpclient-5.0:javaagent") -include(":instrumentation:apache-httpclient:apache-httpclient-5.0:library") -include(":instrumentation:apache-httpclient:apache-httpclient-5.0:testing") +include(":instrumentation:apache-httpclient:apache-httpclient-5.2:library") include(":instrumentation:armeria-1.3:javaagent") include(":instrumentation:armeria-1.3:library") include(":instrumentation:armeria-1.3:testing")