Skip to content

Commit 47e3dc5

Browse files
committed
make DefaultHttpClientTelemetryBuilder internal
1 parent 8ead80d commit 47e3dc5

File tree

20 files changed

+84
-63
lines changed

20 files changed

+84
-63
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.api.incubator.builder.internal;
7+
8+
import com.google.errorprone.annotations.CanIgnoreReturnValue;
9+
import io.opentelemetry.instrumentation.api.incubator.config.internal.CoreCommonConfig;
10+
import java.lang.reflect.Field;
11+
import java.util.function.Consumer;
12+
import java.util.function.Supplier;
13+
14+
/**
15+
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
16+
* any time.
17+
*/
18+
public class HttpClientInstrumenterBuilder {
19+
private HttpClientInstrumenterBuilder() {}
20+
21+
@CanIgnoreReturnValue
22+
public static <REQUEST, RESPONSE> DefaultHttpClientTelemetryBuilder<REQUEST, RESPONSE> configure(
23+
CoreCommonConfig config, Object builder) {
24+
DefaultHttpClientTelemetryBuilder<REQUEST, RESPONSE> defaultBuilder = unwrapBuilder(builder);
25+
set(config::getKnownHttpRequestMethods, defaultBuilder::setKnownMethods);
26+
set(config::getClientRequestHeaders, defaultBuilder::setCapturedRequestHeaders);
27+
set(config::getClientResponseHeaders, defaultBuilder::setCapturedResponseHeaders);
28+
set(config::getPeerServiceResolver, defaultBuilder::setPeerServiceResolver);
29+
set(
30+
config::shouldEmitExperimentalHttpClientTelemetry,
31+
defaultBuilder::setEmitExperimentalHttpClientMetrics);
32+
return defaultBuilder;
33+
}
34+
35+
private static <T> void set(Supplier<T> supplier, Consumer<T> consumer) {
36+
T t = supplier.get();
37+
if (t != null) {
38+
consumer.accept(t);
39+
}
40+
}
41+
42+
/**
43+
* This method is used to access the builder field of the builder object.
44+
*
45+
* <p>This approach allows us to re-use the existing builder classes from the library modules
46+
*/
47+
@SuppressWarnings("unchecked")
48+
private static <REQUEST, RESPONSE>
49+
DefaultHttpClientTelemetryBuilder<REQUEST, RESPONSE> unwrapBuilder(Object builder) {
50+
if (builder instanceof DefaultHttpClientTelemetryBuilder<?, ?>) {
51+
return (DefaultHttpClientTelemetryBuilder<REQUEST, RESPONSE>) builder;
52+
}
53+
try {
54+
Field field = builder.getClass().getDeclaredField("builder");
55+
field.setAccessible(true);
56+
return (DefaultHttpClientTelemetryBuilder<REQUEST, RESPONSE>) field.get(builder);
57+
} catch (Exception e) {
58+
throw new IllegalStateException("Could not access builder field", e);
59+
}
60+
}
61+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.api.incubator.internal.config;
6+
package io.opentelemetry.instrumentation.api.incubator.config.internal;
77

88
import java.util.function.Consumer;
99
import java.util.function.Supplier;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.api.incubator.internal.config;
6+
package io.opentelemetry.instrumentation.api.incubator.config.internal;
77

88
import static java.util.Collections.emptyMap;
99

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.api.incubator.internal.config;
6+
package io.opentelemetry.instrumentation.api.incubator.config.internal;
77

88
import static java.util.Collections.emptyList;
99

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.api.incubator.internal.config;
6+
package io.opentelemetry.instrumentation.api.incubator.config.internal;
77

88
import java.util.Objects;
99

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

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

instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import io.opentelemetry.context.Context;
1919
import io.opentelemetry.context.Scope;
20-
import io.opentelemetry.instrumentation.api.incubator.internal.config.CoreInstrumentationConfig;
20+
import io.opentelemetry.instrumentation.api.incubator.config.internal.CoreInstrumentationConfig;
2121
import io.opentelemetry.instrumentation.api.incubator.semconv.util.ClassAndMethod;
2222
import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge;
2323
import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig;

instrumentation/log4j/log4j-appender-2.17/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/log4j/appender/v2_17/Log4jHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
import io.opentelemetry.api.GlobalOpenTelemetry;
1111
import io.opentelemetry.api.logs.LogRecordBuilder;
12-
import io.opentelemetry.instrumentation.api.incubator.internal.config.CoreInstrumentationConfig;
12+
import io.opentelemetry.instrumentation.api.incubator.config.internal.CoreInstrumentationConfig;
1313
import io.opentelemetry.instrumentation.log4j.appender.v2_17.internal.ContextDataAccessor;
1414
import io.opentelemetry.instrumentation.log4j.appender.v2_17.internal.LogEventMapper;
1515
import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig;

instrumentation/logback/logback-appender-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/logback/appender/v1_0/LogbackSingletons.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import static java.util.Collections.emptyList;
99

10-
import io.opentelemetry.instrumentation.api.incubator.internal.config.CoreInstrumentationConfig;
10+
import io.opentelemetry.instrumentation.api.incubator.config.internal.CoreInstrumentationConfig;
1111
import io.opentelemetry.instrumentation.logback.appender.v1_0.internal.LoggingEventMapper;
1212
import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig;
1313
import java.util.List;

instrumentation/micrometer/micrometer-1.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/micrometer/v1_5/MicrometerSingletons.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import io.micrometer.core.instrument.MeterRegistry;
99
import io.opentelemetry.api.GlobalOpenTelemetry;
10-
import io.opentelemetry.instrumentation.api.incubator.internal.config.CoreInstrumentationConfig;
10+
import io.opentelemetry.instrumentation.api.incubator.config.internal.CoreInstrumentationConfig;
1111
import io.opentelemetry.instrumentation.micrometer.v1_5.OpenTelemetryMeterRegistry;
1212
import io.opentelemetry.javaagent.bootstrap.internal.InstrumentationConfig;
1313

0 commit comments

Comments
 (0)