Skip to content

Commit 1a34107

Browse files
committed
fix rebase
1 parent d747590 commit 1a34107

File tree

2 files changed

+16
-55
lines changed

2 files changed

+16
-55
lines changed

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/builder/internal/HttpClientInstrumenterBuilder.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55

66
package io.opentelemetry.instrumentation.api.incubator.builder.internal;
77

8-
import com.google.errorprone.annotations.CanIgnoreReturnValue;
98
import io.opentelemetry.instrumentation.api.incubator.config.internal.CoreCommonConfig;
9+
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
10+
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
1011
import java.lang.reflect.Field;
1112
import java.util.function.Consumer;
1213
import java.util.function.Supplier;
@@ -18,18 +19,20 @@
1819
public class HttpClientInstrumenterBuilder {
1920
private HttpClientInstrumenterBuilder() {}
2021

21-
@CanIgnoreReturnValue
22-
public static <REQUEST, RESPONSE> DefaultHttpClientTelemetryBuilder<REQUEST, RESPONSE> configure(
23-
CoreCommonConfig config, Object builder) {
24-
DefaultHttpClientTelemetryBuilder<REQUEST, RESPONSE> defaultBuilder = unwrapBuilder(builder);
22+
public static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> configure(
23+
CoreCommonConfig config,
24+
Object builder,
25+
Consumer<InstrumenterBuilder<REQUEST, RESPONSE>> builderCustomizer) {
26+
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> defaultBuilder = unwrapBuilder(builder);
2527
set(config::getKnownHttpRequestMethods, defaultBuilder::setKnownMethods);
2628
set(config::getClientRequestHeaders, defaultBuilder::setCapturedRequestHeaders);
2729
set(config::getClientResponseHeaders, defaultBuilder::setCapturedResponseHeaders);
2830
set(config::getPeerServiceResolver, defaultBuilder::setPeerServiceResolver);
2931
set(
3032
config::shouldEmitExperimentalHttpClientTelemetry,
3133
defaultBuilder::setEmitExperimentalHttpClientMetrics);
32-
return defaultBuilder;
34+
defaultBuilder.setBuilderCustomizer(builderCustomizer);
35+
return defaultBuilder.build();
3336
}
3437

3538
private static <T> void set(Supplier<T> supplier, Consumer<T> consumer) {
@@ -46,14 +49,14 @@ private static <T> void set(Supplier<T> supplier, Consumer<T> consumer) {
4649
*/
4750
@SuppressWarnings("unchecked")
4851
private static <REQUEST, RESPONSE>
49-
DefaultHttpClientTelemetryBuilder<REQUEST, RESPONSE> unwrapBuilder(Object builder) {
50-
if (builder instanceof DefaultHttpClientTelemetryBuilder<?, ?>) {
51-
return (DefaultHttpClientTelemetryBuilder<REQUEST, RESPONSE>) builder;
52+
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> unwrapBuilder(Object builder) {
53+
if (builder instanceof DefaultHttpClientInstrumenterBuilder<?, ?>) {
54+
return (DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE>) builder;
5255
}
5356
try {
5457
Field field = builder.getClass().getDeclaredField("builder");
5558
field.setAccessible(true);
56-
return (DefaultHttpClientTelemetryBuilder<REQUEST, RESPONSE>) field.get(builder);
59+
return (DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE>) field.get(builder);
5760
} catch (Exception e) {
5861
throw new IllegalStateException("Could not access builder field", e);
5962
}

javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/JavaagentHttpClientInstrumenters.java

Lines changed: 3 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1313
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
1414
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter;
15-
import java.util.Optional;
16-
import java.lang.reflect.Field;
1715
import java.util.function.Consumer;
1816

1917
/**
@@ -40,8 +38,7 @@ public static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> create(
4038
// this is where an HttpClientTelemetryBuilder interface would be nice
4139
// instead of having to pass Object and using reflection to unwrap the underlying builder
4240
public static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> create(Object builder) {
43-
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> defaultBuilder = unwrapBuilder(builder);
44-
return create(defaultBuilder, customizer -> {});
41+
return create(builder, customizer -> {});
4542
}
4643

4744
public static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> create(
@@ -59,46 +56,7 @@ public static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> create(
5956
}
6057

6158
private static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> create(
62-
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> builder,
63-
Consumer<InstrumenterBuilder<REQUEST, RESPONSE>> builderCustomizer) {
64-
CommonConfig config = CommonConfig.get();
65-
set(config::getKnownHttpRequestMethods, builder::setKnownMethods);
66-
set(config::getClientRequestHeaders, builder::setCapturedRequestHeaders);
67-
set(config::getClientResponseHeaders, builder::setCapturedResponseHeaders);
68-
// is not exposed in the public API
69-
set(config::getPeerServiceResolver, builder::setPeerServiceResolver);
70-
set(
71-
config::shouldEmitExperimentalHttpClientTelemetry,
72-
builder::setEmitExperimentalHttpClientMetrics);
73-
// is not exposed in the public API
74-
builder.setBuilderCustomizer(builderCustomizer);
75-
return builder.build();
76-
}
77-
78-
/**
79-
* This method is used to access the builder field of the builder object.
80-
*
81-
* <p>This approach allows us to re-use the existing builder classes from the library modules
82-
*/
83-
@SuppressWarnings("unchecked")
84-
private static <REQUEST, RESPONSE>
85-
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> unwrapBuilder(Object builder) {
86-
if (builder instanceof DefaultHttpClientInstrumenterBuilder<?, ?>) {
87-
return (DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE>) builder;
88-
}
89-
try {
90-
Field field = builder.getClass().getDeclaredField("builder");
91-
field.setAccessible(true);
92-
return (DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE>) field.get(builder);
93-
} catch (Exception e) {
94-
throw new IllegalStateException("Could not access builder field", e);
95-
}
96-
}
97-
98-
private static <T> void set(Supplier<T> supplier, Consumer<T> consumer) {
99-
T t = supplier.get();
100-
if (t != null) {
101-
consumer.accept(t);
102-
}
59+
Object builder, Consumer<InstrumenterBuilder<REQUEST, RESPONSE>> builderCustomizer) {
60+
return HttpClientInstrumenterBuilder.configure(CommonConfig.get(), builder, builderCustomizer);
10361
}
10462
}

0 commit comments

Comments
 (0)