Skip to content

Commit

Permalink
rename
Browse files Browse the repository at this point in the history
  • Loading branch information
zeitlinger committed Jun 22, 2024
1 parent 133bd85 commit c71366f
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 88 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.incubator.config.internal.CoreCommonConfig;
import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpClientExperimentalMetrics;
import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpClientPeerServiceAttributesExtractor;
import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpExperimentalAttributesExtractor;
Expand All @@ -24,11 +25,13 @@
import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanNameExtractor;
import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanNameExtractorBuilder;
import io.opentelemetry.instrumentation.api.semconv.http.HttpSpanStatusExtractor;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import javax.annotation.Nullable;

/**
Expand Down Expand Up @@ -192,4 +195,45 @@ public Instrumenter<REQUEST, RESPONSE> build() {
public OpenTelemetry getOpenTelemetry() {
return openTelemetry;
}

public static <REQUEST, RESPONSE>
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> unwrapAndConfigure(
CoreCommonConfig config, Object builder) {
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> defaultBuilder = unwrapBuilder(builder);
set(config::getKnownHttpRequestMethods, defaultBuilder::setKnownMethods);
set(config::getClientRequestHeaders, defaultBuilder::setCapturedRequestHeaders);
set(config::getClientResponseHeaders, defaultBuilder::setCapturedResponseHeaders);
set(config::getPeerServiceResolver, defaultBuilder::setPeerServiceResolver);
set(
config::shouldEmitExperimentalHttpClientTelemetry,
defaultBuilder::setEmitExperimentalHttpClientMetrics);
return defaultBuilder;
}

private static <T> void set(Supplier<T> supplier, Consumer<T> consumer) {
T t = supplier.get();
if (t != null) {
consumer.accept(t);
}
}

/**
* This method is used to access the builder field of the builder object.
*
* <p>This approach allows us to re-use the existing builder classes from the library modules
*/
@SuppressWarnings("unchecked")
private static <REQUEST, RESPONSE>
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> unwrapBuilder(Object builder) {
if (builder instanceof DefaultHttpClientInstrumenterBuilder<?, ?>) {
return (DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE>) builder;
}
try {
Field field = builder.getClass().getDeclaredField("builder");
field.setAccessible(true);
return (DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE>) field.get(builder);
} catch (Exception e) {
throw new IllegalStateException("Could not access builder field", e);
}
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

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

import io.opentelemetry.instrumentation.api.incubator.builder.internal.HttpClientInstrumenterBuilder;
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder;
import io.opentelemetry.instrumentation.api.incubator.config.internal.CoreCommonConfig;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;

Expand All @@ -17,7 +17,7 @@ public class InstrumentationConfigUtil {
private InstrumentationConfigUtil() {}

public static <T> T configureBuilder(ConfigProperties config, T builder) {
HttpClientInstrumenterBuilder.configure(
DefaultHttpClientInstrumenterBuilder.unwrapAndConfigure(
new CoreCommonConfig(new ConfigPropertiesBridge(config)), builder);
return builder;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder;
import io.opentelemetry.instrumentation.api.incubator.builder.internal.HttpClientInstrumenterBuilder;
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter;
Expand Down Expand Up @@ -58,7 +57,7 @@ public static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> create(
private static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> create(
Object builder, Consumer<InstrumenterBuilder<REQUEST, RESPONSE>> builderCustomizer) {
DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> defaultBuilder =
HttpClientInstrumenterBuilder.configure(CommonConfig.get(), builder);
DefaultHttpClientInstrumenterBuilder.unwrapAndConfigure(CommonConfig.get(), builder);
defaultBuilder.setBuilderCustomizer(builderCustomizer);
return defaultBuilder.build();
}
Expand Down

0 comments on commit c71366f

Please sign in to comment.