Skip to content

Commit 86240d0

Browse files
committed
Rename validation class to DataValidator
1 parent 4b3500b commit 86240d0

File tree

13 files changed

+62
-59
lines changed

13 files changed

+62
-59
lines changed

embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/injection/OpenTelemetryModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,6 @@ interface OpenTelemetryModule {
9191
*/
9292
fun applyConfiguration(
9393
sensitiveKeysBehavior: SensitiveKeysBehavior,
94-
bypassLimitsValidation: Boolean,
94+
bypassValidation: Boolean,
9595
)
9696
}

embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/injection/OpenTelemetryModuleImpl.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import io.embrace.android.embracesdk.internal.otel.impl.EmbOpenTelemetry
99
import io.embrace.android.embracesdk.internal.otel.impl.EmbTracerProvider
1010
import io.embrace.android.embracesdk.internal.otel.logs.LogSink
1111
import io.embrace.android.embracesdk.internal.otel.logs.LogSinkImpl
12-
import io.embrace.android.embracesdk.internal.otel.sdk.LimitsValidator
12+
import io.embrace.android.embracesdk.internal.otel.sdk.DataValidator
1313
import io.embrace.android.embracesdk.internal.otel.sdk.OtelSdkWrapper
1414
import io.embrace.android.embracesdk.internal.otel.spans.EmbraceSpanFactory
1515
import io.embrace.android.embracesdk.internal.otel.spans.EmbraceSpanFactoryImpl
@@ -79,23 +79,23 @@ internal class OpenTelemetryModuleImpl(
7979

8080
private var sensitiveKeysBehavior: SensitiveKeysBehavior? = null
8181

82-
override fun applyConfiguration(sensitiveKeysBehavior: SensitiveKeysBehavior, bypassLimitsValidation: Boolean) {
82+
override fun applyConfiguration(sensitiveKeysBehavior: SensitiveKeysBehavior, bypassValidation: Boolean) {
8383
this.sensitiveKeysBehavior = sensitiveKeysBehavior
84-
this.bypassLimitsValidation = bypassLimitsValidation
84+
this.bypassLimitsValidation = bypassValidation
8585
}
8686

8787
private var internalSpanStopCallback: ((spanId: String) -> Unit)? = null
8888

8989
private var bypassLimitsValidation: Boolean = false
9090

91-
private val limitsValidator: LimitsValidator = LimitsValidator(bypassLimitsValidation = ::bypassLimitsValidation)
91+
private val dataValidator: DataValidator = DataValidator(bypassValidation = ::bypassLimitsValidation)
9292

9393
private val embraceSpanFactory: EmbraceSpanFactory by singleton {
9494
EmbraceSpanFactoryImpl(
9595
tracer = sdkTracer,
9696
openTelemetryClock = openTelemetryClock,
9797
spanRepository = spanRepository,
98-
limitsValidator = limitsValidator,
98+
dataValidator = dataValidator,
9999
stopCallback = ::spanStopCallbackWrapper,
100100
redactionFunction = ::redactionFunction
101101
)
@@ -118,7 +118,7 @@ internal class OpenTelemetryModuleImpl(
118118
spanRepository = spanRepository,
119119
canStartNewSpan = currentSessionSpan::canStartNewSpan,
120120
initCallback = currentSessionSpan::initializeService,
121-
limitsValidator = limitsValidator
121+
dataValidator = dataValidator
122122
) { embraceSpanFactory }
123123
}
124124

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/sdk/LimitsValidator.kt renamed to embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/sdk/DataValidator.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,17 @@ import io.embrace.android.embracesdk.internal.config.instrumented.OtelLimitsConf
44
import io.embrace.android.embracesdk.internal.config.instrumented.schema.OtelLimitsConfig
55
import io.embrace.android.embracesdk.spans.EmbraceSpanEvent
66

7-
class LimitsValidator(
7+
/**
8+
* Used to validate limits and restrictions at instrumentation time imposed by Embrace before telemetry is recorded
9+
*/
10+
class DataValidator(
811
val otelLimitsConfig: OtelLimitsConfig = OtelLimitsConfigImpl,
9-
private val bypassLimitsValidation: (() -> Boolean) = { false },
12+
private val bypassValidation: (() -> Boolean) = { false },
1013
) {
1114
fun isNameValid(str: String, internal: Boolean): Boolean {
1215
return if (internal) {
1316
str.isNotBlank() && str.length <= otelLimitsConfig.getMaxInternalNameLength()
14-
} else if (!bypassLimitsValidation()) {
17+
} else if (!bypassValidation()) {
1518
str.isNotBlank() && str.length <= otelLimitsConfig.getMaxNameLength()
1619
} else {
1720
true
@@ -21,7 +24,7 @@ class LimitsValidator(
2124
fun isEventCountValid(events: List<EmbraceSpanEvent>, internal: Boolean): Boolean {
2225
return if (internal) {
2326
events.size <= otelLimitsConfig.getMaxSystemEventCount()
24-
} else if (!bypassLimitsValidation()) {
27+
} else if (!bypassValidation()) {
2528
events.size <= otelLimitsConfig.getMaxCustomEventCount()
2629
} else {
2730
true
@@ -31,7 +34,7 @@ class LimitsValidator(
3134
fun isAttributeCountValid(attributes: Map<String, String>, internal: Boolean): Boolean {
3235
return if (internal) {
3336
attributes.size <= otelLimitsConfig.getMaxSystemAttributeCount()
34-
} else if (!bypassLimitsValidation()) {
37+
} else if (!bypassValidation()) {
3538
attributes.size <= otelLimitsConfig.getMaxCustomAttributeCount()
3639
} else {
3740
true
@@ -42,7 +45,7 @@ class LimitsValidator(
4245
with(otelLimitsConfig) {
4346
return if (internal) {
4447
key.length <= getMaxInternalAttributeKeyLength() && value.length <= getMaxInternalAttributeValueLength()
45-
} else if (!bypassLimitsValidation()) {
48+
} else if (!bypassValidation()) {
4649
key.length <= getMaxCustomAttributeKeyLength() && value.length <= getMaxCustomAttributeValueLength()
4750
} else {
4851
true

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import io.opentelemetry.sdk.trace.data.SpanData
2424
fun AttributesBuilder.fromMap(
2525
attributes: Map<String, String>,
2626
internal: Boolean,
27-
limitsValidator: LimitsValidator
27+
limitsValidator: DataValidator
2828
): AttributesBuilder {
2929
attributes.filter {
3030
limitsValidator.isAttributeValid(it.key, it.value, internal) || it.key.isValidLongValueAttribute()

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

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import io.embrace.android.embracesdk.internal.otel.schema.EmbType
1010
import io.embrace.android.embracesdk.internal.otel.schema.ErrorCodeAttribute
1111
import io.embrace.android.embracesdk.internal.otel.schema.ErrorCodeAttribute.Failure.fromErrorCode
1212
import io.embrace.android.embracesdk.internal.otel.schema.LinkType
13-
import io.embrace.android.embracesdk.internal.otel.sdk.LimitsValidator
13+
import io.embrace.android.embracesdk.internal.otel.sdk.DataValidator
1414
import io.embrace.android.embracesdk.internal.otel.sdk.fromMap
1515
import io.embrace.android.embracesdk.internal.otel.sdk.hasEmbraceAttribute
1616
import io.embrace.android.embracesdk.internal.otel.sdk.id.OtelIds
@@ -44,7 +44,7 @@ class EmbraceSpanFactoryImpl(
4444
private val tracer: Tracer,
4545
private val openTelemetryClock: Clock,
4646
private val spanRepository: SpanRepository,
47-
private val limitsValidator: LimitsValidator = LimitsValidator(),
47+
private val dataValidator: DataValidator = DataValidator(),
4848
private val stopCallback: ((spanId: String) -> Unit)? = null,
4949
private var redactionFunction: ((key: String, value: String) -> String)? = null,
5050
) : EmbraceSpanFactory {
@@ -75,7 +75,7 @@ class EmbraceSpanFactoryImpl(
7575
otelSpanBuilderWrapper = otelSpanBuilderWrapper,
7676
openTelemetryClock = openTelemetryClock,
7777
spanRepository = spanRepository,
78-
limitsValidator = limitsValidator,
78+
dataValidator = dataValidator,
7979
stopCallback = stopCallback,
8080
redactionFunction = redactionFunction,
8181
autoTerminationMode = autoTerminationMode
@@ -86,7 +86,7 @@ private class EmbraceSpanImpl(
8686
private val otelSpanBuilderWrapper: OtelSpanBuilderWrapper,
8787
private val openTelemetryClock: Clock,
8888
private val spanRepository: SpanRepository,
89-
private val limitsValidator: LimitsValidator,
89+
private val dataValidator: DataValidator,
9090
private val stopCallback: ((spanId: String) -> Unit)? = null,
9191
private val redactionFunction: ((key: String, value: String) -> String)? = null,
9292
override val autoTerminationMode: AutoTerminationMode = AutoTerminationMode.NONE,
@@ -212,7 +212,7 @@ private class EmbraceSpanImpl(
212212
}
213213

214214
override fun addEvent(name: String, timestampMs: Long?, attributes: Map<String, String>?): Boolean =
215-
addObject(customEvents, customEventCount, limitsValidator.otelLimitsConfig.getMaxCustomEventCount()) {
215+
addObject(customEvents, customEventCount, dataValidator.otelLimitsConfig.getMaxCustomEventCount()) {
216216
EmbraceSpanEvent.create(
217217
name = name,
218218
timestampMs = timestampMs?.normalizeTimestampAsMillis() ?: openTelemetryClock.now().nanosToMillis(),
@@ -221,7 +221,7 @@ private class EmbraceSpanImpl(
221221
}
222222

223223
override fun recordException(exception: Throwable, attributes: Map<String, String>?): Boolean =
224-
addObject(customEvents, customEventCount, limitsValidator.otelLimitsConfig.getMaxCustomEventCount()) {
224+
addObject(customEvents, customEventCount, dataValidator.otelLimitsConfig.getMaxCustomEventCount()) {
225225
val eventAttributes = mutableMapOf<String, String>()
226226
if (attributes != null) {
227227
eventAttributes.putAll(attributes)
@@ -238,14 +238,14 @@ private class EmbraceSpanImpl(
238238
eventAttributes[ExceptionAttributes.EXCEPTION_STACKTRACE.key] = exception.truncatedStacktraceText()
239239

240240
EmbraceSpanEvent.create(
241-
name = limitsValidator.otelLimitsConfig.getExceptionEventName(),
241+
name = dataValidator.otelLimitsConfig.getExceptionEventName(),
242242
timestampMs = openTelemetryClock.now().nanosToMillis(),
243243
attributes = eventAttributes
244244
)
245245
}
246246

247247
override fun addSystemEvent(name: String, timestampMs: Long?, attributes: Map<String, String>?): Boolean =
248-
addObject(systemEvents, systemEventCount, limitsValidator.otelLimitsConfig.getMaxSystemEventCount()) {
248+
addObject(systemEvents, systemEventCount, dataValidator.otelLimitsConfig.getMaxSystemEventCount()) {
249249
EmbraceSpanEvent.create(
250250
name = name,
251251
timestampMs = timestampMs?.normalizeTimestampAsMillis() ?: openTelemetryClock.now().nanosToMillis(),
@@ -280,11 +280,11 @@ private class EmbraceSpanImpl(
280280
override fun getStartTimeMs(): Long? = spanStartTimeMs
281281

282282
override fun addAttribute(key: String, value: String): Boolean {
283-
if (customAttributes.size < limitsValidator.otelLimitsConfig.getMaxCustomAttributeCount() &&
284-
limitsValidator.isAttributeValid(key, value, otelSpanBuilderWrapper.internal)
283+
if (customAttributes.size < dataValidator.otelLimitsConfig.getMaxCustomAttributeCount() &&
284+
dataValidator.isAttributeValid(key, value, otelSpanBuilderWrapper.internal)
285285
) {
286286
synchronized(customAttributes) {
287-
if (customAttributes.size < limitsValidator.otelLimitsConfig.getMaxCustomAttributeCount() && isRecording) {
287+
if (customAttributes.size < dataValidator.otelLimitsConfig.getMaxCustomAttributeCount() && isRecording) {
288288
customAttributes[key] = value
289289
spanRepository.notifySpanUpdate()
290290
return true
@@ -296,7 +296,7 @@ private class EmbraceSpanImpl(
296296
}
297297

298298
override fun updateName(newName: String): Boolean {
299-
if (limitsValidator.isNameValid(newName, otelSpanBuilderWrapper.internal)) {
299+
if (dataValidator.isNameValid(newName, otelSpanBuilderWrapper.internal)) {
300300
synchronized(startedSpan) {
301301
if (!spanStarted() || isRecording) {
302302
updatedName = newName
@@ -311,12 +311,12 @@ private class EmbraceSpanImpl(
311311
}
312312

313313
override fun addSystemLink(linkedSpanContext: SpanContext, type: LinkType, attributes: Map<String, String>): Boolean =
314-
addObject(systemLinks, systemLinkCount, limitsValidator.otelLimitsConfig.getMaxSystemLinkCount()) {
314+
addObject(systemLinks, systemLinkCount, dataValidator.otelLimitsConfig.getMaxSystemLinkCount()) {
315315
EmbraceLinkData(linkedSpanContext, mutableMapOf(type.asPair()).apply { putAll(attributes) })
316316
}
317317

318318
override fun addLink(linkedSpanContext: SpanContext, attributes: Map<String, String>?): Boolean =
319-
addObject(customLinks, customLinkCount, limitsValidator.otelLimitsConfig.getMaxCustomLinkCount()) {
319+
addObject(customLinks, customLinkCount, dataValidator.otelLimitsConfig.getMaxCustomLinkCount()) {
320320
EmbraceLinkData(linkedSpanContext, attributes ?: emptyMap())
321321
}
322322

@@ -414,7 +414,7 @@ private class EmbraceSpanImpl(
414414

415415
(systemEvents + redactedCustomEvents).forEach { event ->
416416
val eventAttributes = if (event.attributes.isNotEmpty()) {
417-
Attributes.builder().fromMap(event.attributes, otelSpanBuilderWrapper.internal, limitsValidator).build()
417+
Attributes.builder().fromMap(event.attributes, otelSpanBuilderWrapper.internal, dataValidator).build()
418418
} else {
419419
Attributes.empty()
420420
}
@@ -433,7 +433,7 @@ private class EmbraceSpanImpl(
433433

434434
(systemLinks + redactedCustomLinks).forEach {
435435
val linkAttributes = if (it.attributes.isNotEmpty()) {
436-
Attributes.builder().fromMap(attributes = it.attributes, false, limitsValidator).build()
436+
Attributes.builder().fromMap(attributes = it.attributes, false, dataValidator).build()
437437
} else {
438438
Attributes.empty()
439439
}

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

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

33
import io.embrace.android.embracesdk.internal.otel.schema.EmbType
4-
import io.embrace.android.embracesdk.internal.otel.sdk.LimitsValidator
4+
import io.embrace.android.embracesdk.internal.otel.sdk.DataValidator
55
import io.embrace.android.embracesdk.internal.utils.Provider
66
import io.embrace.android.embracesdk.spans.AutoTerminationMode
77
import io.embrace.android.embracesdk.spans.EmbraceSpan
@@ -15,7 +15,7 @@ import io.embrace.android.embracesdk.spans.ErrorCode
1515
*/
1616
class EmbraceSpanService(
1717
private val spanRepository: SpanRepository,
18-
private val limitsValidator: LimitsValidator,
18+
private val dataValidator: DataValidator,
1919
private val canStartNewSpan: (parentSpan: EmbraceSpan?, internal: Boolean) -> Boolean,
2020
private val initCallback: (initTimeMs: Long) -> Unit,
2121
private val embraceSpanFactorySupplier: Provider<EmbraceSpanFactory>,
@@ -31,7 +31,7 @@ class EmbraceSpanService(
3131
if (!initialized()) {
3232
val realSpansService = SpanServiceImpl(
3333
spanRepository = spanRepository,
34-
limitsValidator = limitsValidator,
34+
dataValidator = dataValidator,
3535
embraceSpanFactory = embraceSpanFactorySupplier(),
3636
canStartNewSpan = canStartNewSpan,
3737
initCallback = initCallback

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

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

33
import io.embrace.android.embracesdk.internal.clock.nanosToMillis
44
import io.embrace.android.embracesdk.internal.otel.schema.EmbType
5-
import io.embrace.android.embracesdk.internal.otel.sdk.LimitsValidator
5+
import io.embrace.android.embracesdk.internal.otel.sdk.DataValidator
66
import io.embrace.android.embracesdk.internal.utils.EmbTrace
77
import io.embrace.android.embracesdk.spans.AutoTerminationMode
88
import io.embrace.android.embracesdk.spans.EmbraceSpan
@@ -16,7 +16,7 @@ import java.util.concurrent.atomic.AtomicBoolean
1616
internal class SpanServiceImpl(
1717
private val spanRepository: SpanRepository,
1818
private val embraceSpanFactory: EmbraceSpanFactory,
19-
private val limitsValidator: LimitsValidator,
19+
private val dataValidator: DataValidator,
2020
private val canStartNewSpan: (parentSpan: EmbraceSpan?, internal: Boolean) -> Boolean,
2121
private val initCallback: (initTimeMs: Long) -> Unit
2222
) : SpanService {
@@ -40,7 +40,7 @@ internal class SpanServiceImpl(
4040
autoTerminationMode: AutoTerminationMode,
4141
): EmbraceSdkSpan? {
4242
EmbTrace.trace("span-create") {
43-
return if (limitsValidator.isNameValid(name, internal) && canStartNewSpan(parent, internal)) {
43+
return if (dataValidator.isNameValid(name, internal) && canStartNewSpan(parent, internal)) {
4444
embraceSpanFactory.create(
4545
name = name,
4646
type = type,
@@ -58,7 +58,7 @@ internal class SpanServiceImpl(
5858
override fun createSpan(otelSpanBuilderWrapper: OtelSpanBuilderWrapper): EmbraceSdkSpan? {
5959
EmbTrace.trace("span-create") {
6060
return if (
61-
limitsValidator.isNameValid(otelSpanBuilderWrapper.initialSpanName, otelSpanBuilderWrapper.internal) &&
61+
dataValidator.isNameValid(otelSpanBuilderWrapper.initialSpanName, otelSpanBuilderWrapper.internal) &&
6262
canStartNewSpan(
6363
otelSpanBuilderWrapper.getParentContext().getEmbraceSpan(),
6464
otelSpanBuilderWrapper.internal
@@ -162,7 +162,7 @@ internal class SpanServiceImpl(
162162
internal: Boolean,
163163
events: List<EmbraceSpanEvent>,
164164
attributes: Map<String, String>,
165-
): Boolean = limitsValidator.isNameValid(name, internal) &&
166-
limitsValidator.isEventCountValid(events, internal) &&
167-
limitsValidator.isAttributeCountValid(attributes, internal)
165+
): Boolean = dataValidator.isNameValid(name, internal) &&
166+
dataValidator.isEventCountValid(events, internal) &&
167+
dataValidator.isAttributeCountValid(attributes, internal)
168168
}

embrace-android-otel/src/test/kotlin/io/embrace/android/embracesdk/internal/otel/spans/EmbraceSpanServiceTest.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import io.embrace.android.embracesdk.internal.clock.nanosToMillis
99
import io.embrace.android.embracesdk.internal.otel.config.OtelSdkConfig
1010
import io.embrace.android.embracesdk.internal.otel.logs.LogSinkImpl
1111
import io.embrace.android.embracesdk.internal.otel.schema.EmbType
12-
import io.embrace.android.embracesdk.internal.otel.sdk.LimitsValidator
12+
import io.embrace.android.embracesdk.internal.otel.sdk.DataValidator
1313
import io.embrace.android.embracesdk.internal.otel.sdk.OtelSdkWrapper
1414
import io.embrace.android.embracesdk.spans.EmbraceSpan
1515
import io.embrace.android.embracesdk.spans.EmbraceSpanEvent
@@ -49,7 +49,7 @@ internal class EmbraceSpanServiceTest {
4949
openTelemetryClock = fakeClock,
5050
configuration = otelSdkConfig,
5151
)
52-
val limitsValidator = LimitsValidator()
52+
val dataValidator = DataValidator()
5353

5454
return EmbraceSpanService(
5555
spanRepository = SpanRepository(),
@@ -60,18 +60,18 @@ internal class EmbraceSpanServiceTest {
6060
tracer = otelSdkWrapper.sdkTracer,
6161
openTelemetryClock = fakeClock,
6262
spanRepository = SpanRepository(),
63-
limitsValidator = limitsValidator
63+
dataValidator = dataValidator
6464
)
6565
},
66-
limitsValidator = limitsValidator
66+
dataValidator = dataValidator
6767
)
6868
}
6969

7070
@Test
7171
fun `verify default behaviour before initialization`() {
7272
val uninitializedService = EmbraceSpanService(
7373
spanRepository = SpanRepository(),
74-
limitsValidator = LimitsValidator(),
74+
dataValidator = DataValidator(),
7575
canStartNewSpan = ::canStartNewSpan,
7676
initCallback = ::initCallback,
7777
embraceSpanFactorySupplier = { FakeEmbraceSpanFactory() }

0 commit comments

Comments
 (0)