✨ 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
	
	 Markus Johansen
						Markus Johansen