Add optimization to apache async client instrumentation
This commit is contained in:
parent
0748c10b72
commit
e9fc866e67
|
@ -7,6 +7,7 @@ import org.apache.http.HttpRequest;
|
||||||
import org.apache.http.HttpResponse;
|
import org.apache.http.HttpResponse;
|
||||||
import org.apache.http.RequestLine;
|
import org.apache.http.RequestLine;
|
||||||
import org.apache.http.StatusLine;
|
import org.apache.http.StatusLine;
|
||||||
|
import org.apache.http.client.methods.HttpUriRequest;
|
||||||
import org.apache.http.protocol.HttpContext;
|
import org.apache.http.protocol.HttpContext;
|
||||||
import org.apache.http.protocol.HttpCoreContext;
|
import org.apache.http.protocol.HttpCoreContext;
|
||||||
|
|
||||||
|
@ -26,40 +27,55 @@ public class ApacheHttpAsyncClientDecorator extends HttpClientDecorator<HttpRequ
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String method(final HttpRequest request) {
|
protected String method(final HttpRequest request) {
|
||||||
final RequestLine requestLine = request.getRequestLine();
|
if (request instanceof HttpUriRequest) {
|
||||||
return requestLine == null ? null : requestLine.getMethod();
|
return ((HttpUriRequest) request).getMethod();
|
||||||
|
} else {
|
||||||
|
final RequestLine requestLine = request.getRequestLine();
|
||||||
|
return requestLine == null ? null : requestLine.getMethod();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected URI url(final HttpRequest request) throws URISyntaxException {
|
protected URI url(final HttpRequest request) throws URISyntaxException {
|
||||||
final RequestLine requestLine = request.getRequestLine();
|
/*
|
||||||
return requestLine == null ? null : new URI(requestLine.getUri());
|
* Note: this is essentially an optimization: HttpUriRequest allows quicker access to required information.
|
||||||
|
* The downside is that we need to load HttpUriRequest which essentially means we depend on httpasyncclient
|
||||||
|
* library depending on httpclient library. Currently this seems to be the case.
|
||||||
|
*/
|
||||||
|
if (request instanceof HttpUriRequest) {
|
||||||
|
return ((HttpUriRequest) request).getURI();
|
||||||
|
} else {
|
||||||
|
final RequestLine requestLine = request.getRequestLine();
|
||||||
|
return requestLine == null ? null : new URI(requestLine.getUri());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String hostname(final HttpRequest request) {
|
protected String hostname(final HttpRequest request) {
|
||||||
final RequestLine requestLine = request.getRequestLine();
|
try {
|
||||||
if (requestLine != null) {
|
final URI uri = url(request);
|
||||||
try {
|
if (uri != null) {
|
||||||
return new URI(requestLine.getUri()).getHost();
|
return uri.getHost();
|
||||||
} catch (final URISyntaxException e) {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
} catch (final URISyntaxException e) {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Integer port(final HttpRequest request) {
|
protected Integer port(final HttpRequest request) {
|
||||||
final RequestLine requestLine = request.getRequestLine();
|
try {
|
||||||
if (requestLine != null) {
|
final URI uri = url(request);
|
||||||
try {
|
if (uri != null) {
|
||||||
return new URI(requestLine.getUri()).getPort();
|
return uri.getPort();
|
||||||
} catch (final URISyntaxException e) {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
} catch (final URISyntaxException e) {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue