diff --git a/aareg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aareg/ArbeidsforholdLoeser.kt b/aareg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aareg/ArbeidsforholdLoeser.kt index 15b487c3cd..5fc4b35688 100644 --- a/aareg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aareg/ArbeidsforholdLoeser.kt +++ b/aareg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aareg/ArbeidsforholdLoeser.kt @@ -12,6 +12,7 @@ import no.nav.helsearbeidsgiver.felles.Arbeidsforhold import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.les +import no.nav.helsearbeidsgiver.felles.json.lesOrNull import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.Loeser import no.nav.helsearbeidsgiver.felles.rapidsrivers.demandValues @@ -32,10 +33,10 @@ class ArbeidsforholdLoeser( rapidsConnection: RapidsConnection, private val aaregClient: AaregClient ) : Loeser(rapidsConnection) { + private val logger = logger() private val sikkerLogger = sikkerLogger() - private val behovType = BehovType.ARBEIDSFORHOLD private val requestLatency = Summary.build() .name("simba_aareg_hent_arbeidsforhold_latency_seconds") .help("aareg hent arbeidsforhold latency in seconds") @@ -44,7 +45,7 @@ class ArbeidsforholdLoeser( override fun accept(): River.PacketValidation = River.PacketValidation { it.demandValues( - Key.BEHOV to behovType.name + Key.BEHOV to BehovType.ARBEIDSFORHOLD.name ) it.requireKeys( Key.IDENTITETSNUMMER, @@ -58,8 +59,9 @@ class ArbeidsforholdLoeser( measureTimeMillis { val transaksjonId = Key.UUID.les(UuidSerializer, json) val identitetsnummer = Key.IDENTITETSNUMMER.les(String.serializer(), json) + val forespoerselId = Key.FORESPOERSEL_ID.lesOrNull(UuidSerializer, json) - logger.info("Løser behov $behovType med transaksjon-ID $transaksjonId") + logger.info("Løser behov ${BehovType.ARBEIDSFORHOLD} med transaksjon-ID $transaksjonId") val arbeidsforhold = hentArbeidsforhold(identitetsnummer, transaksjonId) @@ -67,7 +69,7 @@ class ArbeidsforholdLoeser( rapidsConnection.publishData( eventName = behov.event, transaksjonId = transaksjonId, - forespoerselId = behov.forespoerselId?.let(UUID::fromString), + forespoerselId = forespoerselId, Key.ARBEIDSFORHOLD to arbeidsforhold.toJson(Arbeidsforhold.serializer()) ) } else { diff --git a/aareg/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/ArbeidsforholdLoeserTest.kt b/aareg/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/ArbeidsforholdLoeserTest.kt index a9822775bd..24fe63639e 100644 --- a/aareg/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/ArbeidsforholdLoeserTest.kt +++ b/aareg/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/ArbeidsforholdLoeserTest.kt @@ -12,8 +12,6 @@ import io.mockk.coEvery import io.mockk.coVerifySequence import io.mockk.mockk import kotlinx.serialization.UseSerializers -import kotlinx.serialization.builtins.MapSerializer -import kotlinx.serialization.json.JsonElement import no.nav.helse.rapids_rivers.testsupport.TestRapid import no.nav.helsearbeidsgiver.aareg.AaregClient import no.nav.helsearbeidsgiver.felles.Arbeidsforhold @@ -29,7 +27,6 @@ import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson import no.nav.helsearbeidsgiver.inntektsmelding.aareg.ArbeidsforholdLoeser import no.nav.helsearbeidsgiver.inntektsmelding.aareg.tilArbeidsforhold import no.nav.helsearbeidsgiver.utils.json.fromJson -import no.nav.helsearbeidsgiver.utils.json.fromJsonMapFiltered import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson import java.util.UUID @@ -91,12 +88,7 @@ class ArbeidsforholdLoeserTest : FunSpec({ event = event, transaksjonId = transaksjonId, forespoerselId = forespoerselId, - utloesendeMelding = innkommendeMelding.toJson( - MapSerializer( - Key.serializer(), - JsonElement.serializer() - ) - ) + utloesendeMelding = innkommendeMelding.toJson() ) coEvery { mockAaregClient.hentArbeidsforhold(any(), any()) } throws RuntimeException() @@ -112,7 +104,7 @@ class ArbeidsforholdLoeserTest : FunSpec({ val fail = testRapid.firstMessage().readFail() fail.shouldBeEqualToIgnoringFields(expected, Fail::utloesendeMelding) - fail.utloesendeMelding.fromJsonMapFiltered(Key.serializer()) shouldContainAll innkommendeMelding + fail.utloesendeMelding.toMap() shouldContainAll innkommendeMelding } }) diff --git a/aktiveorgnrservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aktiveorgnrservice/AktiveOrgnrService.kt b/aktiveorgnrservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aktiveorgnrservice/AktiveOrgnrService.kt index 100ac21d2c..fddcce9a64 100644 --- a/aktiveorgnrservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aktiveorgnrservice/AktiveOrgnrService.kt +++ b/aktiveorgnrservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aktiveorgnrservice/AktiveOrgnrService.kt @@ -208,12 +208,7 @@ class AktiveOrgnrService( event = event, transaksjonId = transaksjonId, forespoerselId = null, - utloesendeMelding = toJson( - MapSerializer( - Key.serializer(), - JsonElement.serializer() - ) - ) + utloesendeMelding = toJson() ) private fun trekkUtArbeidsforhold(arbeidsforholdListe: List?, orgrettigheter: Set?): Result> { diff --git a/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnLoeser.kt b/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnLoeser.kt index ee7f68d92a..5c2c509b4d 100644 --- a/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnLoeser.kt +++ b/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnLoeser.kt @@ -5,7 +5,6 @@ import kotlinx.serialization.json.JsonElement import no.nav.helsearbeidsgiver.altinn.AltinnClient import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName -import no.nav.helsearbeidsgiver.felles.IKey import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.krev import no.nav.helsearbeidsgiver.felles.json.les @@ -29,7 +28,7 @@ class AltinnLoeser( private val altinnClient: AltinnClient ) : ObjectRiver() { - override fun les(json: Map): Melding = + override fun les(json: Map): Melding = Melding( eventName = Key.EVENT_NAME.les(EventName.serializer(), json), transactionId = Key.UUID.les(UuidSerializer, json), @@ -37,7 +36,7 @@ class AltinnLoeser( identitetsnummer = Key.IDENTITETSNUMMER.les(String.serializer(), json) ) - override fun Melding.haandter(): Map { + override fun Melding.haandter(): Map { val rettigheterForenklet = Metrics.altinnRequest.recordTime { altinnClient diff --git a/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangLoeser.kt b/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangLoeser.kt index 8e0c704673..edc225c99e 100644 --- a/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangLoeser.kt +++ b/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangLoeser.kt @@ -8,7 +8,6 @@ import no.nav.helse.rapids_rivers.RapidsConnection import no.nav.helse.rapids_rivers.River import no.nav.helsearbeidsgiver.altinn.AltinnClient import no.nav.helsearbeidsgiver.felles.BehovType -import no.nav.helsearbeidsgiver.felles.IKey import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.Tilgang import no.nav.helsearbeidsgiver.felles.json.les @@ -70,7 +69,7 @@ class TilgangLoeser( } } - private fun hentTilgang(behov: Behov, json: Map, transaksjonId: UUID) { + private fun hentTilgang(behov: Behov, json: Map, transaksjonId: UUID) { val fnr = Key.FNR.les(String.serializer(), json) val orgnr = Key.ORGNRUNDERENHET.les(String.serializer(), json) diff --git a/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnLoeserTest.kt b/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnLoeserTest.kt index 02eec1d184..a3da41836c 100644 --- a/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnLoeserTest.kt +++ b/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnLoeserTest.kt @@ -9,13 +9,11 @@ import io.mockk.coVerify import io.mockk.coVerifySequence import io.mockk.mockk import kotlinx.serialization.builtins.serializer -import kotlinx.serialization.json.JsonElement import no.nav.helse.rapids_rivers.testsupport.TestRapid import no.nav.helsearbeidsgiver.altinn.AltinnClient import no.nav.helsearbeidsgiver.altinn.AltinnOrganisasjon import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName -import no.nav.helsearbeidsgiver.felles.IKey import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toMap @@ -43,7 +41,7 @@ class AltinnLoeserTest : FunSpec({ val mockId = "long-john-silver" val mockUuid = randomUuid() - val expectedPublished = mapOf( + val expectedPublished = mapOf( Key.DATA to "".toJson(), Key.UUID to mockUuid.toJson(), Key.ORG_RETTIGHETER to mockAltinnOrganisasjonSet().mapNotNull { it.orgnr }.toSet().toJson(String.serializer().set()) diff --git a/brreg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/VirksomhetLoeser.kt b/brreg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/VirksomhetLoeser.kt index 5a4f93220d..8121c3a85f 100644 --- a/brreg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/VirksomhetLoeser.kt +++ b/brreg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/VirksomhetLoeser.kt @@ -4,8 +4,6 @@ package no.nav.helsearbeidsgiver.inntektsmelding.brreg import io.prometheus.client.Summary import kotlinx.coroutines.runBlocking -import kotlinx.serialization.builtins.MapSerializer -import kotlinx.serialization.builtins.serializer import no.nav.helse.rapids_rivers.RapidsConnection import no.nav.helse.rapids_rivers.River import no.nav.helsearbeidsgiver.brreg.BrregClient @@ -13,6 +11,7 @@ import no.nav.helsearbeidsgiver.brreg.Virksomhet import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.lesOrNull +import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.Loeser import no.nav.helsearbeidsgiver.felles.rapidsrivers.demandValues @@ -108,7 +107,7 @@ class VirksomhetLoeser( transaksjonId = transaksjonId, forespoerselId = behov.forespoerselId?.let(UUID::fromString), Key.VIRKSOMHET to navnListe.values.first().toJson(), - Key.VIRKSOMHETER to navnListe.toJson(MapSerializer(String.serializer(), String.serializer())) + Key.VIRKSOMHETER to navnListe.toJson() ) } catch (ex: FantIkkeVirksomhetException) { logger.error("Fant ikke virksomhet for $orgnr") diff --git a/feil-behandler/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/feilbehandler/river/FeilLytter.kt b/feil-behandler/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/feilbehandler/river/FeilLytter.kt index 490dead21e..fb80325818 100644 --- a/feil-behandler/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/feilbehandler/river/FeilLytter.kt +++ b/feil-behandler/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/feilbehandler/river/FeilLytter.kt @@ -14,7 +14,6 @@ import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.ModelUtils.toFailOrNull import no.nav.helsearbeidsgiver.felles.rapidsrivers.toPretty import no.nav.helsearbeidsgiver.utils.json.fromJson -import no.nav.helsearbeidsgiver.utils.json.fromJsonMapFiltered import no.nav.helsearbeidsgiver.utils.json.parseJson import no.nav.helsearbeidsgiver.utils.log.sikkerLogger @@ -46,7 +45,7 @@ class FeilLytter(rapidsConnection: RapidsConnection, private val repository: Bak override fun onPacket(packet: JsonMessage, context: MessageContext) { sikkerLogger.info("Mottok feil: ${packet.toPretty()}") - val fail = toFailOrNull(packet.toJson().parseJson().fromJsonMapFiltered(Key.serializer())) + val fail = toFailOrNull(packet.toJson().parseJson().toMap()) if (skalHaandteres(fail)) { sikkerLogger.info("Lagrer mottatt pakke!") val jobb = Bakgrunnsjobb( diff --git a/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/json/KotlinxUtils.kt b/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/json/KotlinxUtils.kt index 0339d1084d..d9947c9a4c 100644 --- a/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/json/KotlinxUtils.kt +++ b/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/json/KotlinxUtils.kt @@ -1,13 +1,14 @@ package no.nav.helsearbeidsgiver.felles.json import kotlinx.serialization.KSerializer +import kotlinx.serialization.builtins.MapSerializer import kotlinx.serialization.builtins.nullable +import kotlinx.serialization.builtins.serializer import kotlinx.serialization.json.JsonElement import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.IKey import no.nav.helsearbeidsgiver.felles.Key -import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.utils.json.fromJson import no.nav.helsearbeidsgiver.utils.json.fromJsonMapFiltered import no.nav.helsearbeidsgiver.utils.json.toJson @@ -18,14 +19,26 @@ fun EventName.toJson(): JsonElement = fun BehovType.toJson(): JsonElement = toJson(BehovType.serializer()) -fun JsonElement.toMap(): Map = - listOf( - Key.serializer(), - Pri.Key.serializer() +@JvmName("toJsonMapKeyStringValueString") +fun Map.toJson(): JsonElement = + toJson( + MapSerializer( + String.serializer(), + String.serializer() + ) ) - .fold(emptyMap()) { jsonMap, keySerializer -> - jsonMap + fromJsonMapFiltered(keySerializer) - } + +@JvmName("toJsonMapKeyKeyValueJsonElement") +fun Map.toJson(): JsonElement = + toJson( + MapSerializer( + Key.serializer(), + JsonElement.serializer() + ) + ) + +fun JsonElement.toMap(): Map = + fromJsonMapFiltered(Key.serializer()) fun K.lesOrNull(serializer: KSerializer, melding: Map): T? = melding[this]?.fromJson(serializer.nullable) diff --git a/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/loeser/ObjectRiver.kt b/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/loeser/ObjectRiver.kt index fdc15e5444..9fe4a93d2c 100644 --- a/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/loeser/ObjectRiver.kt +++ b/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/loeser/ObjectRiver.kt @@ -2,7 +2,7 @@ package no.nav.helsearbeidsgiver.felles.loeser import kotlinx.serialization.json.JsonElement import no.nav.helse.rapids_rivers.RapidsConnection -import no.nav.helsearbeidsgiver.felles.IKey +import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.utils.log.logger import no.nav.helsearbeidsgiver.utils.log.sikkerLogger @@ -29,14 +29,14 @@ import no.nav.helsearbeidsgiver.utils.log.sikkerLogger * * class HobbitFoodRiver : ObjectRiver() { * - * override fun les(json: Map): LotrCharacter = + * override fun les(json: Map): LotrCharacter = * LotrCharacter( * race = Key.RACE.krev(Race.HOBBIT, Race.serializer(), json), * name = Key.NAME.les(String.serializer(), json), * height = Key.HEIGHT.lesOrNull(Int.serializer(), json) * ) * - * override fun LotrCharacter.haandter(): Map { + * override fun LotrCharacter.haandter(): Map { * val favouriteFood = when (name) { * "Frodo" -> "\uD83C\uDF53" * "Sam" -> "\uD83E\uDD54" @@ -74,7 +74,7 @@ abstract class ObjectRiver { * * @return Verdi lest fra [json]. Brukes som input i [haandter]. */ - protected abstract fun les(json: Map): Melding + protected abstract fun les(json: Map): Melding /** * Riverens hovedfunksjon. Agerer på innkommende melding. @@ -86,7 +86,7 @@ abstract class ObjectRiver { * Utgående melding som skal publiseres når innkommende melding er ferdig prosessert. * Returneres '`null`' så vil ingen utgående melding publiseres. */ - protected abstract fun Melding.haandter(): Map? + protected abstract fun Melding.haandter(): Map? /** * Kalles ved exception under [haandter]. @@ -95,7 +95,7 @@ abstract class ObjectRiver { * Utgående melding som skal publiseres når feil er ferdig prosessert. * Default implementasjon returnerer '`null`', som betyr at ingen utgående melding publiseres. */ - protected open fun Throwable.haandterFeil(json: Map): Map? { + protected open fun Throwable.haandterFeil(json: Map): Map? { "Ukjent feil.".also { logger.error(it) sikkerLogger.error(it, this) @@ -104,7 +104,7 @@ abstract class ObjectRiver { } /** Brukes av [OpenRiver]. */ - internal fun lesOgHaandter(json: Map): Map? { + internal fun lesOgHaandter(json: Map): Map? { val innkommende = runCatching { les(json) }.getOrNull() val utgaaende = runCatching { diff --git a/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/RiverUtils.kt b/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/RiverUtils.kt index 5ab00687eb..d1e6b1322d 100644 --- a/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/RiverUtils.kt +++ b/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/RiverUtils.kt @@ -6,6 +6,7 @@ import no.nav.helse.rapids_rivers.JsonMessage import no.nav.helse.rapids_rivers.MessageContext import no.nav.helse.rapids_rivers.MessageProblems import no.nav.helsearbeidsgiver.felles.IKey +import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.utils.json.parseJson import no.nav.helsearbeidsgiver.utils.json.toJson @@ -51,10 +52,10 @@ fun JsonMessage.interestedIn(vararg keys: IKey) { interestedIn(*keysAsStr) } -fun MessageContext.publish(vararg messageFields: Pair): JsonElement = +fun MessageContext.publish(vararg messageFields: Pair): JsonElement = publish(messageFields.toMap()) -fun MessageContext.publish(messageFields: Map): JsonElement = +fun MessageContext.publish(messageFields: Map): JsonElement = messageFields .mapKeys { (key, _) -> key.toString() } .toJson() diff --git a/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/composite/CompositeEventListener.kt b/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/composite/CompositeEventListener.kt index 5b523d2bbd..40d5b8f04e 100644 --- a/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/composite/CompositeEventListener.kt +++ b/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/composite/CompositeEventListener.kt @@ -8,13 +8,13 @@ import no.nav.helse.rapids_rivers.River import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.lesOrNull +import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.ModelUtils.toFailOrNull import no.nav.helsearbeidsgiver.felles.rapidsrivers.redis.RedisKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.redis.RedisStore import no.nav.helsearbeidsgiver.felles.utils.Log import no.nav.helsearbeidsgiver.utils.json.fromJson -import no.nav.helsearbeidsgiver.utils.json.fromJsonMapFiltered import no.nav.helsearbeidsgiver.utils.json.parseJson import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toPretty @@ -40,7 +40,7 @@ abstract class CompositeEventListener : River.PacketListener { abstract fun onError(melding: Map, fail: Fail) override fun onPacket(packet: JsonMessage, context: MessageContext) { - val melding = packet.toJson().parseJson().fromJsonMapFiltered(Key.serializer()) + val melding = packet.toJson().parseJson().toMap() if (Key.FORESPOERSEL_ID.lesOrNull(String.serializer(), melding).isNullOrEmpty()) { logger.warn("Mangler forespørselId!") diff --git a/felles/src/test/kotlin/no/nav/helsearbeidsgiver/felles/json/KotlinxUtilsKtTest.kt b/felles/src/test/kotlin/no/nav/helsearbeidsgiver/felles/json/KotlinxUtilsKtTest.kt index 4a240499bf..b23142d9d7 100644 --- a/felles/src/test/kotlin/no/nav/helsearbeidsgiver/felles/json/KotlinxUtilsKtTest.kt +++ b/felles/src/test/kotlin/no/nav/helsearbeidsgiver/felles/json/KotlinxUtilsKtTest.kt @@ -18,18 +18,34 @@ import no.nav.helsearbeidsgiver.utils.json.toJson class KotlinxUtilsKtTest : FunSpec({ context("toMap") { - withData( - mapOf>( - "inneholder bare Key" to mapOf(Key.EVENT_NAME to "testevent"), - "inneholder bare Pri.Key" to mapOf(Pri.Key.NOTIS to "husk å drikke vann"), - "inneholder Key og Pri.Key" to mapOf( - Key.EVENT_NAME to "testevent", - Pri.Key.NOTIS to "husk å drikke vann" - ) + test("inneholder alle Keys") { + val expectedMap = mapOf( + Key.EVENT_NAME to "test_event", + Key.BEHOV to "test_behov", + Key.UUID to "test_transaksjonId" + ) + + val json = JsonObject( + expectedMap.mapKeys { it.key.str } + .mapValues { it.value.toJson() } + ) + + val jsonMap = json.toMap() + + jsonMap shouldBe expectedMap.mapValues { it.value.toJson() } + } + + test("inneholder bare Keys") { + val expectedMap = mapOf( + Key.EVENT_NAME to "test_event", + Key.BEHOV to "test_behov" ) - ) { expectedMap -> + val json = JsonObject( expectedMap.mapKeys { it.key.str } + .plus( + "ikke en key" to "skal ikke være med" + ) .mapValues { it.value.toJson() } ) diff --git a/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartFraSimbaLoeser.kt b/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartFraSimbaLoeser.kt index 3efc360d8c..53b9c79b82 100644 --- a/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartFraSimbaLoeser.kt +++ b/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartFraSimbaLoeser.kt @@ -5,9 +5,9 @@ import kotlinx.serialization.json.JsonElement import no.nav.helse.rapids_rivers.RapidsConnection import no.nav.helse.rapids_rivers.River import no.nav.helsearbeidsgiver.felles.EventName -import no.nav.helsearbeidsgiver.felles.IKey import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.les +import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.demandValues import no.nav.helsearbeidsgiver.felles.rapidsrivers.rejectKeys import no.nav.helsearbeidsgiver.felles.rapidsrivers.requireKeys @@ -44,13 +44,15 @@ class ForespoerselBesvartFraSimbaLoeser( }.register(this) } - override fun Map.lesMelding(): Melding = - Melding( + override fun JsonElement.lesMelding(): Melding { + val json = toMap() + return Melding( event = EventName.INNTEKTSMELDING_MOTTATT.name, - forespoerselId = Key.FORESPOERSEL_ID.les(UuidSerializer, this), - transaksjonId = Key.UUID.les(UuidSerializer, this), + forespoerselId = Key.FORESPOERSEL_ID.les(UuidSerializer, json), + transaksjonId = Key.UUID.les(UuidSerializer, json), spinnInntektsmeldingId = null ) + } override fun haandterFeil(json: JsonElement) { sikkerLogger.error( diff --git a/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartFraSpleisLoeser.kt b/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartFraSpleisLoeser.kt index 2d0ee5c6df..5d28dca6de 100644 --- a/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartFraSpleisLoeser.kt +++ b/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartFraSpleisLoeser.kt @@ -4,7 +4,6 @@ import io.prometheus.client.Counter import kotlinx.serialization.json.JsonElement import no.nav.helse.rapids_rivers.RapidsConnection import no.nav.helse.rapids_rivers.River -import no.nav.helsearbeidsgiver.felles.IKey import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.lesOrNull import no.nav.helsearbeidsgiver.felles.rapidsrivers.demandValues @@ -13,6 +12,7 @@ import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.PriProducer import no.nav.helsearbeidsgiver.felles.rapidsrivers.requireKeys import no.nav.helsearbeidsgiver.felles.utils.randomUuid +import no.nav.helsearbeidsgiver.utils.json.fromJsonMapFiltered import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer class ForespoerselBesvartFraSpleisLoeser( @@ -41,13 +41,15 @@ class ForespoerselBesvartFraSpleisLoeser( }.register(this) } - override fun Map.lesMelding(): Melding = - Melding( + override fun JsonElement.lesMelding(): Melding { + val json = fromJsonMapFiltered(Pri.Key.serializer()) + return Melding( event = Pri.NotisType.FORESPOERSEL_BESVART.name, - forespoerselId = Pri.Key.FORESPOERSEL_ID.les(UuidSerializer, this), + forespoerselId = Pri.Key.FORESPOERSEL_ID.les(UuidSerializer, json), transaksjonId = randomUuid(), - spinnInntektsmeldingId = Pri.Key.SPINN_INNTEKTSMELDING_ID.lesOrNull(UuidSerializer, this) + spinnInntektsmeldingId = Pri.Key.SPINN_INNTEKTSMELDING_ID.lesOrNull(UuidSerializer, json) ) + } override fun haandterFeil(json: JsonElement) { priProducer.send(json) diff --git a/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartLoeser.kt b/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartLoeser.kt index 107294877a..9a95e1e750 100644 --- a/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartLoeser.kt +++ b/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartLoeser.kt @@ -7,10 +7,8 @@ import no.nav.helse.rapids_rivers.MessageContext import no.nav.helse.rapids_rivers.River import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName -import no.nav.helsearbeidsgiver.felles.IKey import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.toJson -import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish import no.nav.helsearbeidsgiver.felles.utils.Log @@ -31,7 +29,7 @@ sealed class ForespoerselBesvartLoeser : River.PacketListener { abstract val forespoerselBesvartCounter: Counter - abstract fun Map.lesMelding(): Melding + abstract fun JsonElement.lesMelding(): Melding abstract fun haandterFeil(json: JsonElement) @@ -62,7 +60,7 @@ sealed class ForespoerselBesvartLoeser : River.PacketListener { } private fun opprettEvent(json: JsonElement, context: MessageContext) { - val melding = json.toMap().lesMelding() + val melding = json.lesMelding() logger.info("Mottok melding om '${melding.event}'.") diff --git a/forespoersel-besvart/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartFraSpleisLoeserTest.kt b/forespoersel-besvart/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartFraSpleisLoeserTest.kt index e120e2402a..73b65b7754 100644 --- a/forespoersel-besvart/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartFraSpleisLoeserTest.kt +++ b/forespoersel-besvart/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartFraSpleisLoeserTest.kt @@ -12,13 +12,13 @@ import io.mockk.verifySequence import kotlinx.serialization.UseSerializers import kotlinx.serialization.json.JsonElement import no.nav.helse.rapids_rivers.testsupport.TestRapid -import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.PriProducer import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson import no.nav.helsearbeidsgiver.felles.utils.randomUuid import no.nav.helsearbeidsgiver.utils.json.fromJson +import no.nav.helsearbeidsgiver.utils.json.fromJsonMapFiltered import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.test.mock.mockStatic @@ -67,7 +67,7 @@ class ForespoerselBesvartFraSpleisLoeserTest : FunSpec({ verifySequence { mockPriProducer.send( withArg { json -> - json.toMap().filterKeys { it is Pri.Key } shouldBe expectedRepublisert + json.fromJsonMapFiltered(Pri.Key.serializer()) shouldBe expectedRepublisert } ) } diff --git a/forespoersel-mottatt/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmottatt/ForespoerselMottattLoeserTest.kt b/forespoersel-mottatt/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmottatt/ForespoerselMottattLoeserTest.kt index b688ba7b69..787a899314 100644 --- a/forespoersel-mottatt/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmottatt/ForespoerselMottattLoeserTest.kt +++ b/forespoersel-mottatt/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmottatt/ForespoerselMottattLoeserTest.kt @@ -16,13 +16,13 @@ import kotlinx.serialization.json.JsonElement import no.nav.helse.rapids_rivers.testsupport.TestRapid import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName -import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.PriProducer import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson import no.nav.helsearbeidsgiver.felles.utils.randomUuid import no.nav.helsearbeidsgiver.utils.json.fromJson +import no.nav.helsearbeidsgiver.utils.json.fromJsonMapFiltered import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.test.mock.mockStatic @@ -76,7 +76,7 @@ class ForespoerselMottattLoeserTest : FunSpec({ verifySequence { mockPriProducer.send( withArg { json -> - json.toMap().filterKeys { it is Pri.Key } shouldBe expectedRepublisert + json.fromJsonMapFiltered(Pri.Key.serializer()) shouldBe expectedRepublisert } ) } diff --git a/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/ForespoerselSvarLoeser.kt b/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/ForespoerselSvarLoeser.kt index 9c3c32302f..61af2036fd 100644 --- a/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/ForespoerselSvarLoeser.kt +++ b/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/ForespoerselSvarLoeser.kt @@ -22,6 +22,7 @@ import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish import no.nav.helsearbeidsgiver.felles.utils.Log import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene.ForespoerselSvar import no.nav.helsearbeidsgiver.utils.json.fromJson +import no.nav.helsearbeidsgiver.utils.json.fromJsonMapFiltered import no.nav.helsearbeidsgiver.utils.json.parseJson import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson @@ -155,7 +156,7 @@ private data class Melding( ) { companion object { fun fra(json: JsonElement): Melding = - json.toMap().let { + json.fromJsonMapFiltered(Pri.Key.serializer()).let { val forespoerselSvar = Pri.Key.LØSNING.les(ForespoerselSvar.serializer(), it) val boomerang = forespoerselSvar.boomerang.toMap() diff --git a/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/TrengerForespoerselLoeser.kt b/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/TrengerForespoerselLoeser.kt index ec0899f74f..6c415d9cfa 100644 --- a/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/TrengerForespoerselLoeser.kt +++ b/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/TrengerForespoerselLoeser.kt @@ -1,7 +1,5 @@ package no.nav.helsearbeidsgiver.inntektsmelding.helsebro -import kotlinx.serialization.builtins.MapSerializer -import kotlinx.serialization.json.JsonElement import no.nav.helse.rapids_rivers.RapidsConnection import no.nav.helse.rapids_rivers.River import no.nav.helsearbeidsgiver.felles.BehovType @@ -86,11 +84,3 @@ class TrengerForespoerselLoeser( } } } - -private fun Map.toJson(): JsonElement = - toJson( - MapSerializer( - Key.serializer(), - JsonElement.serializer() - ) - ) diff --git a/helsebro/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/TrengerForespoerselLoeserTest.kt b/helsebro/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/TrengerForespoerselLoeserTest.kt index 6086971765..9e25e9fc8c 100644 --- a/helsebro/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/TrengerForespoerselLoeserTest.kt +++ b/helsebro/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/TrengerForespoerselLoeserTest.kt @@ -4,7 +4,6 @@ import io.kotest.core.spec.style.FunSpec import io.mockk.every import io.mockk.mockk import io.mockk.verifySequence -import kotlinx.serialization.builtins.MapSerializer import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonNull import no.nav.helse.rapids_rivers.testsupport.TestRapid @@ -46,12 +45,7 @@ class TrengerForespoerselLoeserTest : FunSpec({ Pri.Key.BOOMERANG to mapOf( Key.EVENT_NAME to expectedEvent.toJson(), Key.UUID to expectedTransaksjonId.toJson() - ).toJson( - MapSerializer( - Key.serializer(), - JsonElement.serializer() - ) - ) + ).toJson() ) } } diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/EksternInntektsmeldingLagretIT.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/EksternInntektsmeldingLagretIT.kt index 2b4fe5d4cb..1e95b57cce 100644 --- a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/EksternInntektsmeldingLagretIT.kt +++ b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/EksternInntektsmeldingLagretIT.kt @@ -8,7 +8,6 @@ import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.toJson -import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.utils.randomUuid import no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest.utils.EndToEndTest import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer @@ -39,8 +38,8 @@ class EksternInntektsmeldingLagretIT : EndToEndTest() { publish( Key.EVENT_NAME to EventName.EKSTERN_INNTEKTSMELDING_REQUESTED.toJson(), - Pri.Key.FORESPOERSEL_ID to Mock.forespoerselId.toJson(), - Pri.Key.SPINN_INNTEKTSMELDING_ID to Mock.spinnInntektsmeldingId.toJson() + Key.FORESPOERSEL_ID to Mock.forespoerselId.toJson(), + Key.SPINN_INNTEKTSMELDING_ID to Mock.spinnInntektsmeldingId.toJson() ) Thread.sleep(10000) } diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InnsendingServiceIT.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InnsendingServiceIT.kt index 60e3acc565..104c9b637f 100644 --- a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InnsendingServiceIT.kt +++ b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InnsendingServiceIT.kt @@ -11,7 +11,6 @@ import no.nav.helsearbeidsgiver.dokarkiv.domene.OpprettOgFerdigstillResponse import no.nav.helsearbeidsgiver.domene.inntektsmelding.deprecated.Innsending import no.nav.helsearbeidsgiver.domene.inntektsmelding.deprecated.Inntektsmelding import no.nav.helsearbeidsgiver.felles.EventName -import no.nav.helsearbeidsgiver.felles.IKey import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.PersonDato import no.nav.helsearbeidsgiver.felles.json.lesOrNull @@ -154,12 +153,12 @@ class InnsendingServiceIT : EndToEndTest() { } } - private fun Map.verifiserTransaksjonId(transaksjonId: UUID): Map = + private fun Map.verifiserTransaksjonId(transaksjonId: UUID): Map = also { Key.UUID.lesOrNull(UuidSerializer, it) shouldBe transaksjonId } - private fun Map.verifiserForespoerselId(): Map = + private fun Map.verifiserForespoerselId(): Map = also { Key.FORESPOERSEL_ID.lesOrNull(UuidSerializer, it) shouldBe Mock.forespoerselId } diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/EndToEndTest.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/EndToEndTest.kt index 048b6026b0..e1ee002e96 100644 --- a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/EndToEndTest.kt +++ b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/EndToEndTest.kt @@ -7,7 +7,9 @@ import io.mockk.mockk import io.prometheus.client.CollectorRegistry import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonObject +import no.nav.helse.rapids_rivers.JsonMessage import no.nav.helse.rapids_rivers.MessageContext +import no.nav.helse.rapids_rivers.MessageProblems import no.nav.helse.rapids_rivers.RapidApplication import no.nav.helse.rapids_rivers.RapidsConnection import no.nav.helsearbeidsgiver.aareg.AaregClient @@ -16,7 +18,7 @@ import no.nav.helsearbeidsgiver.arbeidsgivernotifikasjon.ArbeidsgiverNotifikasjo import no.nav.helsearbeidsgiver.brreg.BrregClient import no.nav.helsearbeidsgiver.brreg.Virksomhet import no.nav.helsearbeidsgiver.dokarkiv.DokArkivClient -import no.nav.helsearbeidsgiver.felles.IKey +import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.PriProducer import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish @@ -50,6 +52,8 @@ import no.nav.helsearbeidsgiver.inntektsmelding.trengerservice.createTrengerServ import no.nav.helsearbeidsgiver.pdl.PdlClient import no.nav.helsearbeidsgiver.pdl.domene.FullPerson import no.nav.helsearbeidsgiver.pdl.domene.PersonNavn +import no.nav.helsearbeidsgiver.utils.json.parseJson +import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.log.logger import no.nav.helsearbeidsgiver.utils.test.date.august import no.nav.helsearbeidsgiver.utils.test.date.mai @@ -205,12 +209,27 @@ abstract class EndToEndTest : ContainerTest(), RapidsConnection.MessageListener logger.info("Stopped") } - fun publish(vararg messageFields: Pair) { + fun publish(vararg messageFields: Pair) { rapid.publish(*messageFields).also { println("Publiserte melding: $it") } } + fun publish(vararg messageFields: Pair): JsonElement = + messageFields.toMap() + .mapKeys { (key, _) -> key.toString() } + .toJson() + .toString() + .let { + JsonMessage(it, MessageProblems(it), null) + } + .toJson() + .also(rapid::publish) + .parseJson() + .also { + println("Publiserte melding: $it") + } + /** Avslutter venting dersom meldinger finnes og ingen nye ankommer i løpet av 1500 ms. */ fun waitForMessages(millis: Long) { val startTime = System.nanoTime() diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/Messages.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/Messages.kt index 9901a4fdee..77d82aaa67 100644 --- a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/Messages.kt +++ b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/Messages.kt @@ -6,7 +6,6 @@ import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonPrimitive import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName -import no.nav.helsearbeidsgiver.felles.IKey import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.utils.json.fromJson @@ -18,7 +17,7 @@ import no.nav.helsearbeidsgiver.utils.pipe.orDefault value class Messages( private val value: MutableList = mutableListOf() ) { - fun firstAsMap(): Map = + fun firstAsMap(): Map = value.firstOrNull() .shouldNotBeNull() .toMap() diff --git a/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/OppgaveFerdigLoeser.kt b/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/OppgaveFerdigLoeser.kt index c61acf590c..c3f163c305 100644 --- a/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/OppgaveFerdigLoeser.kt +++ b/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/OppgaveFerdigLoeser.kt @@ -12,11 +12,11 @@ import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.toJson +import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.demandValues import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish import no.nav.helsearbeidsgiver.felles.rapidsrivers.requireKeys import no.nav.helsearbeidsgiver.felles.utils.Log -import no.nav.helsearbeidsgiver.utils.json.fromJsonMapFiltered import no.nav.helsearbeidsgiver.utils.json.parseJson import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson @@ -54,12 +54,15 @@ class OppgaveFerdigLoeser( } val json = packet.toJson().parseJson() + logger.info("Mottok melding med event '${EventName.FORESPOERSEL_BESVART}'.") + sikkerLogger.info("Mottok melding:\n${json.toPretty()}") + MdcUtils.withLogFields( Log.klasse(this), Log.event(EventName.FORESPOERSEL_BESVART) ) { runCatching { - json.haandterMelding(context) + haandterMelding(json.toMap(), context) } .onFailure { e -> "Ukjent feil.".also { @@ -70,12 +73,7 @@ class OppgaveFerdigLoeser( } } - private fun JsonElement.haandterMelding(context: MessageContext) { - logger.info("Mottok melding med event '${EventName.FORESPOERSEL_BESVART}'.") - sikkerLogger.info("Mottok melding:\n${toPretty()}") - - val melding = fromJsonMapFiltered(Key.serializer()) + fromJsonMapFiltered(Key.serializer()) - + private fun haandterMelding(melding: Map, context: MessageContext) { val oppgaveId = Key.OPPGAVE_ID.les(String.serializer(), melding) val forespoerselId = Key.FORESPOERSEL_ID.les(UuidSerializer, melding) val transaksjonId = Key.UUID.les(UuidSerializer, melding) diff --git a/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/SakFerdigLoeser.kt b/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/SakFerdigLoeser.kt index 9d9ba61377..8615ec8448 100644 --- a/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/SakFerdigLoeser.kt +++ b/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/SakFerdigLoeser.kt @@ -13,11 +13,11 @@ import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.toJson +import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.demandValues import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish import no.nav.helsearbeidsgiver.felles.rapidsrivers.requireKeys import no.nav.helsearbeidsgiver.felles.utils.Log -import no.nav.helsearbeidsgiver.utils.json.fromJsonMapFiltered import no.nav.helsearbeidsgiver.utils.json.parseJson import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson @@ -55,12 +55,15 @@ class SakFerdigLoeser( } val json = packet.toJson().parseJson() + logger.info("Mottok melding med event '${EventName.FORESPOERSEL_BESVART}'.") + sikkerLogger.info("Mottok melding:\n${json.toPretty()}") + MdcUtils.withLogFields( Log.klasse(this), Log.event(EventName.FORESPOERSEL_BESVART) ) { runCatching { - json.haandterMelding(context) + haandterMelding(json.toMap(), context) } .onFailure { e -> "Ukjent feil.".also { @@ -71,12 +74,7 @@ class SakFerdigLoeser( } } - private fun JsonElement.haandterMelding(context: MessageContext) { - logger.info("Mottok melding med event '${EventName.FORESPOERSEL_BESVART}'.") - sikkerLogger.info("Mottok melding:\n${toPretty()}") - - val melding = fromJsonMapFiltered(Key.serializer()) - + private fun haandterMelding(melding: Map, context: MessageContext) { val sakId = Key.SAK_ID.les(String.serializer(), melding) val forespoerselId = Key.FORESPOERSEL_ID.les(UuidSerializer, melding) val transaksjonId = Key.UUID.les(UuidSerializer, melding) diff --git a/trengerservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/trengerservice/TrengerService.kt b/trengerservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/trengerservice/TrengerService.kt index d76bcb19b9..ec4741161b 100644 --- a/trengerservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/trengerservice/TrengerService.kt +++ b/trengerservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/trengerservice/TrengerService.kt @@ -1,7 +1,6 @@ package no.nav.helsearbeidsgiver.inntektsmelding.trengerservice import kotlinx.serialization.KSerializer -import kotlinx.serialization.builtins.MapSerializer import kotlinx.serialization.builtins.serializer import kotlinx.serialization.json.JsonElement import no.nav.helse.rapids_rivers.RapidsConnection @@ -129,12 +128,7 @@ class TrengerService( event = event, transaksjonId = transaksjonId, forespoerselId = forespoerselId, - utloesendeMelding = melding.toJson( - MapSerializer( - Key.serializer(), - JsonElement.serializer() - ) - ) + utloesendeMelding = melding.toJson() ) onError(melding, fail) }