Skip to content

Commit c71366f

Browse files
committed
rename
1 parent 133bd85 commit c71366f

File tree

5 files changed

+47
-88
lines changed

5 files changed

+47
-88
lines changed

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

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.google.errorprone.annotations.CanIgnoreReturnValue;
99
import io.opentelemetry.api.OpenTelemetry;
1010
import io.opentelemetry.context.propagation.TextMapSetter;
11+
import io.opentelemetry.instrumentation.api.incubator.config.internal.CoreCommonConfig;
1112
import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpClientExperimentalMetrics;
1213
import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpClientPeerServiceAttributesExtractor;
1314
import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpExperimentalAttributesExtractor;
@@ -24,11 +25,13 @@
2425
import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanNameExtractor;
2526
import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanNameExtractorBuilder;
2627
import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanStatusExtractor;
28+
import java.lang.reflect.Field;
2729
import java.util.ArrayList;
2830
import java.util.List;
2931
import java.util.Set;
3032
import java.util.function.Consumer;
3133
import java.util.function.Function;
34+
import java.util.function.Supplier;
3235
import javax.annotation.Nullable;
3336

3437
/**
@@ -192,4 +195,45 @@ public Instrumenter<REQUEST, RESPONSE> build() {
192195
public OpenTelemetry getOpenTelemetry() {
193196
return openTelemetry;
194197
}
198+
199+
public static <REQUEST, RESPONSE>
200+
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> unwrapAndConfigure(
201+
CoreCommonConfig config, Object builder) {
202+
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> defaultBuilder = unwrapBuilder(builder);
203+
set(config::getKnownHttpRequestMethods, defaultBuilder::setKnownMethods);
204+
set(config::getClientRequestHeaders, defaultBuilder::setCapturedRequestHeaders);
205+
set(config::getClientResponseHeaders, defaultBuilder::setCapturedResponseHeaders);
206+
set(config::getPeerServiceResolver, defaultBuilder::setPeerServiceResolver);
207+
set(
208+
config::shouldEmitExperimentalHttpClientTelemetry,
209+
defaultBuilder::setEmitExperimentalHttpClientMetrics);
210+
return defaultBuilder;
211+
}
212+
213+
private static <T> void set(Supplier<T> supplier, Consumer<T> consumer) {
214+
T t = supplier.get();
215+
if (t != null) {
216+
consumer.accept(t);
217+
}
218+
}
219+
220+
/**
221+
* This method is used to access the builder field of the builder object.
222+
*
223+
* <p>This approach allows us to re-use the existing builder classes from the library modules
224+
*/
225+
@SuppressWarnings("unchecked")
226+
private static <REQUEST, RESPONSE>
227+
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> unwrapBuilder(Object builder) {
228+
if (builder instanceof DefaultHttpClientInstrumenterBuilder<?, ?>) {
229+
return (DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE>) builder;
230+
}
231+
try {
232+
Field field = builder.getClass().getDeclaredField("builder");
233+
field.setAccessible(true);
234+
return (DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE>) field.get(builder);
235+
} catch (Exception e) {
236+
throw new IllegalStateException("Could not access builder field", e);
237+
}
238+
}
195239
}

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

Lines changed: 0 additions & 60 deletions
This file was deleted.

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/config/internal/CommonConfigSetter.java

Lines changed: 0 additions & 24 deletions
This file was deleted.

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/InstrumentationConfigUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
package io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties;
77

8-
import io.opentelemetry.instrumentation.api.incubator.builder.internal.HttpClientInstrumenterBuilder;
8+
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder;
99
import io.opentelemetry.instrumentation.api.incubator.config.internal.CoreCommonConfig;
1010
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1111

@@ -17,7 +17,7 @@ public class InstrumentationConfigUtil {
1717
private InstrumentationConfigUtil() {}
1818

1919
public static <T> T configureBuilder(ConfigProperties config, T builder) {
20-
HttpClientInstrumenterBuilder.configure(
20+
DefaultHttpClientInstrumenterBuilder.unwrapAndConfigure(
2121
new CoreCommonConfig(new ConfigPropertiesBridge(config)), builder);
2222
return builder;
2323
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import io.opentelemetry.api.GlobalOpenTelemetry;
99
import io.opentelemetry.context.propagation.TextMapSetter;
1010
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder;
11-
import io.opentelemetry.instrumentation.api.incubator.builder.internal.HttpClientInstrumenterBuilder;
1211
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1312
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
1413
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter;
@@ -58,7 +57,7 @@ public static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> create(
5857
private static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> create(
5958
Object builder, Consumer<InstrumenterBuilder<REQUEST, RESPONSE>> builderCustomizer) {
6059
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> defaultBuilder =
61-
HttpClientInstrumenterBuilder.configure(CommonConfig.get(), builder);
60+
DefaultHttpClientInstrumenterBuilder.unwrapAndConfigure(CommonConfig.get(), builder);
6261
defaultBuilder.setBuilderCustomizer(builderCustomizer);
6362
return defaultBuilder.build();
6463
}

0 commit comments

Comments
 (0)