Skip to content

Commit ce7e47e

Browse files
committed
feat(model-api): serializer for ConceptReference
1 parent f2c8000 commit ce7e47e

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

model-api/src/commonMain/kotlin/org/modelix/model/api/ConceptReference.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,16 @@
1313
*/
1414
package org.modelix.model.api
1515

16+
import kotlinx.serialization.KSerializer
17+
import kotlinx.serialization.Serializable
18+
import kotlinx.serialization.descriptors.PrimitiveKind
19+
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
20+
import kotlinx.serialization.descriptors.SerialDescriptor
21+
import kotlinx.serialization.encoding.Decoder
22+
import kotlinx.serialization.encoding.Encoder
1623
import org.modelix.model.area.IArea
1724

25+
@Serializable(with = ConceptReferenceKSerializer::class)
1826
data class ConceptReference(val uid: String) : IConceptReference {
1927
@Deprecated("use ILanguageRepository.resolveConcept")
2028
override fun resolve(area: IArea?): IConcept? {
@@ -34,3 +42,16 @@ data class ConceptReference(val uid: String) : IConceptReference {
3442
return uid
3543
}
3644
}
45+
46+
class ConceptReferenceKSerializer : KSerializer<ConceptReference> {
47+
override fun deserialize(decoder: Decoder): ConceptReference {
48+
val serialized = decoder.decodeString()
49+
return ConceptReference(serialized)
50+
}
51+
52+
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("modelix.ConceptReference", PrimitiveKind.STRING)
53+
54+
override fun serialize(encoder: Encoder, value: ConceptReference) {
55+
encoder.encodeString(value.uid)
56+
}
57+
}

model-api/src/commonMain/kotlin/org/modelix/model/api/IConceptReference.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import org.modelix.model.area.IArea
1818
/**
1919
* Reference to an [IConcept].
2020
*/
21+
@Deprecated("use ConceptReference")
2122
interface IConceptReference {
2223
companion object {
2324
private var deserializers: Map<Any, ((String) -> IConceptReference?)> = LinkedHashMap()

0 commit comments

Comments
 (0)