Skip to content

Commit c01355f

Browse files
committed
refactor: reduce otel java usage
1 parent 2e81949 commit c01355f

File tree

45 files changed

+147
-661
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+147
-661
lines changed

embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/payload/EnvelopeExt.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package io.embrace.android.embracesdk.internal.payload
22

33
import io.embrace.android.embracesdk.internal.otel.schema.EmbType
44
import io.embrace.android.embracesdk.internal.otel.sdk.findAttributeValue
5-
import io.embrace.android.embracesdk.internal.otel.sdk.hasEmbraceAttribute
65
import io.embrace.android.embracesdk.internal.otel.spans.hasEmbraceAttribute
76
import io.opentelemetry.semconv.incubating.SessionIncubatingAttributes
87

embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/injection/OpenTelemetryModuleImplTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import io.embrace.android.embracesdk.internal.otel.logs.LogSinkImpl
44
import io.embrace.android.embracesdk.internal.otel.spans.EmbraceSpanService
55
import io.embrace.android.embracesdk.internal.otel.spans.SpanSinkImpl
66
import io.embrace.android.embracesdk.internal.spans.CurrentSessionSpanImpl
7+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
78
import org.junit.Assert.assertTrue
89
import org.junit.Test
910

11+
@OptIn(ExperimentalApi::class)
1012
internal class OpenTelemetryModuleImplTest {
1113
@Test
1214
fun testInitModuleImplDefaults() {

embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/logs/EmbraceLogRecordDataTest.kt

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

embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/resurrection/PayloadResurrectionServiceImplTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ import io.embrace.android.embracesdk.internal.otel.payload.toEmbracePayload
3636
import io.embrace.android.embracesdk.internal.otel.schema.EmbType
3737
import io.embrace.android.embracesdk.internal.otel.sdk.findAttributeValue
3838
import io.embrace.android.embracesdk.internal.otel.sdk.id.OtelIds
39-
import io.embrace.android.embracesdk.internal.otel.sdk.toEmbraceSpanData
4039
import io.embrace.android.embracesdk.internal.otel.spans.EmbraceSpanData
4140
import io.embrace.android.embracesdk.internal.payload.Envelope
4241
import io.embrace.android.embracesdk.internal.payload.NativeCrashData
4342
import io.embrace.android.embracesdk.internal.payload.SessionPayload
4443
import io.embrace.android.embracesdk.internal.payload.getSessionSpan
44+
import io.embrace.android.embracesdk.internal.toEmbraceSpanData
4545
import io.embrace.android.embracesdk.spans.ErrorCode
4646
import io.embrace.opentelemetry.kotlin.ExperimentalApi
4747
import org.junit.Assert.assertEquals

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/attrs/EmbraceAttributeKeyExt.kt

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

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/impl/EmbInvalidSpan.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package io.embrace.android.embracesdk.internal.otel.impl
22

33
import io.embrace.opentelemetry.kotlin.ExperimentalApi
4-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaSpanContext
54
import io.embrace.opentelemetry.kotlin.attributes.AttributeContainer
6-
import io.embrace.opentelemetry.kotlin.k2j.tracing.SpanContextAdapter
5+
import io.embrace.opentelemetry.kotlin.k2j.tracing.model.invalid
76
import io.embrace.opentelemetry.kotlin.tracing.StatusCode
87
import io.embrace.opentelemetry.kotlin.tracing.model.Link
98
import io.embrace.opentelemetry.kotlin.tracing.model.Span
@@ -21,7 +20,7 @@ internal class EmbInvalidSpan : Span {
2120

2221
override var name: String = ""
2322
override val parent: SpanContext? = null
24-
override val spanContext: SpanContext = SpanContextAdapter(OtelJavaSpanContext.getInvalid())
23+
override val spanContext: SpanContext = SpanContext.invalid()
2524
override val spanKind: SpanKind = SpanKind.INTERNAL
2625
override val startTimestamp: Long = 0
2726
override var status: StatusCode = StatusCode.Unset

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/impl/EmbSpan.kt

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

33
import io.embrace.android.embracesdk.internal.clock.nanosToMillis
44
import io.embrace.android.embracesdk.internal.otel.spans.EmbraceSdkSpan
5-
import io.embrace.android.embracesdk.internal.otel.toOtelKotlin
65
import io.embrace.android.embracesdk.internal.payload.Attribute
76
import io.embrace.opentelemetry.kotlin.Clock
87
import io.embrace.opentelemetry.kotlin.ExperimentalApi
9-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaSpanContext
10-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaTraceFlags
11-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaTraceState
128
import io.embrace.opentelemetry.kotlin.attributes.AttributeContainer
139
import io.embrace.opentelemetry.kotlin.k2j.tracing.SpanContextAdapter
1410
import io.embrace.opentelemetry.kotlin.k2j.tracing.convertToOtelJava
11+
import io.embrace.opentelemetry.kotlin.k2j.tracing.model.create
12+
import io.embrace.opentelemetry.kotlin.k2j.tracing.model.default
13+
import io.embrace.opentelemetry.kotlin.k2j.tracing.model.invalid
1514
import io.embrace.opentelemetry.kotlin.tracing.StatusCode
1615
import io.embrace.opentelemetry.kotlin.tracing.model.Link
1716
import io.embrace.opentelemetry.kotlin.tracing.model.Span
1817
import io.embrace.opentelemetry.kotlin.tracing.model.SpanContext
1918
import io.embrace.opentelemetry.kotlin.tracing.model.SpanEvent
2019
import io.embrace.opentelemetry.kotlin.tracing.model.SpanKind
20+
import io.embrace.opentelemetry.kotlin.tracing.model.TraceFlags
21+
import io.embrace.opentelemetry.kotlin.tracing.model.TraceState
2122

2223
@OptIn(ExperimentalApi::class)
2324
class EmbSpan(
@@ -66,7 +67,7 @@ class EmbSpan(
6667
}
6768

6869
override val spanContext: SpanContext
69-
get() = SpanContextAdapter(impl.spanContext ?: OtelJavaSpanContext.getInvalid())
70+
get() = impl.spanContext?.let(::SpanContextAdapter) ?: SpanContext.invalid()
7071

7172
override fun isRecording(): Boolean = impl.isRecording
7273

@@ -129,11 +130,11 @@ class EmbSpan(
129130
}
130131

131132
private fun io.embrace.android.embracesdk.internal.payload.Link.retrieveSpanContext(): SpanContext {
132-
return OtelJavaSpanContext.create(
133-
checkNotNull(traceId),
134-
checkNotNull(spanId),
135-
OtelJavaTraceFlags.getDefault(),
136-
OtelJavaTraceState.getDefault()
137-
).toOtelKotlin()
133+
return SpanContext.create(
134+
traceId = checkNotNull(traceId),
135+
spanId = checkNotNull(spanId),
136+
traceFlags = TraceFlags.default(),
137+
traceState = TraceState.default(),
138+
)
138139
}
139140
}

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/payload/LogMapper.kt

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,8 @@ package io.embrace.android.embracesdk.internal.otel.payload
33
import io.embrace.android.embracesdk.internal.payload.Attribute
44
import io.embrace.android.embracesdk.internal.payload.Log
55
import io.embrace.opentelemetry.kotlin.ExperimentalApi
6-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaAttributes
7-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaLogRecordData
86
import io.embrace.opentelemetry.kotlin.logging.model.ReadableLogRecord
97

10-
@Suppress("DEPRECATION") // suppress for backwards compat
11-
fun OtelJavaLogRecordData.toEmbracePayload(): Log {
12-
val isSpanContextValid = spanContext.isValid
13-
return Log(
14-
traceId = if (isSpanContextValid) spanContext.traceId else null,
15-
spanId = if (isSpanContextValid) spanContext.spanId else null,
16-
timeUnixNano = timestampEpochNanos,
17-
severityNumber = severity.severityNumber,
18-
severityText = severityText,
19-
body = body.asString(),
20-
attributes = attributes.toEmbracePayload()
21-
)
22-
}
23-
248
@OptIn(ExperimentalApi::class)
259
fun ReadableLogRecord.toEmbracePayload(): Log {
2610
val isSpanContextValid = spanContext.isValid
@@ -34,6 +18,3 @@ fun ReadableLogRecord.toEmbracePayload(): Log {
3418
attributes = attributes.map { (key, value) -> Attribute(key, value.toString()) }
3519
)
3620
}
37-
38-
fun OtelJavaAttributes.toEmbracePayload(): List<Attribute> =
39-
this.asMap().entries.map { Attribute(it.key.key, it.value.toString()) }

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/payload/SpanMapper.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:OptIn(ExperimentalApi::class)
2+
13
package io.embrace.android.embracesdk.internal.otel.payload
24

35
import io.embrace.android.embracesdk.internal.clock.nanosToMillis

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

Lines changed: 5 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -2,96 +2,32 @@ package io.embrace.android.embracesdk.internal.otel.sdk
22

33
import io.embrace.android.embracesdk.internal.clock.nanosToMillis
44
import io.embrace.android.embracesdk.internal.otel.attrs.EmbraceAttribute
5-
import io.embrace.android.embracesdk.internal.otel.attrs.EmbraceAttributeKey
6-
import io.embrace.android.embracesdk.internal.otel.attrs.asOtelAttributeKey
7-
import io.embrace.android.embracesdk.internal.otel.payload.toEmbracePayload
85
import io.embrace.android.embracesdk.internal.otel.spans.EmbraceSpanData
96
import io.embrace.android.embracesdk.internal.payload.Attribute
107
import io.embrace.android.embracesdk.internal.payload.Link
118
import io.embrace.android.embracesdk.spans.EmbraceSpanEvent
129
import io.embrace.opentelemetry.kotlin.ExperimentalApi
13-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaAttributes
14-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaAttributesBuilder
15-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaEventData
16-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaLinkData
17-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaLogRecordBuilder
18-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaSpan
19-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaSpanData
20-
import io.embrace.opentelemetry.kotlin.k2j.tracing.convertToOtelKotlin
2110
import io.embrace.opentelemetry.kotlin.tracing.model.ReadableLink
2211
import io.embrace.opentelemetry.kotlin.tracing.model.ReadableSpan
2312
import io.embrace.opentelemetry.kotlin.tracing.model.ReadableSpanEvent
2413
import io.embrace.opentelemetry.kotlin.tracing.model.Span
2514

2615
/**
27-
* Populate an [AttributesBuilder] with String key-value pairs from a [Map]
16+
* Creates a sanitized map of attributes.
2817
*/
29-
fun OtelJavaAttributesBuilder.fromMap(
30-
attributes: Map<String, String>,
18+
fun Map<String, String>.sanitizeAttributesMap(
3119
internal: Boolean,
3220
limitsValidator: DataValidator,
33-
): OtelJavaAttributesBuilder {
34-
attributes.filter {
21+
): Map<String, String> {
22+
return filter {
3523
limitsValidator.isAttributeValid(it.key, it.value, internal) || it.key.isValidLongValueAttribute()
36-
}.forEach {
37-
put(it.key, it.value)
38-
}
39-
return this
24+
}.toMap()
4025
}
4126

42-
/**
43-
* Returns the attributes as a new Map<String, String>
44-
*/
45-
fun OtelJavaAttributes.toStringMap(): Map<String, String> = asMap().entries.associate {
46-
it.key.key.toString() to it.value.toString()
47-
}
48-
49-
fun OtelJavaLinkData.toEmbracePayload() = Link(
50-
spanId = spanContext.spanId,
51-
traceId = spanContext.traceId,
52-
attributes = attributes.toEmbracePayload(),
53-
isRemote = spanContext.isRemote
54-
)
55-
56-
fun OtelJavaLogRecordBuilder.setEmbraceAttribute(embraceAttribute: EmbraceAttribute): OtelJavaLogRecordBuilder {
57-
setAttribute(embraceAttribute.key.asOtelAttributeKey(), embraceAttribute.value)
58-
return this
59-
}
60-
61-
fun OtelJavaSpan.setEmbraceAttribute(key: EmbraceAttributeKey, value: String): OtelJavaSpan {
62-
setAttribute(key.name, value)
63-
return this
64-
}
65-
66-
fun OtelJavaSpan.setEmbraceAttribute(embraceAttribute: EmbraceAttribute): OtelJavaSpan =
67-
this@setEmbraceAttribute.setEmbraceAttribute(embraceAttribute.key, embraceAttribute.value)
68-
6927
@OptIn(ExperimentalApi::class)
7028
fun Span.setEmbraceAttribute(embraceAttribute: EmbraceAttribute) =
7129
setStringAttribute(embraceAttribute.key.name, embraceAttribute.value)
7230

73-
@OptIn(ExperimentalApi::class)
74-
fun OtelJavaSpanData.toEmbraceSpanData(): EmbraceSpanData = EmbraceSpanData(
75-
traceId = spanContext.traceId,
76-
spanId = spanContext.spanId,
77-
parentSpanId = parentSpanId,
78-
name = name,
79-
startTimeNanos = startEpochNanos,
80-
endTimeNanos = endEpochNanos,
81-
status = status.statusCode.convertToOtelKotlin(),
82-
events = events?.mapNotNull { it.toEmbracePayload() } ?: emptyList(),
83-
attributes = attributes.toStringMap(),
84-
links = links.map { it.toEmbracePayload() }
85-
)
86-
87-
private fun OtelJavaEventData.toEmbracePayload(): EmbraceSpanEvent? {
88-
return EmbraceSpanEvent.create(
89-
name = name,
90-
timestampMs = epochNanos.nanosToMillis(),
91-
attributes = attributes.toStringMap(),
92-
)
93-
}
94-
9531
@OptIn(ExperimentalApi::class)
9632
fun ReadableSpan.toEmbracePayload(): EmbraceSpanData = EmbraceSpanData(
9733
traceId = spanContext.traceId,
@@ -122,6 +58,3 @@ fun ReadableSpanEvent.toEmbracePayload(): EmbraceSpanEvent? {
12258
attributes = attributes.mapValues { it.value.toString() },
12359
)
12460
}
125-
126-
fun OtelJavaAttributes.hasEmbraceAttribute(embraceAttribute: EmbraceAttribute): Boolean =
127-
asMap()[embraceAttribute.key.asOtelAttributeKey()] == embraceAttribute.value

0 commit comments

Comments
 (0)