Skip to content

Commit bbf3362

Browse files
committed
Merge branch 'master' into feature/rina-cdm
# Conflicts: # build.gradle # nais/dev-gcp-q1.yml
2 parents 368be0c + 4ecdb41 commit bbf3362

File tree

96 files changed

+1726
-1733
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+1726
-1733
lines changed

build.gradle

+21-17
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
buildscript {
2+
23
ext {
3-
kotlinVersion = '1.9.22'
4-
springBootVersion = '3.2.2'
5-
springKafkaVersion = '3.1.1'
6-
jacksonModuleKotlinVersion = '2.16.1'
7-
tokenSupportVersion = '4.0.5'
4+
kotlinVersion = '1.9.23'
5+
springBootVersion = '3.2.3'
6+
springKafkaVersion = '3.1.2'
7+
jacksonModuleKotlinVersion = '2.17.0'
8+
tokenSupportVersion = '4.1.3'
89
imageioVersion = '3.10.1'
910
}
1011
}
@@ -37,9 +38,9 @@ dependencies {
3738
implementation("org.springframework.boot:spring-boot-actuator")
3839

3940
// Spring Framework BOM-fil kan overstyre så vi får siste patch-versjon av Spring Framework
40-
implementation(platform("org.springframework:spring-framework-bom:6.1.3"))
41+
implementation(platform("org.springframework:spring-framework-bom:6.1.5"))
4142

42-
implementation("org.apache.httpcomponents.client5:httpclient5:5.3")
43+
implementation("org.apache.httpcomponents.client5:httpclient5:5.3.1")
4344

4445
implementation('org.springframework.retry:spring-retry:2.0.5')
4546

@@ -52,34 +53,34 @@ dependencies {
5253
implementation "org.springframework.kafka:spring-kafka:$springKafkaVersion"
5354

5455
//GCP
55-
implementation("com.google.cloud:google-cloud-storage:2.30.1")
56+
implementation("com.google.cloud:google-cloud-storage:2.36.0")
5657

5758
// Eessi pensjon biblioteker
58-
implementation("no.nav.eessi.pensjon:ep-eux:2.2.6")
59-
implementation("no.nav.eessi.pensjon:ep-metrics:2.0.50")
60-
implementation("no.nav.eessi.pensjon:ep-logging:2.1.47")
61-
implementation("no.nav.eessi.pensjon:ep-personoppslag:13.1.62"){
59+
implementation("no.nav.eessi.pensjon:ep-eux:2.2.24")
60+
implementation("no.nav.eessi.pensjon:ep-metrics:2.0.58")
61+
implementation("no.nav.eessi.pensjon:ep-logging:2.1.56")
62+
implementation("no.nav.eessi.pensjon:ep-personoppslag:13.1.91"){
6263
exclude module: 'ep-eux'
6364
exclude module: 'ep-metrics'
6465
exclude module: 'ep-logging'
6566
}
66-
implementation("no.nav.eessi.pensjon:ep-routing:2.0.46"){
67+
implementation("no.nav.eessi.pensjon:ep-routing:2.0.79"){
6768
exclude module: 'ep-eux'
6869
exclude module: 'ep-metrics'
6970
exclude module: 'ep-logging'
7071
exclude module: 'ep-personoppslag'
7172
}
7273

7374
// PDF box
74-
implementation("org.apache.pdfbox:pdfbox-tools:3.0.1")
75+
implementation("org.apache.pdfbox:pdfbox-tools:3.0.2")
7576
implementation("com.twelvemonkeys.imageio:imageio-jpeg:${imageioVersion}")
7677
implementation("com.twelvemonkeys.imageio:imageio-tiff:${imageioVersion}")
7778

7879
// Logging
7980
implementation("net.logstash.logback:logstash-logback-encoder:7.4")
8081
testImplementation project(path: ':')
8182
configurations { all*.exclude group: 'commons-logging', module: 'commons-logging' }
82-
implementation("org.slf4j:jcl-over-slf4j:2.0.11")
83+
implementation("org.slf4j:jcl-over-slf4j:2.0.12")
8384

8485
//Auth
8586
implementation("no.nav.security:token-client-spring:${tokenSupportVersion}")
@@ -94,16 +95,19 @@ dependencies {
9495
}
9596
testImplementation "org.springframework.kafka:spring-kafka-test:$springKafkaVersion"
9697

97-
testImplementation(platform("org.junit:junit-bom:5.10.1"))
98+
testImplementation(platform("org.junit:junit-bom:5.10.2"))
9899
testImplementation("org.junit.jupiter:junit-jupiter")
99100

100101
//mock - test
101102
testImplementation("org.mock-server:mockserver-netty:5.15.0") {
102103
exclude module: 'junit'
103104
}
104-
testImplementation("io.mockk:mockk:1.13.8")
105+
testImplementation("io.mockk:mockk:1.13.10")
105106
testImplementation("com.ninja-squad:springmockk:4.0.2")
106107

107108
// Architecture tests
108109
testImplementation 'com.tngtech.archunit:archunit:1.2.1'
110+
111+
112+
109113
}

buildSrc/ep-module.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ compileTestKotlin {
6060

6161
test {
6262
useJUnitPlatform()
63-
failFast = true
63+
failFast = false
6464
testlogger {
6565
theme 'mocha' // task level
6666
showFullStackTraces true

nais/dev-gcp-q1.yml

+19-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,18 @@ spec:
2424
- host: pdl-api.dev-fss-pub.nais.io
2525
- host: norg2.dev-fss-pub.nais.io
2626
- host: navansatt.dev-fss-pub.nais.io
27+
- host: saf-q1.dev-fss-pub.nais.io
28+
29+
gcp:
30+
buckets:
31+
- name: eessi-pensjon-journal-dev-q1
32+
retentionPeriodDays: 40
33+
lifecycleCondition:
34+
age: 365
35+
createdBefore: 2020-01-01
36+
numNewerVersions: 2
37+
withState: ANY
38+
uniformBucketLevelAccess: true
2739
webproxy: true
2840
kafka:
2941
pool: nav-dev
@@ -32,14 +44,18 @@ spec:
3244
value: test
3345
- name: NAMESPACE
3446
value: q1
35-
- name: GCP_BUCKET_NAME
47+
- name: GCP_BUCKET_NAME_JOURNAL
48+
value: eessi-pensjon-journal-dev-q1
49+
- name: GCP_BUCKET_NAME_GJENNY
3650
value: eessi-pensjon-gjenny-dev-q1
3751
- name: EUX_RINA_API_V1_URL
3852
value: https://eux-rina-api-q1.dev-fss-pub.nais.io/cpi
3953
- name: PDL_URL
4054
value: https://pdl-api.dev-fss-pub.nais.io/graphql
4155
- name: JOURNALPOST_V1_URL
4256
value: https://dokarkiv-q1.dev-fss-pub.nais.io/rest/journalpostapi/v1
57+
- name: SAF_GRAPHQL_URL
58+
value: https://saf-q1.dev-fss-pub.nais.io/graphql
4359
- name: EESSI_PENSJON_FAGMODUL_URL
4460
value: https://eessi-pensjon-fagmodul-q1.intern.dev.nav.no
4561
- name: NORG2_URL
@@ -74,6 +90,8 @@ spec:
7490
value: dev-fss.pdl.pdl-api
7591
- name: AZURE_APP_DOKARKIV_CLIENT_ID
7692
value: dev-fss.teamdokumenthandtering.dokarkiv-q1
93+
- name: AZURE_APP_SAF_CLIENT_ID
94+
value: dev-fss.teamdokumenthandtering.saf-q1
7795

7896
image: {{ image }}
7997
ingresses:

nais/dev-gcp.yml

+19-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,18 @@ spec:
2424
- host: pdl-api.dev-fss-pub.nais.io
2525
- host: norg2.dev-fss-pub.nais.io
2626
- host: navansatt.dev-fss-pub.nais.io
27+
- host: saf-q2.dev-fss-pub.nais.io
28+
gcp:
29+
buckets:
30+
- name: eessi-pensjon-journal-dev
31+
retentionPeriodDays: 40
32+
lifecycleCondition:
33+
age: 365
34+
createdBefore: 2020-01-01
35+
numNewerVersions: 2
36+
withState: ANY
37+
uniformBucketLevelAccess: true
38+
2739
webproxy: true
2840
kafka:
2941
pool: nav-dev
@@ -32,14 +44,18 @@ spec:
3244
value: test
3345
- name: NAMESPACE
3446
value: q2
35-
- name: GCP_BUCKET_NAME
47+
- name: GCP_BUCKET_NAME_JOURNAL
48+
value: eessi-pensjon-journal-dev
49+
- name: GCP_BUCKET_NAME_GJENNY
3650
value: eessi-pensjon-gjenny-dev
3751
- name: EUX_RINA_API_V1_URL
3852
value: https://eux-rina-api-q2.dev-fss-pub.nais.io/cpi
3953
- name: PDL_URL
4054
value: https://pdl-api.dev-fss-pub.nais.io/graphql
4155
- name: JOURNALPOST_V1_URL
4256
value: https://dokarkiv-q2.dev-fss-pub.nais.io/rest/journalpostapi/v1
57+
- name: SAF_GRAPHQL_URL
58+
value: https://saf-q2.dev-fss-pub.nais.io/graphql
4359
- name: EESSI_PENSJON_FAGMODUL_URL
4460
value: https://eessi-pensjon-fagmodul-q2.intern.dev.nav.no
4561
- name: NORG2_URL
@@ -74,6 +90,8 @@ spec:
7490
value: dev-fss.pdl.pdl-api
7591
- name: AZURE_APP_DOKARKIV_CLIENT_ID
7692
value: dokarkiv
93+
- name: AZURE_APP_SAF_CLIENT_ID
94+
value: dev-fss.teamdokumenthandtering.saf
7795

7896
image: {{ image }}
7997
ingresses:

nais/prod-gcp.yml

+19-2
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,38 @@ spec:
2424
- host: pdl-api.prod-fss-pub.nais.io
2525
- host: norg2.prod-fss-pub.nais.io
2626
- host: navansatt.prod-fss-pub.nais.io
27-
webproxy: true
27+
- host: saf.prod-fss-pub.nais.io
2828

29+
webproxy: true
30+
gcp:
31+
buckets:
32+
- name: eessi-pensjon-journal
33+
retentionPeriodDays: 40
34+
lifecycleCondition:
35+
age: 365
36+
createdBefore: 2020-01-01
37+
numNewerVersions: 2
38+
withState: ANY
39+
uniformBucketLevelAccess: true
2940
kafka:
3041
pool: nav-prod
3142
env:
3243
- name: SPRING_PROFILES_ACTIVE
3344
value: prod
3445
- name: NAMESPACE
3546
value: p
36-
- name: GCP_BUCKET_NAME
47+
- name: GCP_BUCKET_NAME_JOURNAL
48+
value: eessi-pensjon-journal
49+
- name: GCP_BUCKET_NAME_GJENNY
3750
value: eessi-pensjon-gjenny
3851
- name: EUX_RINA_API_V1_URL
3952
value: https://eux-rina-api.prod-fss-pub.nais.io/cpi
4053
- name: PDL_URL
4154
value: https://pdl-api.prod-fss-pub.nais.io/graphql
4255
- name: JOURNALPOST_V1_URL
4356
value: https://dokarkiv.prod-fss-pub.nais.io/rest/journalpostapi/v1
57+
- name: SAF_GRAPHQL_URL
58+
value: https://saf.prod-fss-pub.nais.io/graphql
4459
- name: EESSI_PENSJON_FAGMODUL_URL
4560
value: https://eessi-pensjon-fagmodul.intern.nav.no
4661
- name: NORG2_URL
@@ -75,6 +90,8 @@ spec:
7590
value: dokarkiv
7691
- name: AZURE_APP_NAVANSATT_CLIENT_ID
7792
value: prod-fss.pensjondeployer.navansatt
93+
- name: AZURE_APP_SAF_CLIENT_ID
94+
value: prod-fss.teamdokumenthandtering.saf
7895

7996
image: {{ image }}
8097
ingresses:

src/main/kotlin/no/nav/eessi/pensjon/config/KafkaStoppingErrorHandler.kt

-3
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,8 @@ import org.apache.kafka.clients.consumer.ConsumerRecord
55
import org.slf4j.LoggerFactory
66
import org.springframework.context.annotation.Profile
77
import org.springframework.kafka.listener.CommonContainerStoppingErrorHandler
8-
import org.springframework.kafka.listener.CommonErrorHandler
98
import org.springframework.kafka.listener.MessageListenerContainer
109
import org.springframework.stereotype.Component
11-
import java.io.PrintWriter
12-
import java.io.StringWriter
1310

1411
@Profile("prod")
1512
@Component

src/main/kotlin/no/nav/eessi/pensjon/config/PDLConfiguration.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class PDLConfiguration(
2222
override fun callBack(): PdlToken {
2323
val clientProperties = Optional.ofNullable(clientConfigurationProperties.registration["pdl-credentials"]).orElseThrow { RuntimeException("could not find oauth2 client config for pdl-credentials") }
2424
val response = oAuth2AccessTokenService.getAccessToken(clientProperties)
25-
val token = response?.accessToken!!
25+
val token = response.accessToken!!
2626
return PdlTokenImp(token)
2727
}
2828

src/main/kotlin/no/nav/eessi/pensjon/config/RestTemplateConfig.kt

+12-4
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ class RestTemplateConfig(
5757
@Value("\${NAVANSATT_URL}")
5858
lateinit var navansattUrl: String
5959

60+
@Value("\${SAF_GRAPHQL_URL}")
61+
lateinit var graphQlUrl: String
62+
6063
@Bean
6164
fun euxOAuthRestTemplate(): RestTemplate = opprettRestTemplate(euxUrl, "eux-credentials")
6265

@@ -67,7 +70,8 @@ class RestTemplateConfig(
6770
fun norg2RestTemplate(): RestTemplate? = buildRestTemplate(norg2Url)
6871

6972
@Bean
70-
fun journalpostOidcRestTemplate(): RestTemplate = opprettRestTemplateForJoark(joarkUrl)
73+
fun journalpostOidcRestTemplate(): RestTemplate = opprettRestTemplateForJoark(joarkUrl,
74+
bearerTokenInterceptor(clientProperties("dokarkiv-credentials"), oAuth2AccessTokenService!!))
7175

7276
@Bean
7377
fun fagmodulOidcRestTemplate(): RestTemplate = opprettRestTemplate(fagmodulUrl, "fagmodul-credentials")
@@ -78,19 +82,23 @@ class RestTemplateConfig(
7882
@Bean
7983
fun navansattRestTemplate(): RestTemplate? = opprettRestTemplate(navansattUrl, "navansatt-credentials")
8084

85+
@Bean
86+
fun safGraphQlOidcRestTemplate() = opprettRestTemplateForJoark(graphQlUrl, bearerTokenInterceptor(
87+
clientProperties("saf-credentials"), oAuth2AccessTokenService!!))
88+
8189
/**
8290
* Denne bruker HttpComponentsClientHttpRequestFactory - angivelig for å fikse
8391
* problemer med HTTP-PATCH – som brukes mot joark.
8492
*/
85-
private fun opprettRestTemplateForJoark(url: String) : RestTemplate {
93+
private fun opprettRestTemplateForJoark(url: String, bearerTokenInterceptor: ClientHttpRequestInterceptor) : RestTemplate {
8694
return RestTemplateBuilder()
8795
.rootUri(url)
8896
.errorHandler(DefaultResponseErrorHandler())
8997
.additionalInterceptors(
9098
RequestIdHeaderInterceptor(),
9199
IOExceptionRetryInterceptor(),
92100
RequestCountInterceptor(meterRegistry),
93-
bearerTokenInterceptor(clientProperties("dokarkiv-credentials"), oAuth2AccessTokenService!!)
101+
bearerTokenInterceptor
94102
)
95103
.build().apply {
96104
requestFactory = HttpComponentsClientHttpRequestFactory()
@@ -134,7 +142,7 @@ class RestTemplateConfig(
134142
): ClientHttpRequestInterceptor {
135143
return ClientHttpRequestInterceptor { request: HttpRequest, body: ByteArray?, execution: ClientHttpRequestExecution ->
136144
val response = oAuth2AccessTokenService.getAccessToken(clientProperties)
137-
val tokenChunks = response?.accessToken!!.split(".")
145+
val tokenChunks = response.accessToken!!.split(".")
138146
val tokenBody = tokenChunks[1]
139147
logger.debug("subject: " + JWTClaimsSet.parse(Base64.getDecoder().decode(tokenBody).decodeToString()).subject + "/n + $response.accessToken")
140148

src/main/kotlin/no/nav/eessi/pensjon/buc/EuxCachableKlient.kt src/main/kotlin/no/nav/eessi/pensjon/eux/EuxCachableKlient.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.nav.eessi.pensjon.buc
1+
package no.nav.eessi.pensjon.eux
22

33
import no.nav.eessi.pensjon.config.SED_CACHE
44
import no.nav.eessi.pensjon.eux.klient.EuxKlientLib

src/main/kotlin/no/nav/eessi/pensjon/buc/EuxService.kt src/main/kotlin/no/nav/eessi/pensjon/eux/EuxService.kt

+6-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.nav.eessi.pensjon.buc
1+
package no.nav.eessi.pensjon.eux
22

33
import no.nav.eessi.pensjon.eux.model.BucType.P_BUC_10
44
import no.nav.eessi.pensjon.eux.model.BucType.R_BUC_02
@@ -12,7 +12,6 @@ import no.nav.eessi.pensjon.eux.model.document.SedDokumentfiler
1212
import no.nav.eessi.pensjon.eux.model.document.SedStatus
1313
import no.nav.eessi.pensjon.eux.model.sed.R005
1414
import no.nav.eessi.pensjon.eux.model.sed.SED
15-
import no.nav.eessi.pensjon.models.sed.erGyldig
1615
import org.slf4j.Logger
1716
import org.slf4j.LoggerFactory
1817
import org.springframework.stereotype.Service
@@ -33,22 +32,19 @@ class EuxService( private val euxCacheableKlient: EuxCacheableKlient) {
3332
/**
3433
* Henter alle dokumenter (SEDer) i en Buc.
3534
*/
36-
fun hentBucDokumenter(buc: Buc): List<ForenkletSED> {
35+
fun hentAlleGyldigeDokumenter(buc: Buc): List<ForenkletSED> {
3736
val documents = buc.documents ?: return emptyList()
3837
return documents
3938
.filter { it.id != null }
4039
.map { ForenkletSED(it.id!!, it.type, SedStatus.fra(it.status)) }
4140
.filterNot { it.status == SedStatus.EMPTY }
42-
}
43-
44-
fun hentAlleGyldigeDokumenter(buc: Buc): List<ForenkletSED> {
45-
return hentBucDokumenter(buc)
4641
.filter { it.type.erGyldig() }
4742
.also { logger.info("Fant ${it.size} dokumenter i BUC: $it") }
4843
}
4944

5045
@OptIn(ExperimentalTime::class)
51-
fun hentSedMedGyldigStatus(rinaSakId: String, documents: List<ForenkletSED>): List<Pair<String, SED>> {
46+
fun hentSedMedGyldigStatus(rinaSakId: String, buc: Buc): List<Pair<String, SED>> {
47+
val documents = hentAlleGyldigeDokumenter(buc)
5248
return measureTimedValue {
5349
documents.filter(ForenkletSED::harGyldigStatus)
5450
.map { sed -> sed.id to euxCacheableKlient.hentSed(rinaSakId, sed.id) }
@@ -71,7 +67,8 @@ class EuxService( private val euxCacheableKlient: EuxCacheableKlient) {
7167
}
7268
}
7369

74-
fun hentAlleKansellerteSedIBuc(rinaSakId: String, documents: List<ForenkletSED>): List<SED> {
70+
fun hentAlleKansellerteSedIBuc(rinaSakId: String, buc: Buc): List<SED> {
71+
val documents = hentAlleGyldigeDokumenter(buc)
7572
return documents
7673
.filter(ForenkletSED::erKansellert)
7774
.map { sed -> euxCacheableKlient.hentSed(rinaSakId, sed.id) }

src/main/kotlin/no/nav/eessi/pensjon/models/sed/SedTypeUtils.kt src/main/kotlin/no/nav/eessi/pensjon/eux/SedTypeUtils.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package no.nav.eessi.pensjon.models.sed
1+
package no.nav.eessi.pensjon.eux
22

3+
import no.nav.eessi.pensjon.eux.SedTypeUtils.typerMedIdentEllerFDato
4+
import no.nav.eessi.pensjon.eux.SedTypeUtils.ugyldigeTyper
35
import no.nav.eessi.pensjon.eux.model.SedType
46
import no.nav.eessi.pensjon.eux.model.SedType.*
5-
import no.nav.eessi.pensjon.models.sed.SedTypeUtils.typerMedIdentEllerFDato
6-
import no.nav.eessi.pensjon.models.sed.SedTypeUtils.ugyldigeTyper
77

88
object SedTypeUtils {
99

@@ -32,4 +32,4 @@ object SedTypeUtils {
3232

3333
fun SedType.kanInneholdeIdentEllerFdato(): Boolean = this in typerMedIdentEllerFDato
3434

35-
fun SedType?.erGyldig(): Boolean = this != null && this !in ugyldigeTyper
35+
fun SedType?.erGyldig(): Boolean = (this != null) && (this !in ugyldigeTyper)

0 commit comments

Comments
 (0)