All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.com.harmony.kotlin.data.mapper.ByteArrayMapper.kt Maven / Gradle / Ivy

package com.harmony.kotlin.data.mapper

import com.harmony.kotlin.error.DataSerializationException
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerializationException
import kotlinx.serialization.builtins.ListSerializer
import kotlinx.serialization.json.Json

class ObjectToByteArrayMapper(
  private val serializer: KSerializer,
  private val json: Json
) : Mapper {
  override fun map(from: T): ByteArray =
    try {
      json.encodeToString(serializer, from).encodeToByteArray()
    } catch (e: SerializationException) {
      throw DataSerializationException(cause = e)
    }
}

class ByteArrayToObjectMapper(
  private val serializer: KSerializer,
  private val json: Json
) : Mapper {
  override fun map(from: ByteArray): T =
    try {
      json.decodeFromString(serializer, from.decodeToString())
    } catch (e: SerializationException) {
      throw DataSerializationException(cause = e)
    }
}

class ObjectListToByteArrayMapper(
  private val serializer: KSerializer,
  private val json: Json
) : Mapper, ByteArray> {
  override fun map(from: List): ByteArray =
    try {
      json.encodeToString(ListSerializer(serializer), from).encodeToByteArray()
    } catch (e: SerializationException) {
      throw DataSerializationException(cause = e)
    }
}

class ByteArrayToObjectListMapper(
  private val serializer: KSerializer,
  private val json: Json
) : Mapper> {
  override fun map(from: ByteArray): List =
    try {
      json.decodeFromString(ListSerializer(serializer), from.decodeToString())
    } catch (e: SerializationException) {
      throw DataSerializationException(cause = e)
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy