Sam Garfinkel
09/11/2019, 1:52 PMDamian Lall
09/11/2019, 4:16 PMtype
attribute in the JSON.@TypeFor("type", TransmissionAdapter::class)
sealed class Transmission(val type: String)
class TransmissionAdapter: TypeAdapter<Transmission> {
override fun classFor(type: Any): KClass<out Transmission> = when (type as String) {
"user_join" -> UserJoin::class
"user_leave" -> UserLeave::class
"message" -> Message::class
else -> throw IllegalArgumentException("Received unknown type $type")
}
}
data class UserJoin(
val name: String
) : Transmission("user_join")
data class UserLeave(
val name: String
) : Transmission("user_leave")
data class Message(
val channel: String,
val text: String
) : Transmission("message")
Sam Garfinkel
09/11/2019, 4:39 PM