![JAR search and dependency download from the Maven repository](/logo.png)
jvmAndroidCommon.com.harmony.kotlin.data.mapper.ByteArrayMapper.kt Maven / Gradle / Ivy
package com.harmony.kotlin.data.mapper
import com.harmony.kotlin.error.DataSerializationException
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.io.ObjectInputStream
import java.io.ObjectOutputStream
import java.io.Serializable
/**
* Map a byte array to a class object
*/
class ByteArrayToModelMapper : Mapper {
override fun map(from: ByteArray): T = try {
from.toObject()
} catch (e: Exception) {
throw DataSerializationException(cause = e)
}
}
/**
* Map a class object to a byte array
*/
class ModelToByteArrayMapper : Mapper {
override fun map(from: T): ByteArray = try {
from.toByteArray()
} catch (e: Exception) {
throw DataSerializationException(cause = e)
}
}
/**
* Map a byte array to a list class object
*/
class ByteArrayToListModelMapper : Mapper> {
override fun map(from: ByteArray): List = try {
from.toObject()
} catch (e: Exception) {
throw DataSerializationException(cause = e)
}
}
/**
* Map a list class object to a byte array
*/
class ListModelToByteArrayMapper : Mapper, ByteArray> {
override fun map(from: List): ByteArray = try {
from.toByteArray()
} catch (e: Exception) {
throw DataSerializationException(cause = e)
}
}
private fun Collection.toByteArray(): ByteArray {
val bos = ByteArrayOutputStream()
return ObjectOutputStream(bos).use { oos ->
oos.writeObject(this)
oos.flush()
bos.toByteArray()
}
}
private fun Serializable.toByteArray(): ByteArray {
val bos = ByteArrayOutputStream()
return ObjectOutputStream(bos).use { oos ->
oos.writeObject(this)
oos.flush()
bos.toByteArray()
}
}
private fun ByteArray.toObject(): T {
return ObjectInputStream(ByteArrayInputStream(this)).use { ois ->
ois.readObject() as T
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy