Skip to content

Commit e101cb3

Browse files
committed
Fix immutability
Signed-off-by: Bence Hornák <[email protected]>
1 parent 9db495a commit e101cb3

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

kotlin-sdk/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ kotlin {
4747
sourceSets {
4848
commonMain.dependencies {
4949
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
50+
implementation("org.jetbrains.kotlinx:kotlinx-collections-immutable:0.4.0")
5051
}
5152
commonTest.dependencies {
5253
implementation("org.jetbrains.kotlin:kotlin-test:2.1.21")

kotlin-sdk/src/commonMain/kotlin/dev/openfeature/kotlin/sdk/ImmutableStructure.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package dev.openfeature.kotlin.sdk
22

3+
import kotlinx.collections.immutable.toImmutableList
4+
import kotlinx.collections.immutable.toImmutableMap
35
import kotlin.time.ExperimentalTime
46

57
class ImmutableStructure(attributes: Map<String, Value> = mapOf()) : Structure {
6-
private val attributes: Map<String, Value> = attributes.toMap()
8+
private val attributes: Map<String, Value> = attributes.toImmutableMap()
79

810
constructor(vararg pairs: Pair<String, Value>) : this(pairs.toMap())
911

@@ -16,18 +18,18 @@ class ImmutableStructure(attributes: Map<String, Value> = mapOf()) : Structure {
1618
}
1719

1820
override fun asMap(): Map<String, Value> {
19-
return attributes.toMap()
21+
return attributes
2022
}
2123

2224
override fun asObjectMap(): Map<String, Any?> {
23-
return attributes.mapValues { convertValue(it.value) }.toMap()
25+
return attributes.mapValues { convertValue(it.value) }.toImmutableMap()
2426
}
2527

2628
@OptIn(ExperimentalTime::class)
2729
private fun convertValue(value: Value): Any? {
2830
return when (value) {
29-
is Value.List -> value.list.map { t -> convertValue(t) }.toList()
30-
is Value.Structure -> value.structure.mapValues { t -> convertValue(t.value) }.toMap()
31+
is Value.List -> value.list.map { t -> convertValue(t) }.toImmutableList()
32+
is Value.Structure -> value.structure.mapValues { t -> convertValue(t.value) }.toImmutableMap()
3133
is Value.Null -> return null
3234
is Value.String -> value.asString()
3335
is Value.Boolean -> value.asBoolean()

0 commit comments

Comments
 (0)