Skip to content

Commit 12a37b7

Browse files
committed
remove reflection
1 parent 9397547 commit 12a37b7

File tree

3 files changed

+19
-44
lines changed

3 files changed

+19
-44
lines changed

instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/common/client/AbstractKtorClientTelemetryBuilder.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import io.opentelemetry.api.common.AttributesBuilder
1313
import io.opentelemetry.context.Context
1414
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder
1515
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor
16+
import io.opentelemetry.instrumentation.ktor.v2_0.common.client.internal.Experimental
1617
import io.opentelemetry.instrumentation.ktor.v2_0.common.internal.KtorBuilderUtil
1718

1819
abstract class AbstractKtorClientTelemetryBuilder(
@@ -21,6 +22,7 @@ abstract class AbstractKtorClientTelemetryBuilder(
2122
companion object {
2223
init {
2324
KtorBuilderUtil.clientBuilderExtractor = { it.builder }
25+
Experimental.setSetEmitExperimentalTelemetry { builder, emit -> builder.builder.setEmitExperimentalHttpClientMetrics(emit) }
2426
}
2527
}
2628

instrumentation/ktor/ktor-2-common/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/common/client/AbstractKtorClientTracingBuilder.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,14 @@ abstract class AbstractKtorClientTracingBuilder(
160160
*
161161
* @param emitExperimentalHttpClientMetrics `true` if the experimental HTTP client metrics are to be emitted.
162162
*/
163-
@Deprecated("Please use method `Experimental.emitExperimentalHttpClientMetrics`")
163+
@Deprecated("Please use method `Experimental.emitExperimentalTelemetry`")
164164
fun setEmitExperimentalHttpClientMetrics(emitExperimentalHttpClientMetrics: Boolean) {
165165
if (emitExperimentalHttpClientMetrics) {
166166
emitExperimentalHttpClientMetrics()
167167
}
168168
}
169169

170-
@Deprecated("Please use method `Experimental.emitExperimentalHttpClientMetrics`")
170+
@Deprecated("Please use method `Experimental.emitExperimentalTelemetry`")
171171
fun emitExperimentalHttpClientMetrics() {
172172
clientBuilder.setEmitExperimentalHttpClientMetrics(true)
173173
}
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,25 @@
1-
/*
2-
* Copyright The OpenTelemetry Authors
3-
* SPDX-License-Identifier: Apache-2.0
4-
*/
5-
61
package io.opentelemetry.instrumentation.ktor.v2_0.common.client.internal
72

83
import io.opentelemetry.instrumentation.ktor.v2_0.common.client.AbstractKtorClientTelemetryBuilder
9-
import java.lang.reflect.InvocationTargetException
10-
import java.lang.reflect.Method
11-
import java.util.logging.Level
12-
import java.util.logging.Logger
13-
14-
/**
15-
* This class is internal and experimental. Its APIs are unstable and can change at any time. Its
16-
* APIs (or a version of them) may be promoted to the public stable API in the future, but no
17-
* guarantees are made.
18-
*/
19-
class Experimental {
4+
import java.util.function.BiConsumer
205

21-
companion object {
22-
private val logger: Logger = Logger.getLogger(Experimental::class.java.name)
6+
class Experimental private constructor() {
237

24-
private val emitExperimentalTelemetryMethod = getEmitExperimentalTelemetry()
8+
companion object {
9+
private var setEmitExperimentalTelemetry: BiConsumer<AbstractKtorClientTelemetryBuilder, Boolean>? = null
2510

26-
fun setEmitExperimentalTelemetry(builder: AbstractKtorClientTelemetryBuilder?, emitExperimentalTelemetry: Boolean) {
27-
if (emitExperimentalTelemetryMethod != null) {
28-
try {
29-
emitExperimentalTelemetryMethod.invoke(builder, emitExperimentalTelemetry)
30-
} catch (e: IllegalAccessException) {
31-
logger.log(Level.FINE, e.message, e)
32-
} catch (e: InvocationTargetException) {
33-
logger.log(Level.FINE, e.message, e)
11+
fun emitExperimentalTelemetry(
12+
builder: AbstractKtorClientTelemetryBuilder
13+
) {
14+
if (setEmitExperimentalTelemetry != null) {
15+
setEmitExperimentalTelemetry!!.accept(builder, true)
16+
}
3417
}
35-
}
36-
}
3718

38-
private fun getEmitExperimentalTelemetry(): Method? {
39-
try {
40-
val method = AbstractKtorClientTelemetryBuilder::class.java.getDeclaredMethod(
41-
"setEmitExperimentalHttpClientMetrics",
42-
Boolean::class.javaPrimitiveType
43-
)
44-
method.setAccessible(true)
45-
return method
46-
} catch (e: NoSuchMethodException) {
47-
logger.log(Level.FINE, e.message, e)
48-
return null
49-
}
19+
fun setSetEmitExperimentalTelemetry(
20+
setEmitExperimentalTelemetry: BiConsumer<AbstractKtorClientTelemetryBuilder, Boolean>?
21+
) {
22+
Companion.setEmitExperimentalTelemetry = setEmitExperimentalTelemetry
23+
}
5024
}
51-
}
5225
}

0 commit comments

Comments
 (0)