Skip to content

Commit 2058d65

Browse files
Merge pull request #2299 from embrace-io/further-kotlin-dsl-usage
Setup exporters correctly via Kotlin API
2 parents b22e5c0 + 17aef18 commit 2058d65

File tree

8 files changed

+24
-11
lines changed

8 files changed

+24
-11
lines changed

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/sdk/OtelSdkWrapper.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import io.embrace.opentelemetry.kotlin.aliases.OtelJavaSdkLoggerProvider
2020
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaSdkTracerProvider
2121
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaSpanLimits
2222
import io.embrace.opentelemetry.kotlin.compatWithOtelJava
23+
import io.embrace.opentelemetry.kotlin.j2k.logging.export.OtelJavaLogRecordExporterAdapter
24+
import io.embrace.opentelemetry.kotlin.j2k.tracing.export.OtelJavaSpanExporterAdapter
2325
import io.embrace.opentelemetry.kotlin.kotlinApi
2426
import io.embrace.opentelemetry.kotlin.tracing.Tracer
2527

@@ -97,14 +99,14 @@ class OtelSdkWrapper(
9799
* Creates an instance of opentelemetry-kotlin using the Kotlin API's DSL, rather than the opentelemetry-java
98100
* API.
99101
*/
100-
@Suppress("unused", "UNREACHABLE_CODE")
102+
@Suppress("unused")
101103
private val kotlinApiViaDsl: OpenTelemetry by lazy {
102104
OpenTelemetryInstance.kotlinApi(
103105
loggerProvider = {
104106
resource(configuration.resourceAction)
105107
addLogRecordProcessor(
106108
DefaultLogRecordProcessor(
107-
TODO()
109+
OtelJavaLogRecordExporterAdapter(configuration.otelJavaLogRecordExporter)
108110
)
109111
)
110112
},
@@ -117,7 +119,7 @@ class OtelSdkWrapper(
117119
}
118120
addSpanProcessor(
119121
DefaultSpanProcessor(
120-
TODO(),
122+
OtelJavaSpanExporterAdapter(configuration.otelJavaSpanExporter),
121123
configuration.processIdentifier
122124
)
123125
)

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/spans/DefaultSpanProcessor.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,6 @@ class DefaultSpanProcessor(
3434

3535
override fun forceFlush(): OperationResultCode = OperationResultCode.Success
3636
override fun shutdown(): OperationResultCode = OperationResultCode.Success
37+
override fun isEndRequired(): Boolean = true
38+
override fun isStartRequired(): Boolean = true
3739
}

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/wrapper/KotlinSpanContextWrapper.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package io.embrace.android.embracesdk.internal.otel.wrapper
22

3+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
34
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaSpanContext
45
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaTraceFlags
56
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaTraceState
67
import io.embrace.opentelemetry.kotlin.tracing.model.SpanContext
78

9+
@OptIn(ExperimentalApi::class)
810
class KotlinSpanContextWrapper(
911
private val impl: SpanContext,
1012
) : OtelJavaSpanContext {

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/wrapper/KotlinTraceStateWrapper.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package io.embrace.android.embracesdk.internal.otel.wrapper
22

33
import android.os.Build
4+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
45
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaTraceState
56
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaTraceStateBuilder
67
import io.embrace.opentelemetry.kotlin.tracing.model.TraceState
78
import java.util.function.BiConsumer
89

10+
@OptIn(ExperimentalApi::class)
911
class KotlinTraceStateWrapper(
1012
private val impl: TraceState,
1113
) : OtelJavaTraceState {

embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeReadWriteLogRecord.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,26 @@ package io.embrace.android.embracesdk.fakes
22

33
import io.embrace.opentelemetry.kotlin.ExperimentalApi
44
import io.embrace.opentelemetry.kotlin.InstrumentationScopeInfo
5+
import io.embrace.opentelemetry.kotlin.attributes.AttributeContainer
56
import io.embrace.opentelemetry.kotlin.context.Context
67
import io.embrace.opentelemetry.kotlin.logging.model.ReadWriteLogRecord
78
import io.embrace.opentelemetry.kotlin.logging.model.SeverityNumber
89
import io.embrace.opentelemetry.kotlin.resource.Resource
9-
import io.embrace.opentelemetry.kotlin.tracing.model.TraceFlags
10+
import io.embrace.opentelemetry.kotlin.tracing.model.SpanContext
1011

1112
@OptIn(ExperimentalApi::class)
12-
class FakeReadWriteLogRecord : ReadWriteLogRecord {
13-
override val attributes: MutableMap<String, Any> = mutableMapOf()
13+
class FakeReadWriteLogRecord(
14+
private val attributeContainer: AttributeContainer = FakeAttributeContainer()
15+
) : ReadWriteLogRecord, AttributeContainer by attributeContainer {
16+
1417
override var body: String? = null
1518
override val context: Context? = null
1619
override val instrumentationScopeInfo: InstrumentationScopeInfo? = null
1720
override var observedTimestamp: Long? = null
1821
override val resource: Resource? = null
1922
override var severityNumber: SeverityNumber? = null
2023
override var severityText: String? = null
21-
override var spanId: String? = null
2224
override var timestamp: Long? = null
23-
override var traceFlags: TraceFlags? = null
24-
override var traceId: String? = null
25+
override var spanContext: SpanContext = FakeSpanContext()
26+
override val attributes: Map<String, Any> = attributeContainer.attributes()
2527
}

embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeReadWriteSpan.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ class FakeReadWriteSpan(
2222
get() = throw UnsupportedOperationException()
2323

2424
override fun hasEnded(): Boolean = true
25+
override val endTimestamp: Long? = null
2526
}

embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeSpanContext.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.embrace.android.embracesdk.fakes
22

3+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
34
import io.embrace.opentelemetry.kotlin.tracing.model.SpanContext
45
import io.embrace.opentelemetry.kotlin.tracing.model.TraceFlags
56
import io.embrace.opentelemetry.kotlin.tracing.model.TraceState
67

8+
@ExperimentalApi
79
class FakeSpanContext : SpanContext {
810
override val isRemote: Boolean = false
911
override val isValid: Boolean = false

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ openTelemetryCore = "1.51.0"
1313
openTelementrySemConv = "1.29.0-alpha"
1414
moshi = "1.15.2"
1515
lifecycle = "2.7.0" # version pinned to 2.7.0 because of AGP bug
16-
otelKotlin = "0.1.4"
16+
otelKotlin = "0.2.0"
1717
protobuf = "4.31.1"
1818
profileinstaller = "1.3.1" # version pinned to 1.3.1 because of AGP bug
1919
okhttp = "4.12.0"
@@ -85,7 +85,7 @@ apktool-lib = { module = "org.apktool:apktool-lib", version.ref = "apktoolLib" }
8585
bundletool = { module = "com.android.tools.build:bundletool", version.ref = "bundletool" }
8686
opentelemetry-kotlin-api = { module = "io.embrace.opentelemetry.kotlin:opentelemetry-kotlin-api", version.ref = "otelKotlin" }
8787
opentelemetry-kotlin-api-ext = { module = "io.embrace.opentelemetry.kotlin:opentelemetry-kotlin-api-ext", version.ref = "otelKotlin" }
88-
opentelemetry-kotlin-compat = { module = "io.embrace.opentelemetry.kotlin:compat-kotlin-to-official", version.ref = "otelKotlin" }
88+
opentelemetry-kotlin-compat = { module = "io.embrace.opentelemetry.kotlin:opentelemetry-kotlin-compat", version.ref = "otelKotlin" }
8989
opentelemetry-java-aliases = { module = "io.embrace.opentelemetry.kotlin:opentelemetry-java-typealiases", version.ref = "otelKotlin" }
9090

9191
[plugins]

0 commit comments

Comments
 (0)