diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/RequestWithHost.java b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/RequestWithHost.java index 6fd5767e83a8..e18de7e6d035 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/RequestWithHost.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/RequestWithHost.java @@ -19,9 +19,13 @@ public class RequestWithHost extends HttpRequestWrapper implements ClassicHttpRe public RequestWithHost(HttpHost httpHost, ClassicHttpRequest httpRequest) { super(httpRequest); - - this.scheme = httpHost.getSchemeName(); - this.authority = new URIAuthority(httpHost.getHostName(), httpHost.getPort()); + if (httpHost != null) { + this.scheme = httpHost.getSchemeName(); + this.authority = new URIAuthority(httpHost.getHostName(), httpHost.getPort()); + } else { + this.scheme = httpRequest.getScheme(); + this.authority = httpRequest.getAuthority(); + } } @Override diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientTest.java b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientTest.java index cea57cc51900..36059fd98cbc 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientTest.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientTest.java @@ -20,6 +20,7 @@ import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.core5.http.ClassicHttpRequest; import org.apache.hc.core5.http.ClassicHttpResponse; +import org.apache.hc.core5.http.HttpHost; import org.apache.hc.core5.http.HttpResponse; import org.apache.hc.core5.http.io.HttpClientResponseHandler; import org.apache.hc.core5.http.message.BasicClassicHttpRequest; @@ -90,6 +91,26 @@ void executeRequestWithCallback(ClassicHttpRequest request, URI uri, HttpClientR } } + @Nested + class ApacheClientNullHttpHostRequestTest extends AbstractTest { + @Override + ClassicHttpRequest createRequest(String method, URI uri) { + // also testing with an absolute path below + return new BasicClassicHttpRequest(method, HttpHost.create(uri), fullPathFromUri(uri)); + } + + @Override + ClassicHttpResponse doExecuteRequest(ClassicHttpRequest request, URI uri) throws Exception { + return getClient(uri).execute(null, request); + } + + @Override + void executeRequestWithCallback(ClassicHttpRequest request, URI uri, HttpClientResult result) + throws Exception { + getClient(uri).execute(null, request, new ResponseHandler(result)); + } + } + @Nested class ApacheClientHostAbsoluteUriRequestTest extends AbstractTest { @Override