2018-03-10 22:20:34 +01:00
|
|
|
@file:JvmMultifileClass
|
|
|
|
@file:JvmName("DomainSerializers")
|
|
|
|
package org.moire.ultrasonic.cache.serializers
|
|
|
|
|
|
|
|
import com.twitter.serial.serializer.CollectionSerializers
|
|
|
|
import com.twitter.serial.serializer.ObjectSerializer
|
|
|
|
import com.twitter.serial.serializer.SerializationContext
|
|
|
|
import com.twitter.serial.stream.SerializerInput
|
|
|
|
import com.twitter.serial.stream.SerializerOutput
|
2018-03-18 17:30:55 +01:00
|
|
|
import org.moire.ultrasonic.cache.DomainEntitySerializer
|
2018-03-10 22:20:34 +01:00
|
|
|
import org.moire.ultrasonic.domain.MusicFolder
|
|
|
|
|
|
|
|
private const val SERIALIZATION_VERSION = 1
|
|
|
|
|
2018-03-18 17:30:55 +01:00
|
|
|
private val musicFolderSerializer = object : ObjectSerializer<MusicFolder>(SERIALIZATION_VERSION) {
|
2018-03-10 22:20:34 +01:00
|
|
|
|
|
|
|
override fun serializeObject(
|
2018-03-24 19:47:55 +01:00
|
|
|
context: SerializationContext,
|
|
|
|
output: SerializerOutput<out SerializerOutput<*>>,
|
|
|
|
item: MusicFolder
|
2018-03-10 22:20:34 +01:00
|
|
|
) {
|
|
|
|
output.writeString(item.id).writeString(item.name)
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun deserializeObject(
|
2018-03-24 19:47:55 +01:00
|
|
|
context: SerializationContext,
|
|
|
|
input: SerializerInput,
|
|
|
|
versionNumber: Int
|
2018-03-10 22:20:34 +01:00
|
|
|
): MusicFolder? {
|
|
|
|
if (versionNumber != SERIALIZATION_VERSION) return null
|
|
|
|
|
|
|
|
val id = input.readString() ?: return null
|
|
|
|
val name = input.readString() ?: return null
|
|
|
|
return MusicFolder(id, name)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-03-18 17:30:55 +01:00
|
|
|
/**
|
|
|
|
* Serializer/deserializer for [MusicFolder] domain entity.
|
|
|
|
*/
|
|
|
|
fun getMusicFolderSerializer(): DomainEntitySerializer<MusicFolder> = musicFolderSerializer
|
|
|
|
|
|
|
|
private val musicFolderListSerializer =
|
|
|
|
CollectionSerializers.getListSerializer(musicFolderSerializer)
|
|
|
|
|
2018-03-10 22:20:34 +01:00
|
|
|
/**
|
|
|
|
* Serializer/deserializer for [List] of [MusicFolder] items.
|
|
|
|
*/
|
2018-03-18 17:30:55 +01:00
|
|
|
fun getMusicFolderListSerializer(): DomainEntitySerializer<List<MusicFolder>> =
|
|
|
|
musicFolderListSerializer
|