-
Notifications
You must be signed in to change notification settings - Fork 1
/
HentRelasjoner.kt
69 lines (57 loc) · 2.3 KB
/
HentRelasjoner.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package no.nav.omsorgspenger.personopplysninger
import com.fasterxml.jackson.databind.node.ArrayNode
import com.fasterxml.jackson.databind.node.TextNode
import kotlinx.coroutines.runBlocking
import no.nav.helse.rapids_rivers.JsonMessage
import no.nav.helse.rapids_rivers.RapidsConnection
import no.nav.helse.rapids_rivers.River
import no.nav.k9.rapid.behov.Behovsformat
import no.nav.k9.rapid.river.BehovssekvensPacketListener
import no.nav.k9.rapid.river.leggTilLøsning
import no.nav.k9.rapid.river.requireArray
import no.nav.k9.rapid.river.skalLøseBehov
import org.slf4j.LoggerFactory
internal class HentRelasjoner(
rapidsConnection: RapidsConnection,
internal val relasjonMediator: RelasjonMediator) : BehovssekvensPacketListener(
logger = LoggerFactory.getLogger(HentRelasjoner::class.java)) {
init {
River(rapidsConnection).apply {
validate { packet ->
packet.skalLøseBehov(BEHOV)
packet.require(IDENTITETSNUMMER) { it.require() }
packet.require(TIL){ it.requireArray { entry -> entry is TextNode } }
}
}.register(this)
}
override fun handlePacket(id: String, packet: JsonMessage): Boolean {
logger.info("Mottatt $BEHOV")
val identitetsnummer = packet[IDENTITETSNUMMER].asText()
val til = (packet[TIL] as ArrayNode)
.map { it.asText() }
.toSet()
val løsning = hentRelasjonerFor(
identitetsnummer = identitetsnummer,
til = til,
correlationId = packet[Behovsformat.CorrelationId].asText())
packet.leggTilLøsning(
behov = BEHOV,
løsning = løsning
)
return true
}
override fun onSent(id: String, packet: JsonMessage) {
logger.info("Løst behov $BEHOV")
}
private fun hentRelasjonerFor(identitetsnummer: String, til: Set<String>, correlationId: String) = runBlocking {
relasjonMediator.hentRelasjoner(
identitetsnummer = identitetsnummer,
til = til,
correlationId = correlationId)
}
internal companion object {
const val BEHOV = "VurderRelasjoner"
const val IDENTITETSNUMMER = "@behov.$BEHOV.identitetsnummer"
const val TIL = "@behov.$BEHOV.til"
}
}