✨ Utvidet feilmelding klasse og lagde serialisering for LocalDate med KotlinX
Co-authored-by: Sindre Kjelsrud <sindre.kjelsrud@nav.no> Co-authored-by: Amalie Mansåker <amalie.erdal.mansaker@nav.no>
This commit is contained in:
parent
c64a533786
commit
eba022a416
5 changed files with 74 additions and 15 deletions
|
@ -1,13 +0,0 @@
|
||||||
package no.nav.helse.sprik
|
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class Feil(
|
|
||||||
val tittel: String,
|
|
||||||
val beskrivelse: String,
|
|
||||||
) {
|
|
||||||
override fun toString(): String {
|
|
||||||
return "Feil(${tittel}\n${beskrivelse})"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
@file:UseSerializers(
|
||||||
|
LocalDateSerializer::class
|
||||||
|
)
|
||||||
|
|
||||||
|
package no.nav.helse.sprik.modell
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
import kotlinx.serialization.UseSerializers
|
||||||
|
import no.nav.helse.sprik.serializers.LocalDateSerializer
|
||||||
|
import java.time.LocalDate
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Objekt for feilmeldinger i Sprik
|
||||||
|
* */
|
||||||
|
@Serializable
|
||||||
|
class Feilmelding(
|
||||||
|
val tittel: String,
|
||||||
|
val beskrivelse: String,
|
||||||
|
@Serializable(LocalDateSerializer::class)
|
||||||
|
val dato: LocalDate? = null, //Krever en spesiallaget serialiserer i KotlinX
|
||||||
|
val tags: ArrayList<String> = arrayListOf<String>()
|
||||||
|
//val bilde: String,
|
||||||
|
) {
|
||||||
|
fun addTag(tagText: String){
|
||||||
|
tags.add(tagText)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun removeTag(tagText: String){
|
||||||
|
tags.removeAt(tags.indexOf(tagText))
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toString(): String {
|
||||||
|
return "Feilmelding(\n${tittel}\n${beskrivelse}\n)"
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,8 +10,8 @@ import io.ktor.server.cio.*
|
||||||
import io.ktor.server.engine.*
|
import io.ktor.server.engine.*
|
||||||
import io.ktor.server.plugins.cors.routing.*
|
import io.ktor.server.plugins.cors.routing.*
|
||||||
import io.ktor.server.request.*
|
import io.ktor.server.request.*
|
||||||
import no.nav.helse.sprik.Feil
|
|
||||||
import no.nav.helse.sprik.Test
|
import no.nav.helse.sprik.Test
|
||||||
|
import no.nav.helse.sprik.modell.Feilmelding
|
||||||
|
|
||||||
fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngineEnvironment {
|
fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngineEnvironment {
|
||||||
module {
|
module {
|
||||||
|
@ -33,7 +33,7 @@ fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngin
|
||||||
call.respond(status = HttpStatusCode.Created, message = test)
|
call.respond(status = HttpStatusCode.Created, message = test)
|
||||||
}
|
}
|
||||||
post("/nyFeil") {
|
post("/nyFeil") {
|
||||||
val test = call.receive<Feil>()
|
val test = call.receive<Feilmelding>()
|
||||||
println(test)
|
println(test)
|
||||||
call.respond(status = HttpStatusCode.Created, message = test)
|
call.respond(status = HttpStatusCode.Created, message = test)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
package no.nav.helse.sprik.serializers
|
||||||
|
import java.util.Date
|
||||||
|
import kotlinx.serialization.KSerializer
|
||||||
|
import kotlinx.serialization.SerializationException
|
||||||
|
import kotlinx.serialization.descriptors.PrimitiveKind
|
||||||
|
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
|
||||||
|
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||||
|
import kotlinx.serialization.encoding.Decoder
|
||||||
|
import kotlinx.serialization.encoding.Encoder
|
||||||
|
|
||||||
|
abstract class AsStringSerializer<T : Any>(
|
||||||
|
serialName: String,
|
||||||
|
private val parse: (String) -> T
|
||||||
|
) : KSerializer<T>{
|
||||||
|
|
||||||
|
override val descriptor: SerialDescriptor =
|
||||||
|
PrimitiveSerialDescriptor(serialName, PrimitiveKind.STRING)
|
||||||
|
|
||||||
|
override fun serialize(encoder: Encoder, value: T) {
|
||||||
|
value.toString().let(encoder::encodeString)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun deserialize(decoder: Decoder): T =
|
||||||
|
decoder.decodeString()
|
||||||
|
.runCatching(parse)
|
||||||
|
.getOrElse { throw SerializationException(it) }
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package no.nav.helse.sprik.serializers
|
||||||
|
|
||||||
|
import java.time.LocalDate
|
||||||
|
|
||||||
|
object LocalDateSerializer : AsStringSerializer<LocalDate>(
|
||||||
|
serialName = "Sprik.kotlinx.LocalDateSerializer",
|
||||||
|
parse = LocalDate::parse
|
||||||
|
)
|
Reference in a new issue