✨ 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.plugins.cors.routing.*
|
||||
import io.ktor.server.request.*
|
||||
import no.nav.helse.sprik.Feil
|
||||
import no.nav.helse.sprik.Test
|
||||
import no.nav.helse.sprik.modell.Feilmelding
|
||||
|
||||
fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngineEnvironment {
|
||||
module {
|
||||
|
@ -33,7 +33,7 @@ fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngin
|
|||
call.respond(status = HttpStatusCode.Created, message = test)
|
||||
}
|
||||
post("/nyFeil") {
|
||||
val test = call.receive<Feil>()
|
||||
val test = call.receive<Feilmelding>()
|
||||
println(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