From be51eeebfa7ee167e0b5b9acaa5ac7b6fda0c505 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 11:34:26 +0100 Subject: [PATCH] Bump the all-dependencies group across 1 directory with 16 updates (#843) * Bump the all-dependencies group across 1 directory with 16 updates Bumps the all-dependencies group with 16 updates in the / directory: | Package | From | To | | --- | --- | --- | | [org.springframework.boot:spring-boot-dependencies](https://github.com/spring-projects/spring-boot) | `3.3.3` | `3.3.5` | | [no.nav.familie.kontrakter:felles](https://github.com/navikt/familie-kontrakter) | `3.0_20240906070327_03089ba` | `3.0_20241102131210_d65efd1` | | [no.nav.familie.kontrakter:enslig-forsorger](https://github.com/navikt/familie-kontrakter) | `3.0_20240906070327_03089ba` | `3.0_20241102131210_d65efd1` | | [org.jetbrains.kotlin:kotlin-stdlib](https://github.com/JetBrains/kotlin) | `2.0.20` | `2.0.21` | | [org.jetbrains.kotlin:kotlin-reflect](https://github.com/JetBrains/kotlin) | `2.0.20` | `2.0.21` | | [org.jetbrains.kotlin:kotlin-test-junit5](https://github.com/JetBrains/kotlin) | `2.0.20` | `2.0.21` | | org.jetbrains.kotlin:kotlin-maven-plugin | `2.0.20` | `2.0.21` | | org.jetbrains.kotlin:kotlin-maven-allopen | `2.0.20` | `2.0.21` | | [io.mockk:mockk-jvm](https://github.com/mockk/mockk) | `1.13.12` | `1.13.13` | | [com.nimbusds:oauth2-oidc-sdk](https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions) | `11.19.1` | `11.20.1` | | [org.wiremock:wiremock-standalone](https://github.com/wiremock/wiremock) | `3.9.1` | `3.9.2` | | [com.pinterest.ktlint:ktlint-cli](https://github.com/pinterest/ktlint) | `1.3.1` | `1.4.1` | | [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) | `3.5.0` | `3.5.2` | | [no.nav.security:token-client-core](https://github.com/navikt/token-support) | `5.0.5` | `5.0.10` | | [no.nav.security:token-client-spring](https://github.com/navikt/token-support) | `5.0.5` | `5.0.10` | | [no.nav.security:token-validation-spring](https://github.com/navikt/token-support) | `5.0.5` | `5.0.10` | Updates `org.springframework.boot:spring-boot-dependencies` from 3.3.3 to 3.3.5 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.3...v3.3.5) Updates `no.nav.familie.kontrakter:felles` from 3.0_20240906070327_03089ba to 3.0_20241102131210_d65efd1 - [Commits](https://github.com/navikt/familie-kontrakter/commits) Updates `no.nav.familie.kontrakter:enslig-forsorger` from 3.0_20240906070327_03089ba to 3.0_20241102131210_d65efd1 - [Commits](https://github.com/navikt/familie-kontrakter/commits) Updates `org.jetbrains.kotlin:kotlin-stdlib` from 2.0.20 to 2.0.21 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.20...v2.0.21) Updates `org.jetbrains.kotlin:kotlin-reflect` from 2.0.20 to 2.0.21 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.20...v2.0.21) Updates `org.jetbrains.kotlin:kotlin-test-junit5` from 2.0.20 to 2.0.21 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.20...v2.0.21) Updates `org.jetbrains.kotlin:kotlin-maven-plugin` from 2.0.20 to 2.0.21 Updates `org.jetbrains.kotlin:kotlin-maven-allopen` from 2.0.20 to 2.0.21 Updates `org.jetbrains.kotlin:kotlin-reflect` from 2.0.20 to 2.0.21 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.20...v2.0.21) Updates `io.mockk:mockk-jvm` from 1.13.12 to 1.13.13 - [Release notes](https://github.com/mockk/mockk/releases) - [Commits](https://github.com/mockk/mockk/compare/1.13.12...1.13.13) Updates `com.nimbusds:oauth2-oidc-sdk` from 11.19.1 to 11.20.1 - [Changelog](https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions/src/master/CHANGELOG.txt) - [Commits](https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions/branches/compare/11.20.1..11.19.1) Updates `org.wiremock:wiremock-standalone` from 3.9.1 to 3.9.2 - [Release notes](https://github.com/wiremock/wiremock/releases) - [Commits](https://github.com/wiremock/wiremock/compare/3.9.1...3.9.2) Updates `org.jetbrains.kotlin:kotlin-test-junit5` from 2.0.20 to 2.0.21 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.20...v2.0.21) Updates `no.nav.familie.kontrakter:enslig-forsorger` from 3.0_20240906070327_03089ba to 3.0_20241102131210_d65efd1 - [Commits](https://github.com/navikt/familie-kontrakter/commits) Updates `com.pinterest.ktlint:ktlint-cli` from 1.3.1 to 1.4.1 - [Release notes](https://github.com/pinterest/ktlint/releases) - [Changelog](https://github.com/pinterest/ktlint/blob/master/CHANGELOG.md) - [Commits](https://github.com/pinterest/ktlint/compare/1.3.1...1.4.1) Updates `org.apache.maven.plugins:maven-surefire-plugin` from 3.5.0 to 3.5.2 - [Release notes](https://github.com/apache/maven-surefire/releases) - [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.0...surefire-3.5.2) Updates `org.jetbrains.kotlin:kotlin-maven-plugin` from 2.0.20 to 2.0.21 Updates `no.nav.security:token-client-core` from 5.0.5 to 5.0.10 - [Release notes](https://github.com/navikt/token-support/releases) - [Commits](https://github.com/navikt/token-support/compare/5.0.5...5.0.10) Updates `no.nav.security:token-client-spring` from 5.0.5 to 5.0.10 - [Release notes](https://github.com/navikt/token-support/releases) - [Commits](https://github.com/navikt/token-support/compare/5.0.5...5.0.10) Updates `no.nav.security:token-validation-spring` from 5.0.5 to 5.0.10 - [Release notes](https://github.com/navikt/token-support/releases) - [Commits](https://github.com/navikt/token-support/compare/5.0.5...5.0.10) Updates `no.nav.security:token-client-spring` from 5.0.5 to 5.0.10 - [Release notes](https://github.com/navikt/token-support/releases) - [Commits](https://github.com/navikt/token-support/compare/5.0.5...5.0.10) Updates `org.jetbrains.kotlin:kotlin-maven-allopen` from 2.0.20 to 2.0.21 Updates `no.nav.security:token-validation-spring` from 5.0.5 to 5.0.10 - [Release notes](https://github.com/navikt/token-support/releases) - [Commits](https://github.com/navikt/token-support/compare/5.0.5...5.0.10) --- updated-dependencies: - dependency-name: org.springframework.boot:spring-boot-dependencies dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: no.nav.familie.kontrakter:felles dependency-type: direct:production dependency-group: all-dependencies - dependency-name: no.nav.familie.kontrakter:enslig-forsorger dependency-type: direct:production dependency-group: all-dependencies - dependency-name: org.jetbrains.kotlin:kotlin-stdlib dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: org.jetbrains.kotlin:kotlin-reflect dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: org.jetbrains.kotlin:kotlin-test-junit5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: org.jetbrains.kotlin:kotlin-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: org.jetbrains.kotlin:kotlin-maven-allopen dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: org.jetbrains.kotlin:kotlin-reflect dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: io.mockk:mockk-jvm dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: com.nimbusds:oauth2-oidc-sdk dependency-type: direct:production update-type: version-update:semver-minor dependency-group: all-dependencies - dependency-name: org.wiremock:wiremock-standalone dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: org.jetbrains.kotlin:kotlin-test-junit5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: no.nav.familie.kontrakter:enslig-forsorger dependency-type: direct:production dependency-group: all-dependencies - dependency-name: com.pinterest.ktlint:ktlint-cli dependency-type: direct:production update-type: version-update:semver-minor dependency-group: all-dependencies - dependency-name: org.apache.maven.plugins:maven-surefire-plugin dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: org.jetbrains.kotlin:kotlin-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: no.nav.security:token-client-core dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: no.nav.security:token-client-spring dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: no.nav.security:token-validation-spring dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: no.nav.security:token-client-spring dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: org.jetbrains.kotlin:kotlin-maven-allopen dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: no.nav.security:token-validation-spring dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies ... Signed-off-by: dependabot[bot] * utelater bumping av token-client-core --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: throndi <56258085+throndi@users.noreply.github.com> --- .../http/client/AbstractPingableRestClient.kt | 3 +- .../familie/http/client/AbstractRestClient.kt | 25 ++--- .../familie/http/client/AbstractSoapClient.kt | 4 +- .../familie/http/client/MultipartBuilder.kt | 12 +-- .../http/client/RetryOAuth2HttpClient.kt | 4 +- .../http/config/NaisProxyCustomizer.kt | 26 ++--- .../familie/http/config/RestTemplateAzure.kt | 42 ++++---- .../http/config/RestTemplateBuilderBean.kt | 8 +- .../familie/http/config/RestTemplateSts.kt | 14 +-- .../http/health/AbstractHealthIndicator.kt | 8 +- .../ApiKeyInjectingClientInterceptor.kt | 9 +- .../BearerTokenClientInterceptor.kt | 27 +++-- .../ConsumerIdClientInterceptor.kt | 3 +- .../interceptor/InternLoggerInterceptor.kt | 4 +- .../StsBearerTokenClientInterceptor.kt | 4 +- .../http/sts/StsAccessTokenFeilException.kt | 5 +- .../no/nav/familie/http/sts/StsRestClient.kt | 24 ++--- .../http/client/AbstractRestClientTest.kt | 13 ++- .../http/client/RetryOAuth2HttpClientTest.kt | 14 +-- .../config/RestTemplateBuilderBeanTest.kt | 6 +- ...rerTokenOnBehalfOfClientInterceptorTest.kt | 3 +- .../no/nav/familie/kafka/KafkaErrorHandler.kt | 4 +- .../no/nav/familie/leader/LeaderClient.kt | 3 +- .../java/no/nav/familie/log/NavHttpHeaders.kt | 8 +- .../log/appender/SecureLoggerRestAppender.kt | 3 +- .../familie/log/auditlogger/Auditlogger.kt | 34 ++++--- .../no/nav/familie/log/filter/LogFilter.kt | 15 ++- .../familie/log/filter/RequestTimeFilter.kt | 4 +- .../nav/familie/log/filter/LogFilterTest.kt | 4 +- .../metrikker/TellAPIEndepunkterIBrukTest.kt | 10 +- .../nav/familie/foedselsnummer/FoedselsNr.kt | 4 +- pom.xml | 16 +-- .../familie/sikkerhet/AuthorizationFilter.kt | 6 +- .../familie/sikkerhet/EksternBrukerUtils.kt | 23 +++-- .../java/no/nav/familie/sikkerhet/OIDCUtil.kt | 34 +++---- .../familie/unleash/DefaultUnleashService.kt | 18 ++-- .../no/nav/familie/unleash/UnleashConfig.kt | 17 +--- .../valutakurs/ValutakursRestClient.kt | 5 +- .../valutakurs/domene/ECBExchangeRatesData.kt | 18 ++-- .../familie/valutakurs/domene/ExchangeRate.kt | 10 +- .../exception/ValutakursClientException.kt | 15 ++- .../ValutakursTransformationException.kt | 5 +- .../valutakurs/ValutakursRestClientTest.kt | 98 ++++++++++++++----- .../webflux/builder/AzureWebClientConfig.kt | 12 +-- .../webflux/builder/NaisProxyCustomizer.kt | 9 +- .../builder/RestTemplateBuilderConfig.kt | 35 +++---- .../webflux/builder/StsWebClientConfig.kt | 5 +- .../webflux/builder/WebClientConfig.kt | 21 ++-- .../client/AbstractPingableWebClient.kt | 3 +- .../webflux/client/AbstractWebClient.kt | 40 ++++---- .../webflux/filter/BearerTokenFilter.kt | 40 ++++---- .../webflux/filter/ConsumerIdFilter.kt | 6 +- .../webflux/filter/InternLoggerFilter.kt | 23 +++-- .../filter/MdcValuesPropagatingFilter.kt | 3 +- .../webflux/filter/StsBearerTokenFilter.kt | 4 +- .../webflux/health/AbstractHealthIndicator.kt | 8 +- .../sts/StsAccessTokenFeilException.kt | 5 +- .../nav/familie/webflux/sts/StsTokenClient.kt | 16 +-- .../builder/WebClientConfigCustomTest.kt | 17 ++-- .../webflux/builder/WebClientConfigTest.kt | 9 +- .../webflux/client/AbstractWebClientTest.kt | 17 ++-- 61 files changed, 480 insertions(+), 405 deletions(-) diff --git a/http-client/src/main/java/no/nav/familie/http/client/AbstractPingableRestClient.kt b/http-client/src/main/java/no/nav/familie/http/client/AbstractPingableRestClient.kt index 5af9283a..4f90d7bc 100644 --- a/http-client/src/main/java/no/nav/familie/http/client/AbstractPingableRestClient.kt +++ b/http-client/src/main/java/no/nav/familie/http/client/AbstractPingableRestClient.kt @@ -10,7 +10,8 @@ import java.net.URI abstract class AbstractPingableRestClient( operations: RestOperations, metricsPrefix: String, -) : AbstractRestClient(operations, metricsPrefix), Pingable { +) : AbstractRestClient(operations, metricsPrefix), + Pingable { abstract val pingUri: URI override fun ping() { diff --git a/http-client/src/main/java/no/nav/familie/http/client/AbstractRestClient.kt b/http-client/src/main/java/no/nav/familie/http/client/AbstractRestClient.kt index 43b9b515..4d7bdd18 100644 --- a/http-client/src/main/java/no/nav/familie/http/client/AbstractRestClient.kt +++ b/http-client/src/main/java/no/nav/familie/http/client/AbstractRestClient.kt @@ -37,41 +37,31 @@ abstract class AbstractRestClient( inline fun getForEntity( uri: URI, httpHeaders: HttpHeaders? = null, - ): T { - return executeMedMetrics(uri) { operations.exchange(uri, HttpMethod.GET, HttpEntity(null, httpHeaders)) } - } + ): T = executeMedMetrics(uri) { operations.exchange(uri, HttpMethod.GET, HttpEntity(null, httpHeaders)) } inline fun postForEntity( uri: URI, payload: Any, httpHeaders: HttpHeaders? = null, - ): T { - return executeMedMetrics(uri) { operations.exchange(uri, HttpMethod.POST, HttpEntity(payload, httpHeaders)) } - } + ): T = executeMedMetrics(uri) { operations.exchange(uri, HttpMethod.POST, HttpEntity(payload, httpHeaders)) } inline fun putForEntity( uri: URI, payload: Any, httpHeaders: HttpHeaders? = null, - ): T { - return executeMedMetrics(uri) { operations.exchange(uri, HttpMethod.PUT, HttpEntity(payload, httpHeaders)) } - } + ): T = executeMedMetrics(uri) { operations.exchange(uri, HttpMethod.PUT, HttpEntity(payload, httpHeaders)) } inline fun patchForEntity( uri: URI, payload: Any, httpHeaders: HttpHeaders? = null, - ): T { - return executeMedMetrics(uri) { operations.exchange(uri, HttpMethod.PATCH, HttpEntity(payload, httpHeaders)) } - } + ): T = executeMedMetrics(uri) { operations.exchange(uri, HttpMethod.PATCH, HttpEntity(payload, httpHeaders)) } inline fun deleteForEntity( uri: URI, payload: Any? = null, httpHeaders: HttpHeaders? = null, - ): T { - return executeMedMetrics(uri) { operations.exchange(uri, HttpMethod.DELETE, HttpEntity(payload, httpHeaders)) } - } + ): T = executeMedMetrics(uri) { operations.exchange(uri, HttpMethod.DELETE, HttpEntity(payload, httpHeaders)) } private fun validerOgPakkUt( respons: ResponseEntity, @@ -110,8 +100,8 @@ abstract class AbstractRestClient( } } - private fun lesRessurs(e: RestClientResponseException): Ressurs? { - return try { + private fun lesRessurs(e: RestClientResponseException): Ressurs? = + try { if (e.responseBodyAsString.contains("status")) { objectMapper.readValue>(e.responseBodyAsString) } else { @@ -120,7 +110,6 @@ abstract class AbstractRestClient( } catch (ex: Exception) { null } - } override fun toString(): String = this::class.simpleName + " [operations=" + operations + "]" } diff --git a/http-client/src/main/java/no/nav/familie/http/client/AbstractSoapClient.kt b/http-client/src/main/java/no/nav/familie/http/client/AbstractSoapClient.kt index 32b60cfa..d7a59874 100644 --- a/http-client/src/main/java/no/nav/familie/http/client/AbstractSoapClient.kt +++ b/http-client/src/main/java/no/nav/familie/http/client/AbstractSoapClient.kt @@ -5,7 +5,9 @@ import io.micrometer.core.instrument.Metrics import io.micrometer.core.instrument.Timer import java.util.concurrent.TimeUnit -abstract class AbstractSoapClient(metricsPrefix: String) { +abstract class AbstractSoapClient( + metricsPrefix: String, +) { protected val responstid: Timer = Metrics.timer("$metricsPrefix.tid") protected val responsSuccess: Counter = Metrics.counter("$metricsPrefix.response", "status", "success") protected val responsFailure: Counter = Metrics.counter("$metricsPrefix.response", "status", "failure") diff --git a/http-client/src/main/java/no/nav/familie/http/client/MultipartBuilder.kt b/http-client/src/main/java/no/nav/familie/http/client/MultipartBuilder.kt index c4bdfb2b..a68ab1c1 100644 --- a/http-client/src/main/java/no/nav/familie/http/client/MultipartBuilder.kt +++ b/http-client/src/main/java/no/nav/familie/http/client/MultipartBuilder.kt @@ -27,21 +27,15 @@ class MultipartBuilder { ): MultipartBuilder { val request = object : ByteArrayResource(bytes) { - override fun getFilename(): String? { - return filename - } + override fun getFilename(): String? = filename } multipartRequest.add(name, request) return this } - fun build(): MultiValueMap { - return multipartRequest - } + fun build(): MultiValueMap = multipartRequest - fun asEntity(): HttpEntity> { - return HttpEntity(multipartRequest, MULTIPART_HEADERS) - } + fun asEntity(): HttpEntity> = HttpEntity(multipartRequest, MULTIPART_HEADERS) companion object { val MULTIPART_HEADERS: HttpHeaders = diff --git a/http-client/src/main/java/no/nav/familie/http/client/RetryOAuth2HttpClient.kt b/http-client/src/main/java/no/nav/familie/http/client/RetryOAuth2HttpClient.kt index ee9d73a1..87458aea 100644 --- a/http-client/src/main/java/no/nav/familie/http/client/RetryOAuth2HttpClient.kt +++ b/http-client/src/main/java/no/nav/familie/http/client/RetryOAuth2HttpClient.kt @@ -54,7 +54,5 @@ class RetryOAuth2HttpClient( } } - private fun shouldRetry(e: Exception): Boolean { - return retryExceptions.contains(e.cause?.let { it::class }) - } + private fun shouldRetry(e: Exception): Boolean = retryExceptions.contains(e.cause?.let { it::class }) } diff --git a/http-client/src/main/java/no/nav/familie/http/config/NaisProxyCustomizer.kt b/http-client/src/main/java/no/nav/familie/http/config/NaisProxyCustomizer.kt index bcc0f6cf..12a01cda 100644 --- a/http-client/src/main/java/no/nav/familie/http/config/NaisProxyCustomizer.kt +++ b/http-client/src/main/java/no/nav/familie/http/config/NaisProxyCustomizer.kt @@ -26,34 +26,34 @@ class NaisProxyCustomizer( override fun customize(restTemplate: RestTemplate) { val proxy = HttpHost("webproxy-nais.nav.no", 8088) val client: HttpClient = - HttpClientBuilder.create() + HttpClientBuilder + .create() .setDefaultRequestConfig( - RequestConfig.custom() + RequestConfig + .custom() .setConnectTimeout(Timeout.ofSeconds(connectTimeout)) .setConnectionRequestTimeout(Timeout.ofSeconds(requestTimeout)) .build(), - ) - .setConnectionManager( - PoolingHttpClientConnectionManagerBuilder.create() + ).setConnectionManager( + PoolingHttpClientConnectionManagerBuilder + .create() .setDefaultSocketConfig( - SocketConfig.custom() + SocketConfig + .custom() .setSoTimeout(Timeout.ofMilliseconds(socketTimeout)) .build(), - ) - .build(), - ) - .setRoutePlanner( + ).build(), + ).setRoutePlanner( object : DefaultProxyRoutePlanner(proxy) { public override fun determineProxy( target: HttpHost, context: HttpContext, - ): HttpHost? { - return if (target.hostName.contains("microsoft")) { + ): HttpHost? = + if (target.hostName.contains("microsoft")) { super.determineProxy(target, context) } else { null } - } }, ).build() diff --git a/http-client/src/main/java/no/nav/familie/http/config/RestTemplateAzure.kt b/http-client/src/main/java/no/nav/familie/http/config/RestTemplateAzure.kt index 7050265d..a7a2e571 100644 --- a/http-client/src/main/java/no/nav/familie/http/config/RestTemplateAzure.kt +++ b/http-client/src/main/java/no/nav/familie/http/config/RestTemplateAzure.kt @@ -29,13 +29,13 @@ class RestTemplateAzure { consumerIdClientInterceptor: ConsumerIdClientInterceptor, internLoggerInterceptor: InternLoggerInterceptor, bearerTokenClientInterceptor: BearerTokenClientInterceptor, - ): RestOperations { - return restTemplateBuilder.additionalInterceptors( - consumerIdClientInterceptor, - bearerTokenClientInterceptor, - MdcValuesPropagatingClientInterceptor(), - ).build() - } + ): RestOperations = + restTemplateBuilder + .additionalInterceptors( + consumerIdClientInterceptor, + bearerTokenClientInterceptor, + MdcValuesPropagatingClientInterceptor(), + ).build() @Bean("azureClientCredential") fun restTemplateClientCredentialBearer( @@ -43,13 +43,13 @@ class RestTemplateAzure { consumerIdClientInterceptor: ConsumerIdClientInterceptor, internLoggerInterceptor: InternLoggerInterceptor, bearerTokenClientInterceptor: BearerTokenClientCredentialsClientInterceptor, - ): RestOperations { - return restTemplateBuilder.additionalInterceptors( - consumerIdClientInterceptor, - bearerTokenClientInterceptor, - MdcValuesPropagatingClientInterceptor(), - ).build() - } + ): RestOperations = + restTemplateBuilder + .additionalInterceptors( + consumerIdClientInterceptor, + bearerTokenClientInterceptor, + MdcValuesPropagatingClientInterceptor(), + ).build() @Bean("azureOnBehalfOf") fun restTemplateOnBehalfOfBearer( @@ -57,11 +57,11 @@ class RestTemplateAzure { consumerIdClientInterceptor: ConsumerIdClientInterceptor, internLoggerInterceptor: InternLoggerInterceptor, bearerTokenClientInterceptor: BearerTokenOnBehalfOfClientInterceptor, - ): RestOperations { - return restTemplateBuilder.additionalInterceptors( - consumerIdClientInterceptor, - bearerTokenClientInterceptor, - MdcValuesPropagatingClientInterceptor(), - ).build() - } + ): RestOperations = + restTemplateBuilder + .additionalInterceptors( + consumerIdClientInterceptor, + bearerTokenClientInterceptor, + MdcValuesPropagatingClientInterceptor(), + ).build() } diff --git a/http-client/src/main/java/no/nav/familie/http/config/RestTemplateBuilderBean.kt b/http-client/src/main/java/no/nav/familie/http/config/RestTemplateBuilderBean.kt index 4dd99f80..cee9ef27 100644 --- a/http-client/src/main/java/no/nav/familie/http/config/RestTemplateBuilderBean.kt +++ b/http-client/src/main/java/no/nav/familie/http/config/RestTemplateBuilderBean.kt @@ -12,9 +12,7 @@ import org.springframework.context.annotation.Import class RestTemplateBuilderBean { @Bean @ConditionalOnProperty("no.nav.security.jwt.issuer.azuread.proxyurl") - fun restTemplateBuilder(iNaisProxyCustomizer: INaisProxyCustomizer): RestTemplateBuilder { - return RestTemplateBuilder(iNaisProxyCustomizer) - } + fun restTemplateBuilder(iNaisProxyCustomizer: INaisProxyCustomizer): RestTemplateBuilder = RestTemplateBuilder(iNaisProxyCustomizer) /** * Denne bønnnen initialiseres hvis proxy-url ikke finnes. Hvis proxy-url finnnes vil bønnen over initialiseres og @@ -22,7 +20,5 @@ class RestTemplateBuilderBean { */ @Bean @ConditionalOnProperty("no.nav.security.jwt.issuer.azuread.proxyurl", matchIfMissing = true, havingValue = "Umulig verdi") - fun restTemplateBuilderNoProxy(): RestTemplateBuilder { - return RestTemplateBuilder() - } + fun restTemplateBuilderNoProxy(): RestTemplateBuilder = RestTemplateBuilder() } diff --git a/http-client/src/main/java/no/nav/familie/http/config/RestTemplateSts.kt b/http-client/src/main/java/no/nav/familie/http/config/RestTemplateSts.kt index 5c89dc1a..7e639053 100644 --- a/http-client/src/main/java/no/nav/familie/http/config/RestTemplateSts.kt +++ b/http-client/src/main/java/no/nav/familie/http/config/RestTemplateSts.kt @@ -18,11 +18,11 @@ class RestTemplateSts { restTemplateBuilder: RestTemplateBuilder, stsBearerTokenClientInterceptor: StsBearerTokenClientInterceptor, consumerIdClientInterceptor: ConsumerIdClientInterceptor, - ): RestOperations { - return restTemplateBuilder.additionalInterceptors( - consumerIdClientInterceptor, - stsBearerTokenClientInterceptor, - MdcValuesPropagatingClientInterceptor(), - ).build() - } + ): RestOperations = + restTemplateBuilder + .additionalInterceptors( + consumerIdClientInterceptor, + stsBearerTokenClientInterceptor, + MdcValuesPropagatingClientInterceptor(), + ).build() } diff --git a/http-client/src/main/java/no/nav/familie/http/health/AbstractHealthIndicator.kt b/http-client/src/main/java/no/nav/familie/http/health/AbstractHealthIndicator.kt index 3b1a389b..6fb636c2 100644 --- a/http-client/src/main/java/no/nav/familie/http/health/AbstractHealthIndicator.kt +++ b/http-client/src/main/java/no/nav/familie/http/health/AbstractHealthIndicator.kt @@ -20,16 +20,16 @@ abstract class AbstractHealthIndicator( private val log: Logger = LoggerFactory.getLogger(this::class.java) private val failureCounter: Counter = Metrics.counter(metricsNavn, "status", "nede") - override fun health(): Health { - return try { + override fun health(): Health = + try { pingable.ping() Health.up().build() } catch (e: Exception) { failureCounter.increment() log.info("Feil ved helsesjekk ${this::class.simpleName}", e) - Health.status(statusCode) + Health + .status(statusCode) .withDetail("Feilmelding", NestedExceptionUtils.getMostSpecificCause(e).javaClass.name + ": " + e.message) .build() } - } } diff --git a/http-client/src/main/java/no/nav/familie/http/interceptor/ApiKeyInjectingClientInterceptor.kt b/http-client/src/main/java/no/nav/familie/http/interceptor/ApiKeyInjectingClientInterceptor.kt index 6137589a..30ee751a 100644 --- a/http-client/src/main/java/no/nav/familie/http/interceptor/ApiKeyInjectingClientInterceptor.kt +++ b/http-client/src/main/java/no/nav/familie/http/interceptor/ApiKeyInjectingClientInterceptor.kt @@ -9,7 +9,9 @@ import org.springframework.stereotype.Component import java.net.URI @Component -class ApiKeyInjectingClientInterceptor(private val apiKeys: Map>) : ClientHttpRequestInterceptor { +class ApiKeyInjectingClientInterceptor( + private val apiKeys: Map>, +) : ClientHttpRequestInterceptor { private val logger = LoggerFactory.getLogger(ApiKeyInjectingClientInterceptor::class.java) override fun intercept( @@ -31,10 +33,9 @@ class ApiKeyInjectingClientInterceptor(private val apiKeys: Map? { - return apiKeys.entries + private fun apiKeyFor(uri: URI): Pair? = + apiKeys.entries .filter { s -> uri.toString().startsWith(s.key.toString()) } .map { it.value } .firstOrNull() - } } diff --git a/http-client/src/main/java/no/nav/familie/http/interceptor/BearerTokenClientInterceptor.kt b/http-client/src/main/java/no/nav/familie/http/interceptor/BearerTokenClientInterceptor.kt index 3cedd237..7716702a 100644 --- a/http-client/src/main/java/no/nav/familie/http/interceptor/BearerTokenClientInterceptor.kt +++ b/http-client/src/main/java/no/nav/familie/http/interceptor/BearerTokenClientInterceptor.kt @@ -19,8 +19,7 @@ import java.net.URI class BearerTokenClientInterceptor( private val oAuth2AccessTokenService: OAuth2AccessTokenService, private val clientConfigurationProperties: ClientConfigurationProperties, -) : - ClientHttpRequestInterceptor { +) : ClientHttpRequestInterceptor { override fun intercept( request: HttpRequest, body: ByteArray, @@ -41,8 +40,7 @@ class BearerTokenClientInterceptor( class BearerTokenClientCredentialsClientInterceptor( private val oAuth2AccessTokenService: OAuth2AccessTokenService, private val clientConfigurationProperties: ClientConfigurationProperties, -) : - ClientHttpRequestInterceptor { +) : ClientHttpRequestInterceptor { override fun intercept( request: HttpRequest, body: ByteArray, @@ -64,8 +62,7 @@ class BearerTokenClientCredentialsClientInterceptor( class BearerTokenExchangeClientInterceptor( private val oAuth2AccessTokenService: OAuth2AccessTokenService, private val clientConfigurationProperties: ClientConfigurationProperties, -) : - ClientHttpRequestInterceptor { +) : ClientHttpRequestInterceptor { override fun intercept( request: HttpRequest, body: ByteArray, @@ -87,8 +84,7 @@ class BearerTokenExchangeClientInterceptor( class BearerTokenOnBehalfOfClientInterceptor( private val oAuth2AccessTokenService: OAuth2AccessTokenService, private val clientConfigurationProperties: ClientConfigurationProperties, -) : - ClientHttpRequestInterceptor { +) : ClientHttpRequestInterceptor { override fun intercept( request: HttpRequest, body: ByteArray, @@ -111,8 +107,7 @@ class BearerTokenWithSTSFallbackClientInterceptor( private val oAuth2AccessTokenService: OAuth2AccessTokenService, private val clientConfigurationProperties: ClientConfigurationProperties, private val stsRestClient: StsRestClient, -) : - ClientHttpRequestInterceptor { +) : ClientHttpRequestInterceptor { override fun intercept( request: HttpRequest, body: ByteArray, @@ -145,9 +140,10 @@ private fun genererAccessToken( clientConfigurationProperties, grantType, ) - return oAuth2AccessTokenService.getAccessToken( - clientProperties, - ).accessToken ?: throw JwtTokenValidatorException("Kunne ikke hente accesstoken") + return oAuth2AccessTokenService + .getAccessToken( + clientProperties, + ).accessToken ?: throw JwtTokenValidatorException("Kunne ikke hente accesstoken") } /** @@ -186,10 +182,9 @@ private fun clientPropertiesForGrantType( values: List, grantType: GrantType, uri: URI, -): ClientProperties { - return values.firstOrNull { grantType == it.grantType } +): ClientProperties = + values.firstOrNull { grantType == it.grantType } ?: error("could not find oauth2 client config for uri=$uri and grant type=$grantType") -} private fun clientCredentialOrJwtBearer() = if (erSystembruker()) OAuth2GrantType.CLIENT_CREDENTIALS else OAuth2GrantType.JWT_BEARER diff --git a/http-client/src/main/java/no/nav/familie/http/interceptor/ConsumerIdClientInterceptor.kt b/http-client/src/main/java/no/nav/familie/http/interceptor/ConsumerIdClientInterceptor.kt index 9028403f..393f180b 100644 --- a/http-client/src/main/java/no/nav/familie/http/interceptor/ConsumerIdClientInterceptor.kt +++ b/http-client/src/main/java/no/nav/familie/http/interceptor/ConsumerIdClientInterceptor.kt @@ -12,8 +12,7 @@ import org.springframework.stereotype.Component class ConsumerIdClientInterceptor( @Value("\${application.name}") private val appName: String, @Value("\${credential.username:}") private val serviceUser: String, -) : - ClientHttpRequestInterceptor { +) : ClientHttpRequestInterceptor { override fun intercept( request: HttpRequest, body: ByteArray, diff --git a/http-client/src/main/java/no/nav/familie/http/interceptor/InternLoggerInterceptor.kt b/http-client/src/main/java/no/nav/familie/http/interceptor/InternLoggerInterceptor.kt index a4893543..1ec2d429 100644 --- a/http-client/src/main/java/no/nav/familie/http/interceptor/InternLoggerInterceptor.kt +++ b/http-client/src/main/java/no/nav/familie/http/interceptor/InternLoggerInterceptor.kt @@ -13,7 +13,9 @@ import org.springframework.web.servlet.ModelAndView @Component @Import(OIDCUtil::class) -class InternLoggerInterceptor(private val oidcUtil: OIDCUtil) : HandlerInterceptor { +class InternLoggerInterceptor( + private val oidcUtil: OIDCUtil, +) : HandlerInterceptor { override fun preHandle( request: HttpServletRequest, response: HttpServletResponse, diff --git a/http-client/src/main/java/no/nav/familie/http/interceptor/StsBearerTokenClientInterceptor.kt b/http-client/src/main/java/no/nav/familie/http/interceptor/StsBearerTokenClientInterceptor.kt index ea8936cd..f5fcc907 100644 --- a/http-client/src/main/java/no/nav/familie/http/interceptor/StsBearerTokenClientInterceptor.kt +++ b/http-client/src/main/java/no/nav/familie/http/interceptor/StsBearerTokenClientInterceptor.kt @@ -8,7 +8,9 @@ import org.springframework.http.client.ClientHttpResponse import org.springframework.stereotype.Component @Component -class StsBearerTokenClientInterceptor(private val stsRestClient: StsRestClient) : ClientHttpRequestInterceptor { +class StsBearerTokenClientInterceptor( + private val stsRestClient: StsRestClient, +) : ClientHttpRequestInterceptor { override fun intercept( request: HttpRequest, body: ByteArray, diff --git a/http-client/src/main/java/no/nav/familie/http/sts/StsAccessTokenFeilException.kt b/http-client/src/main/java/no/nav/familie/http/sts/StsAccessTokenFeilException.kt index 017e8491..172ac255 100644 --- a/http-client/src/main/java/no/nav/familie/http/sts/StsAccessTokenFeilException.kt +++ b/http-client/src/main/java/no/nav/familie/http/sts/StsAccessTokenFeilException.kt @@ -1,3 +1,6 @@ package no.nav.familie.http.sts -class StsAccessTokenFeilException(message: String, cause: Throwable? = null) : RuntimeException(message, cause) +class StsAccessTokenFeilException( + message: String, + cause: Throwable? = null, +) : RuntimeException(message, cause) diff --git a/http-client/src/main/java/no/nav/familie/http/sts/StsRestClient.kt b/http-client/src/main/java/no/nav/familie/http/sts/StsRestClient.kt index 6d47acd2..70d11b6e 100644 --- a/http-client/src/main/java/no/nav/familie/http/sts/StsRestClient.kt +++ b/http-client/src/main/java/no/nav/familie/http/sts/StsRestClient.kt @@ -57,11 +57,13 @@ class StsRestClient( } log.debug("Henter token fra STS") val request = - HttpRequestUtil.createRequest(basicAuth(stsUsername, stsPassword)) + HttpRequestUtil + .createRequest(basicAuth(stsUsername, stsPassword)) .uri(stsUrl) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.noBody()) - .timeout(Duration.ofSeconds(30)).apply { + .timeout(Duration.ofSeconds(30)) + .apply { if (!stsApiKey.isNullOrEmpty()) { header("x-nav-apiKey", stsApiKey) } @@ -71,12 +73,12 @@ class StsRestClient( try { val startTime = System.nanoTime() val response = - client.sendAsync(request, HttpResponse.BodyHandlers.ofString()) + client + .sendAsync(request, HttpResponse.BodyHandlers.ofString()) .thenApply { obj: HttpResponse -> obj.body() } .thenApply { it: String? -> håndterRespons(it) - } - .get() + }.get() responstid.record(System.nanoTime() - startTime, TimeUnit.NANOSECONDS) response } catch (e: InterruptedException) { @@ -87,7 +89,8 @@ class StsRestClient( if (accessTokenResponse != null) { cachedToken = accessTokenResponse refreshCachedTokenTidspunkt = - LocalDateTime.now() + LocalDateTime + .now() .plusSeconds(accessTokenResponse.expires_in) .minusSeconds(accessTokenResponse.expires_in / 4) // Trekker av 1/4. Refresher etter 3/4 av levetiden return accessTokenResponse.access_token @@ -95,13 +98,12 @@ class StsRestClient( throw StsAccessTokenFeilException("Manglende token") } - private fun håndterRespons(it: String?): AccessTokenResponse { - return try { + private fun håndterRespons(it: String?): AccessTokenResponse = + try { mapper.readValue(it, AccessTokenResponse::class.java) } catch (e: IOException) { throw StsAccessTokenFeilException("Parsing av respons feilet", e) } - } companion object { private val log = LoggerFactory.getLogger(StsRestClient::class.java) @@ -109,8 +111,6 @@ class StsRestClient( private fun basicAuth( username: String, password: String, - ): String { - return "Basic " + Base64.getEncoder().encodeToString("$username:$password".toByteArray()) - } + ): String = "Basic " + Base64.getEncoder().encodeToString("$username:$password".toByteArray()) } } diff --git a/http-client/src/test/java/no/nav/familie/http/client/AbstractRestClientTest.kt b/http-client/src/test/java/no/nav/familie/http/client/AbstractRestClientTest.kt index a5230aff..ce150108 100644 --- a/http-client/src/test/java/no/nav/familie/http/client/AbstractRestClientTest.kt +++ b/http-client/src/test/java/no/nav/familie/http/client/AbstractRestClientTest.kt @@ -18,7 +18,9 @@ import org.springframework.web.client.RestTemplate import java.net.URI internal class AbstractRestClientTest { - class TestClient(val uri: URI) : AbstractRestClient(RestTemplate(), "") { + class TestClient( + val uri: URI, + ) : AbstractRestClient(RestTemplate(), "") { fun test() { getForEntity>(uri) } @@ -57,7 +59,8 @@ internal class AbstractRestClientTest { val ressurs = Ressurs.failure("Feilet") val body = objectMapper.writeValueAsString(ressurs) wireMockServer.stubFor( - WireMock.get(WireMock.anyUrl()) + WireMock + .get(WireMock.anyUrl()) .willReturn(WireMock.aResponse().withStatus(500).withBody(body)), ) val catchThrowable = catchThrowable { client.test() } @@ -72,7 +75,8 @@ internal class AbstractRestClientTest { internal fun `feil med body som inneholder feltet status men ikke er en ressurs`() { val body = objectMapper.writeValueAsString(mapOf("status" to "nei")) wireMockServer.stubFor( - WireMock.get(WireMock.anyUrl()) + WireMock + .get(WireMock.anyUrl()) .willReturn(WireMock.aResponse().withStatus(500).withBody(body)), ) val catchThrowable = catchThrowable { client.test() } @@ -83,7 +87,8 @@ internal class AbstractRestClientTest { @Test internal fun `feil uten ressurs kaster videre spring exception`() { wireMockServer.stubFor( - WireMock.get(WireMock.anyUrl()) + WireMock + .get(WireMock.anyUrl()) .willReturn(WireMock.aResponse().withStatus(500)), ) val catchThrowable = catchThrowable { client.test() } diff --git a/http-client/src/test/java/no/nav/familie/http/client/RetryOAuth2HttpClientTest.kt b/http-client/src/test/java/no/nav/familie/http/client/RetryOAuth2HttpClientTest.kt index 5286717f..42afa53f 100644 --- a/http-client/src/test/java/no/nav/familie/http/client/RetryOAuth2HttpClientTest.kt +++ b/http-client/src/test/java/no/nav/familie/http/client/RetryOAuth2HttpClientTest.kt @@ -27,7 +27,8 @@ internal class RetryOAuth2HttpClientTest { val requestFactory = ClientHttpRequestFactories.get(clientHttpRequestFactorySettings) val restClient = - RestClient.builder() + RestClient + .builder() .requestFactory(requestFactory) .build() val client = RetryOAuth2HttpClient(restClient) @@ -81,15 +82,17 @@ internal class RetryOAuth2HttpClientTest { private fun stub(responseDefinitionBuilder: ResponseDefinitionBuilder?) { wireMockServer.stubFor( - WireMock.post(WireMock.anyUrl()) + WireMock + .post(WireMock.anyUrl()) .willReturn(responseDefinitionBuilder), ) } - private fun post(): Exception? { - return try { + private fun post(): Exception? = + try { client.post( - OAuth2HttpRequest.builder(URI.create(wireMockServer.baseUrl())) + OAuth2HttpRequest + .builder(URI.create(wireMockServer.baseUrl())) .oAuth2HttpHeaders(OAuth2HttpHeaders.builder().build()) .build(), ) @@ -97,7 +100,6 @@ internal class RetryOAuth2HttpClientTest { } catch (e: Exception) { e } - } companion object { private lateinit var wireMockServer: WireMockServer diff --git a/http-client/src/test/java/no/nav/familie/http/config/RestTemplateBuilderBeanTest.kt b/http-client/src/test/java/no/nav/familie/http/config/RestTemplateBuilderBeanTest.kt index bb46a8b8..9305b7e9 100644 --- a/http-client/src/test/java/no/nav/familie/http/config/RestTemplateBuilderBeanTest.kt +++ b/http-client/src/test/java/no/nav/familie/http/config/RestTemplateBuilderBeanTest.kt @@ -49,7 +49,8 @@ internal class RestTemplateBuilderBeanTest { @Test internal fun `delay med 500 kaster exception`() { wireMockServer.stubFor( - WireMock.get(WireMock.anyUrl()) + WireMock + .get(WireMock.anyUrl()) .willReturn(WireMock.aResponse().withStatus(200).withFixedDelay(500)), ) assertThat(catchThrowable { restTemplate.getForEntity("http://localhost:${wireMockServer.port()}") }) @@ -59,7 +60,8 @@ internal class RestTemplateBuilderBeanTest { @Test internal fun `delay med 50 kaster ikke exception`() { wireMockServer.stubFor( - WireMock.get(WireMock.anyUrl()) + WireMock + .get(WireMock.anyUrl()) .willReturn(WireMock.aResponse().withFixedDelay(50)), ) restTemplate.getForEntity("http://localhost:${wireMockServer.port()}") diff --git a/http-client/src/test/java/no/nav/familie/http/interceptor/BearerTokenOnBehalfOfClientInterceptorTest.kt b/http-client/src/test/java/no/nav/familie/http/interceptor/BearerTokenOnBehalfOfClientInterceptorTest.kt index 16932b3a..b8c6c9d5 100644 --- a/http-client/src/test/java/no/nav/familie/http/interceptor/BearerTokenOnBehalfOfClientInterceptorTest.kt +++ b/http-client/src/test/java/no/nav/familie/http/interceptor/BearerTokenOnBehalfOfClientInterceptorTest.kt @@ -41,7 +41,8 @@ internal class BearerTokenOnBehalfOfClientInterceptorTest { val req = mockk(relaxed = true, relaxUnitFun = true) every { req.uri } returns (URI("http://clientResource.no")) val execution = mockk(relaxed = true) - Assertions.assertThat(Assertions.catchThrowable { bearerTokenClientInterceptor.intercept(req, ByteArray(0), execution) }) + Assertions + .assertThat(Assertions.catchThrowable { bearerTokenClientInterceptor.intercept(req, ByteArray(0), execution) }) .hasMessage( "could not find oauth2 client config for " + "uri=http://clientResource.no and grant type=urn:ietf:params:oauth:grant-type:jwt-bearer", diff --git a/kafka/src/main/kotlin/no/nav/familie/kafka/KafkaErrorHandler.kt b/kafka/src/main/kotlin/no/nav/familie/kafka/KafkaErrorHandler.kt index 4897a8f9..ddf759fc 100644 --- a/kafka/src/main/kotlin/no/nav/familie/kafka/KafkaErrorHandler.kt +++ b/kafka/src/main/kotlin/no/nav/familie/kafka/KafkaErrorHandler.kt @@ -14,7 +14,9 @@ import java.util.concurrent.atomic.AtomicInteger import java.util.concurrent.atomic.AtomicLong @Component -class KafkaErrorHandler(private val taskScheduler: TaskScheduler) : CommonContainerStoppingErrorHandler() { +class KafkaErrorHandler( + private val taskScheduler: TaskScheduler, +) : CommonContainerStoppingErrorHandler() { private val logger: Logger = LoggerFactory.getLogger(javaClass) private val secureLogger: Logger = LoggerFactory.getLogger("secureLogger") diff --git a/leader/src/main/kotlin/no/nav/familie/leader/LeaderClient.kt b/leader/src/main/kotlin/no/nav/familie/leader/LeaderClient.kt index e9010d2b..c9132edd 100644 --- a/leader/src/main/kotlin/no/nav/familie/leader/LeaderClient.kt +++ b/leader/src/main/kotlin/no/nav/familie/leader/LeaderClient.kt @@ -17,7 +17,8 @@ object LeaderClient { val client = HttpClient.newHttpClient() val request = - HttpRequest.newBuilder() + HttpRequest + .newBuilder() .uri(URI.create("http://$electorPath")) .GET() .build() diff --git a/log/src/main/java/no/nav/familie/log/NavHttpHeaders.kt b/log/src/main/java/no/nav/familie/log/NavHttpHeaders.kt index b3f492d0..2a1a6546 100644 --- a/log/src/main/java/no/nav/familie/log/NavHttpHeaders.kt +++ b/log/src/main/java/no/nav/familie/log/NavHttpHeaders.kt @@ -1,6 +1,8 @@ package no.nav.familie.log -enum class NavHttpHeaders(private val header: String) { +enum class NavHttpHeaders( + private val header: String, +) { NAV_PERSONIDENT("Nav-Personident"), NAV_CALL_ID("Nav-Call-Id"), NGNINX_REQUEST_ID("X-Request-Id"), @@ -8,7 +10,5 @@ enum class NavHttpHeaders(private val header: String) { NAV_USER_ID("Nav-User-Id"), ; - fun asString(): String { - return header - } + fun asString(): String = header } diff --git a/log/src/main/java/no/nav/familie/log/appender/SecureLoggerRestAppender.kt b/log/src/main/java/no/nav/familie/log/appender/SecureLoggerRestAppender.kt index bcf91645..f7fa2f45 100644 --- a/log/src/main/java/no/nav/familie/log/appender/SecureLoggerRestAppender.kt +++ b/log/src/main/java/no/nav/familie/log/appender/SecureLoggerRestAppender.kt @@ -38,7 +38,8 @@ class SecureLoggerRestAppender : AppenderBase RANDOM_USER_ID_COOKIE_NAME == it.name }?.value - } + private fun resolveUserId(httpServletRequest: HttpServletRequest): String? = + httpServletRequest.cookies?.firstOrNull { it -> RANDOM_USER_ID_COOKIE_NAME == it.name }?.value } } diff --git a/log/src/main/java/no/nav/familie/log/filter/RequestTimeFilter.kt b/log/src/main/java/no/nav/familie/log/filter/RequestTimeFilter.kt index d2b5632b..c688d429 100644 --- a/log/src/main/java/no/nav/familie/log/filter/RequestTimeFilter.kt +++ b/log/src/main/java/no/nav/familie/log/filter/RequestTimeFilter.kt @@ -45,9 +45,7 @@ open class RequestTimeFilter : Filter { } } - open fun shouldNotFilter(uri: String): Boolean { - return uri.contains("/internal") || uri == "/api/ping" - } + open fun shouldNotFilter(uri: String): Boolean = uri.contains("/internal") || uri == "/api/ping" companion object { private val LOG = LoggerFactory.getLogger(RequestTimeFilter::class.java) diff --git a/log/src/test/java/no/nav/familie/log/filter/LogFilterTest.kt b/log/src/test/java/no/nav/familie/log/filter/LogFilterTest.kt index 14c34a35..f3c891d9 100644 --- a/log/src/test/java/no/nav/familie/log/filter/LogFilterTest.kt +++ b/log/src/test/java/no/nav/familie/log/filter/LogFilterTest.kt @@ -53,9 +53,7 @@ class LogFilterTest { } companion object { - private fun fail() { - throw IllegalStateException("") - } + private fun fail(): Unit = throw IllegalStateException("") private val mockHttpServletRequest: HttpServletRequest get() { diff --git a/metrikker/src/test/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukTest.kt b/metrikker/src/test/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukTest.kt index 891a5df4..c2badb44 100644 --- a/metrikker/src/test/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukTest.kt +++ b/metrikker/src/test/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukTest.kt @@ -35,7 +35,10 @@ class TellAPIEndepunkterIBrukTest { assertThat(TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter).hasSize(1) assertThat(TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter.containsKey("[GET]/api/foo")).isTrue() assertThat( - TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter.get("[GET]/api/foo")?.id?.name, + TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter + .get("[GET]/api/foo") + ?.id + ?.name, ).isEqualTo("test.GET.api.foo") } @@ -52,7 +55,10 @@ class TellAPIEndepunkterIBrukTest { assertThat(TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter).hasSize(1) assertThat(TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter.containsKey("[POST]/api/foo/{fooId}")).isTrue() assertThat( - TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter.get("[POST]/api/foo/{fooId}")?.id?.name, + TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter + .get("[POST]/api/foo/{fooId}") + ?.id + ?.name, ).isEqualTo("test.POST.api.foo.fooId") } diff --git a/modell/src/main/kotlin/no/nav/familie/foedselsnummer/FoedselsNr.kt b/modell/src/main/kotlin/no/nav/familie/foedselsnummer/FoedselsNr.kt index d6288cfa..95d6103d 100644 --- a/modell/src/main/kotlin/no/nav/familie/foedselsnummer/FoedselsNr.kt +++ b/modell/src/main/kotlin/no/nav/familie/foedselsnummer/FoedselsNr.kt @@ -5,7 +5,9 @@ import no.nav.familie.foedselsnummer.FoedselsNr.Companion.Tabeller.kontrollsiffe import java.time.LocalDate @Deprecated("Bruk eksisterende Fødselsnummer fra kontrakter.", ReplaceWith("no.nav.familie.kontrakter.felles.Fødselsnummer")) -data class FoedselsNr(val asString: String) { +data class FoedselsNr( + val asString: String, +) { init { require("""\d{11}""".toRegex().matches(asString)) { "Ikke et gyldig fødselsnummer: $asString" } require(!fhNummer) { "Impelemntasjonen støtter ikke FH-nummer" } diff --git a/pom.xml b/pom.xml index 710fd909..e7bf479e 100644 --- a/pom.xml +++ b/pom.xml @@ -22,12 +22,12 @@ 21 UTF-8 - 3.0_20240906070327_03089ba + 3.0_20241102131210_d65efd1 5.9.1 - 2.0.20 - 1.13.12 + 2.0.21 + 1.13.13 5.0.5 - 3.9.1 + 3.9.2 @@ -49,7 +49,7 @@ org.springframework.boot spring-boot-dependencies - 3.3.3 + 3.3.5 pom import @@ -87,7 +87,7 @@ com.nimbusds oauth2-oidc-sdk - 11.19.1 + 11.20.1 @@ -233,7 +233,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.0 + 3.5.2 org.apache.maven.plugins @@ -318,7 +318,7 @@ com.pinterest.ktlint ktlint-cli - 1.3.1 + 1.4.1 diff --git a/sikkerhet/src/main/java/no/nav/familie/sikkerhet/AuthorizationFilter.kt b/sikkerhet/src/main/java/no/nav/familie/sikkerhet/AuthorizationFilter.kt index bfbf5a1c..d2a134b7 100644 --- a/sikkerhet/src/main/java/no/nav/familie/sikkerhet/AuthorizationFilter.kt +++ b/sikkerhet/src/main/java/no/nav/familie/sikkerhet/AuthorizationFilter.kt @@ -23,8 +23,10 @@ class AuthorizationFilter( override fun shouldNotFilter(request: HttpServletRequest): Boolean { val path = request.requestURI.substring(request.contextPath.length) - return path.startsWith("/api/selvbetjening") || path.startsWith("/internal/") || - path.startsWith("/swagger-ui/") || path.startsWith("/swagger-resources") || + return path.startsWith("/api/selvbetjening") || + path.startsWith("/internal/") || + path.startsWith("/swagger-ui/") || + path.startsWith("/swagger-resources") || path.startsWith("/v2/api-docs") } diff --git a/sikkerhet/src/main/java/no/nav/familie/sikkerhet/EksternBrukerUtils.kt b/sikkerhet/src/main/java/no/nav/familie/sikkerhet/EksternBrukerUtils.kt index 13632bfb..46adf87e 100644 --- a/sikkerhet/src/main/java/no/nav/familie/sikkerhet/EksternBrukerUtils.kt +++ b/sikkerhet/src/main/java/no/nav/familie/sikkerhet/EksternBrukerUtils.kt @@ -28,19 +28,18 @@ object EksternBrukerUtils { fun personIdentErLikInnloggetBruker(personIdent: String): Boolean = personIdent == hentFnrFraToken() - fun getBearerTokenForLoggedInUser(): String { - return getFromContext { validationContext, issuer -> - validationContext.getJwtToken( - issuer, - )?.encodedToken ?: throw JwtTokenValidatorException("Klarte ikke hente token fra issuer $issuer") + fun getBearerTokenForLoggedInUser(): String = + getFromContext { validationContext, issuer -> + validationContext + .getJwtToken( + issuer, + )?.encodedToken ?: throw JwtTokenValidatorException("Klarte ikke hente token fra issuer $issuer") } - } - private fun claims(): JwtTokenClaims { - return getFromContext { validationContext, issuer -> + private fun claims(): JwtTokenClaims = + getFromContext { validationContext, issuer -> validationContext.getClaims(issuer) } - } private fun getFromContext(fn: (TokenValidationContext, String) -> T): T { val validationContext = getTokenValidationContext() @@ -51,8 +50,8 @@ object EksternBrukerUtils { } } - private fun getTokenValidationContext(): TokenValidationContext { - return RequestContextHolder.currentRequestAttributes() + private fun getTokenValidationContext(): TokenValidationContext = + RequestContextHolder + .currentRequestAttributes() .getAttribute(TOKEN_VALIDATION_CONTEXT_ATTRIBUTE, 0) as TokenValidationContext - } } diff --git a/sikkerhet/src/main/java/no/nav/familie/sikkerhet/OIDCUtil.kt b/sikkerhet/src/main/java/no/nav/familie/sikkerhet/OIDCUtil.kt index 80b11fa4..b98db3c0 100644 --- a/sikkerhet/src/main/java/no/nav/familie/sikkerhet/OIDCUtil.kt +++ b/sikkerhet/src/main/java/no/nav/familie/sikkerhet/OIDCUtil.kt @@ -10,32 +10,27 @@ import org.springframework.stereotype.Component import java.util.Date @Component -class OIDCUtil(private val ctxHolder: TokenValidationContextHolder) { +class OIDCUtil( + private val ctxHolder: TokenValidationContextHolder, +) { @Autowired private lateinit var environment: Environment val subject: String? get() = claimSet().subject - fun autentisertBruker(): String { - return subject ?: jwtError("Fant ikke subject") - } + fun autentisertBruker(): String = subject ?: jwtError("Fant ikke subject") - fun jwtError(message: String): Nothing { - throw JwtTokenValidatorException(message) - } + fun jwtError(message: String): Nothing = throw JwtTokenValidatorException(message) - fun getClaim(claim: String): String { - return if (erDevProfil()) { + fun getClaim(claim: String): String = + if (erDevProfil()) { claimSet().get(claim)?.toString() ?: "DEV_$claim" } else { claimSet().get(claim)?.toString() ?: jwtError("Fant ikke claim '$claim' i tokenet") } - } - fun getClaimAsList(claim: String): List? { - return if (erDevProfil()) listOf("group1") else claimSet().getAsList(claim) - } + fun getClaimAsList(claim: String): List? = if (erDevProfil()) listOf("group1") else claimSet().getAsList(claim) val navIdent: String get() = @@ -51,20 +46,15 @@ class OIDCUtil(private val ctxHolder: TokenValidationContextHolder) { ?.filterNotNull() ?.map { it.toString() } - fun claimSet(): JwtTokenClaims { - return context().getClaims("azuread") - } + fun claimSet(): JwtTokenClaims = context().getClaims("azuread") - private fun context(): TokenValidationContext { - return ctxHolder.getTokenValidationContext() - } + private fun context(): TokenValidationContext = ctxHolder.getTokenValidationContext() val expiryDate: Date? get() = claimSet()?.expirationTime - private fun erDevProfil(): Boolean { - return environment.activeProfiles.any { + private fun erDevProfil(): Boolean = + environment.activeProfiles.any { listOf("dev", "mock-auth").contains(it.trim(' ')) } - } } diff --git a/unleash/src/main/kotlin/no/nav/familie/unleash/DefaultUnleashService.kt b/unleash/src/main/kotlin/no/nav/familie/unleash/DefaultUnleashService.kt index a6960a4b..49bbcbab 100644 --- a/unleash/src/main/kotlin/no/nav/familie/unleash/DefaultUnleashService.kt +++ b/unleash/src/main/kotlin/no/nav/familie/unleash/DefaultUnleashService.kt @@ -18,29 +18,29 @@ class DefaultUnleashService( defaultUnleash = DefaultUnleash( - UnleashConfig.builder() + UnleashConfig + .builder() .appName(appName) .unleashAPI("$apiUrl/api") .apiKey(apiToken) - .unleashContextProvider(lagUnleashContextProvider()).build(), + .unleashContextProvider(lagUnleashContextProvider()) + .build(), *strategies.toTypedArray(), ) } - private fun lagUnleashContextProvider(): UnleashContextProvider { - return UnleashContextProvider { - UnleashContext.builder() + private fun lagUnleashContextProvider(): UnleashContextProvider = + UnleashContextProvider { + UnleashContext + .builder() .appName(appName) .build() } - } override fun isEnabled( toggleId: String, defaultValue: Boolean, - ): Boolean { - return defaultUnleash.isEnabled(toggleId, defaultValue) - } + ): Boolean = defaultUnleash.isEnabled(toggleId, defaultValue) override fun isEnabled( toggleId: String, diff --git a/unleash/src/main/kotlin/no/nav/familie/unleash/UnleashConfig.kt b/unleash/src/main/kotlin/no/nav/familie/unleash/UnleashConfig.kt index c0533133..ef0822db 100644 --- a/unleash/src/main/kotlin/no/nav/familie/unleash/UnleashConfig.kt +++ b/unleash/src/main/kotlin/no/nav/familie/unleash/UnleashConfig.kt @@ -30,27 +30,22 @@ open class UnleashConfig( lagDummyUnleashService() } - private fun lagDummyUnleashService(): UnleashService { - return object : UnleashService { + private fun lagDummyUnleashService(): UnleashService = + object : UnleashService { override fun isEnabled( toggleId: String, properties: Map, - ): Boolean { - return isEnabled(toggleId, false) - } + ): Boolean = isEnabled(toggleId, false) override fun isEnabled( toggleId: String, defaultValue: Boolean, - ): Boolean { - return System.getenv(toggleId).run { toBoolean() } || defaultValue - } + ): Boolean = System.getenv(toggleId).run { toBoolean() } || defaultValue override fun destroy() { // Dummy featureToggleService trenger ikke destroy, då den ikke har en unleash å lukke } } - } companion object { private val logger = LoggerFactory.getLogger(UnleashConfig::class.java) @@ -63,9 +58,7 @@ class UnleashProperties( ) interface UnleashService : DisposableBean { - fun isEnabled(toggleId: String): Boolean { - return isEnabled(toggleId, false) - } + fun isEnabled(toggleId: String): Boolean = isEnabled(toggleId, false) fun isEnabled( toggleId: String, diff --git a/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/ValutakursRestClient.kt b/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/ValutakursRestClient.kt index d5bdca58..e24f176d 100644 --- a/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/ValutakursRestClient.kt +++ b/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/ValutakursRestClient.kt @@ -66,9 +66,8 @@ class ValutakursRestClient( } } - private fun toCurrencyParams(currencies: List): String { - return currencies.reduceIndexed { index, params, currency -> if (index != 0) "$params+$currency" else currency } - } + private fun toCurrencyParams(currencies: List): String = + currencies.reduceIndexed { index, params, currency -> if (index != 0) "$params+$currency" else currency } } enum class Frequency { diff --git a/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/domene/ECBExchangeRatesData.kt b/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/domene/ECBExchangeRatesData.kt index 8afe38d3..94531593 100644 --- a/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/domene/ECBExchangeRatesData.kt +++ b/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/domene/ECBExchangeRatesData.kt @@ -13,14 +13,13 @@ data class ECBExchangeRatesData( val ecbExchangeRatesDataSet: ECBExchangeRatesDataSet, ) -fun ECBExchangeRatesData.exchangeRatesForCurrency(currency: String): List { - return this.ecbExchangeRatesDataSet.ecbExchangeRatesForCurrencies.filter { - it.ecbExchangeRateKeys.any { - ecbKeyValue -> - ecbKeyValue.id == "CURRENCY" && ecbKeyValue.value == currency - } - }.flatMap { it.ecbExchangeRates } -} +fun ECBExchangeRatesData.exchangeRatesForCurrency(currency: String): List = + this.ecbExchangeRatesDataSet.ecbExchangeRatesForCurrencies + .filter { + it.ecbExchangeRateKeys.any { ecbKeyValue -> + ecbKeyValue.id == "CURRENCY" && ecbKeyValue.value == currency + } + }.flatMap { it.ecbExchangeRates } @Throws(ValutakursTransformationException::class) fun ECBExchangeRatesData.toExchangeRates(): List { @@ -35,7 +34,8 @@ fun ECBExchangeRatesData.toExchangeRates(): List { if (frequency == "D") { LocalDate.parse(ecbExchangeRate.date.value) } else { - YearMonth.parse(ecbExchangeRate.date.value) + YearMonth + .parse(ecbExchangeRate.date.value) .atEndOfMonth() } ExchangeRate(currency, ecbExchangeRate.ecbExchangeRateValue.value, date) diff --git a/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/domene/ExchangeRate.kt b/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/domene/ExchangeRate.kt index d64c6daa..61ef6b2c 100644 --- a/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/domene/ExchangeRate.kt +++ b/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/domene/ExchangeRate.kt @@ -3,8 +3,10 @@ package no.nav.familie.valutakurs.domene import java.math.BigDecimal import java.time.LocalDate -data class ExchangeRate(val currency: String, val exchangeRate: BigDecimal, val date: LocalDate) +data class ExchangeRate( + val currency: String, + val exchangeRate: BigDecimal, + val date: LocalDate, +) -fun List.exchangeRateForCurrency(currency: String): ExchangeRate? { - return this.firstOrNull { it.currency == currency } -} +fun List.exchangeRateForCurrency(currency: String): ExchangeRate? = this.firstOrNull { it.currency == currency } diff --git a/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/exception/ValutakursClientException.kt b/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/exception/ValutakursClientException.kt index 6544e9c5..74ca48e0 100644 --- a/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/exception/ValutakursClientException.kt +++ b/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/exception/ValutakursClientException.kt @@ -1,7 +1,16 @@ package no.nav.familie.valutakurs.exception -sealed class ValutakursClientException(override val message: String, override val cause: Throwable?) : RuntimeException(message, cause) +sealed class ValutakursClientException( + override val message: String, + override val cause: Throwable?, +) : RuntimeException(message, cause) -class ValutakursException(override val message: String, override val cause: Throwable?) : ValutakursClientException(message, cause) +class ValutakursException( + override val message: String, + override val cause: Throwable?, +) : ValutakursClientException(message, cause) -class IngenValutakursException(override val message: String, override val cause: Throwable?) : ValutakursClientException(message, cause) +class IngenValutakursException( + override val message: String, + override val cause: Throwable?, +) : ValutakursClientException(message, cause) diff --git a/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/exception/ValutakursTransformationException.kt b/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/exception/ValutakursTransformationException.kt index a2e9a121..db719537 100644 --- a/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/exception/ValutakursTransformationException.kt +++ b/valutakurs-klient/src/main/java/no/nav/familie/valutakurs/exception/ValutakursTransformationException.kt @@ -1,3 +1,6 @@ package no.nav.familie.valutakurs.exception -class ValutakursTransformationException(override val message: String, override val cause: Throwable?) : RuntimeException(message, cause) +class ValutakursTransformationException( + override val message: String, + override val cause: Throwable?, +) : RuntimeException(message, cause) diff --git a/valutakurs-klient/src/test/java/no/nav/familie/valutakurs/ValutakursRestClientTest.kt b/valutakurs-klient/src/test/java/no/nav/familie/valutakurs/ValutakursRestClientTest.kt index 86a2f0ba..1c79b066 100644 --- a/valutakurs-klient/src/test/java/no/nav/familie/valutakurs/ValutakursRestClientTest.kt +++ b/valutakurs-klient/src/test/java/no/nav/familie/valutakurs/ValutakursRestClientTest.kt @@ -71,8 +71,15 @@ class ValutakursRestClientTest { valutakursDato.toString(), ) wireMockServer.stubFor( - WireMock.get("/D.SEK+NOK.EUR.SP00.A/?startPeriod=$valutakursDato&endPeriod=$valutakursDato") - .willReturn(WireMock.aResponse().withHeader("Content-Type", contentType).withStatus(200).withBody(body)), + WireMock + .get("/D.SEK+NOK.EUR.SP00.A/?startPeriod=$valutakursDato&endPeriod=$valutakursDato") + .willReturn( + WireMock + .aResponse() + .withHeader("Content-Type", contentType) + .withStatus(200) + .withBody(body), + ), ) val valutakurser = valutakursRestClient.hentValutakurs(Frequency.Daily, listOf("SEK", "NOK"), valutakursDato) assertNotNull(valutakurser) @@ -90,8 +97,15 @@ class ValutakursRestClientTest { val valutakursDato = LocalDate.of(2022, 7, 22) val body = createECBResponseBody(Frequency.Daily, listOf(Pair("NOK", BigDecimal.valueOf(10.337))), valutakursDato.toString()) wireMockServer.stubFor( - WireMock.get("/D.NOK+EUR.EUR.SP00.A/?startPeriod=$valutakursDato&endPeriod=$valutakursDato") - .willReturn(WireMock.aResponse().withHeader("Content-Type", contentType).withStatus(200).withBody(body)), + WireMock + .get("/D.NOK+EUR.EUR.SP00.A/?startPeriod=$valutakursDato&endPeriod=$valutakursDato") + .willReturn( + WireMock + .aResponse() + .withHeader("Content-Type", contentType) + .withStatus(200) + .withBody(body), + ), ) val valutakurser = valutakursRestClient.hentValutakurs(Frequency.Daily, listOf("NOK", "EUR"), valutakursDato) assertNotNull(valutakurser) @@ -109,8 +123,15 @@ class ValutakursRestClientTest { val body = createECBResponseBody(Frequency.Monthly, listOf(Pair("NOK", BigDecimal.valueOf(10.337))), YearMonth.of(2022, 6).toString()) wireMockServer.stubFor( - WireMock.get("/M.NOK.EUR.SP00.A/?endPeriod=$valutakursDato&lastNObservations=1") - .willReturn(WireMock.aResponse().withHeader("Content-Type", contentType).withStatus(200).withBody(body)), + WireMock + .get("/M.NOK.EUR.SP00.A/?endPeriod=$valutakursDato&lastNObservations=1") + .willReturn( + WireMock + .aResponse() + .withHeader("Content-Type", contentType) + .withStatus(200) + .withBody(body), + ), ) val valutakurser = valutakursRestClient.hentValutakurs(Frequency.Monthly, listOf("NOK"), valutakursDato) val nokValutakurs = valutakurser.exchangeRateForCurrency("NOK") @@ -123,8 +144,15 @@ class ValutakursRestClientTest { val body = createECBResponseBody(Frequency.Monthly, listOf(Pair("NOK", BigDecimal.valueOf(10.337))), YearMonth.of(2022, 7).toString()) wireMockServer.stubFor( - WireMock.get("/M.NOK.EUR.SP00.A/?endPeriod=$valutakursDato&lastNObservations=1") - .willReturn(WireMock.aResponse().withHeader("Content-Type", contentType).withStatus(200).withBody(body)), + WireMock + .get("/M.NOK.EUR.SP00.A/?endPeriod=$valutakursDato&lastNObservations=1") + .willReturn( + WireMock + .aResponse() + .withHeader("Content-Type", contentType) + .withStatus(200) + .withBody(body), + ), ) val valutakurser = valutakursRestClient.hentValutakurs(Frequency.Monthly, listOf("NOK"), valutakursDato) val nokValutakurs = valutakurser.exchangeRateForCurrency("NOK") @@ -136,8 +164,15 @@ class ValutakursRestClientTest { val valutakursDato = LocalDate.of(2022, 7, 31) val body = "" wireMockServer.stubFor( - WireMock.get("/D.NOK+SEK.EUR.SP00.A/?startPeriod=$valutakursDato&endPeriod=$valutakursDato") - .willReturn(WireMock.aResponse().withHeader("Content-Type", contentType).withStatus(200).withBody(body)), + WireMock + .get("/D.NOK+SEK.EUR.SP00.A/?startPeriod=$valutakursDato&endPeriod=$valutakursDato") + .willReturn( + WireMock + .aResponse() + .withHeader("Content-Type", contentType) + .withStatus(200) + .withBody(body), + ), ) val valutakursClientException = assertThrows { @@ -155,8 +190,15 @@ class ValutakursRestClientTest { val valutakursDato = LocalDate.of(2022, 7, 31) val body = "" wireMockServer.stubFor( - WireMock.get("/D.NOK+SEK.EUR.SP00.A/?startPeriod=$valutakursDato&endPeriod=$valutakursDato") - .willReturn(WireMock.aResponse().withHeader("Content-Type", contentType).withStatus(400).withBody(body)), + WireMock + .get("/D.NOK+SEK.EUR.SP00.A/?startPeriod=$valutakursDato&endPeriod=$valutakursDato") + .willReturn( + WireMock + .aResponse() + .withHeader("Content-Type", contentType) + .withStatus(400) + .withBody(body), + ), ) val valutakursClientException = assertThrows { @@ -175,8 +217,15 @@ class ValutakursRestClientTest { val valutakursDato = LocalDate.of(2022, 7, 31) val body = createIncompleteECBResponseBody(listOf(Pair("NOK", BigDecimal.valueOf(10.337))), YearMonth.of(2022, 7).toString()) wireMockServer.stubFor( - WireMock.get("/D.NOK.EUR.SP00.A/?startPeriod=$valutakursDato&endPeriod=$valutakursDato") - .willReturn(WireMock.aResponse().withHeader("Content-Type", contentType).withStatus(200).withBody(body)), + WireMock + .get("/D.NOK.EUR.SP00.A/?startPeriod=$valutakursDato&endPeriod=$valutakursDato") + .willReturn( + WireMock + .aResponse() + .withHeader("Content-Type", contentType) + .withStatus(200) + .withBody(body), + ), ) val valutakursClientException = assertThrows { valutakursRestClient.hentValutakurs(Frequency.Daily, listOf("NOK"), valutakursDato) } @@ -189,8 +238,15 @@ class ValutakursRestClientTest { val valutakursDato = LocalDate.of(2022, 7, 31) val body = createECBResponseBody(Frequency.Daily, listOf(Pair("NOK", BigDecimal.valueOf(10.337))), YearMonth.of(2022, 7).toString()) wireMockServer.stubFor( - WireMock.get("/D.NOK.EUR.SP00.A/?startPeriod=$valutakursDato&endPeriod=$valutakursDato") - .willReturn(WireMock.aResponse().withHeader("Content-Type", contentType).withStatus(200).withBody(body)), + WireMock + .get("/D.NOK.EUR.SP00.A/?startPeriod=$valutakursDato&endPeriod=$valutakursDato") + .willReturn( + WireMock + .aResponse() + .withHeader("Content-Type", contentType) + .withStatus(200) + .withBody(body), + ), ) val valutakursClientException = assertThrows { valutakursRestClient.hentValutakurs(Frequency.Daily, listOf("NOK"), valutakursDato) } @@ -202,8 +258,8 @@ class ValutakursRestClientTest { frequency: Frequency, exchangeRates: List>, exchangeRateDate: String, - ): String { - return xmlMapper.writeValueAsString( + ): String = + xmlMapper.writeValueAsString( ECBExchangeRatesData( ECBExchangeRatesDataSet( exchangeRates.map { @@ -220,13 +276,12 @@ class ValutakursRestClientTest { ), ), ) - } private fun createIncompleteECBResponseBody( exchangeRates: List>, exchangeRateDate: String, - ): String { - return xmlMapper.writeValueAsString( + ): String = + xmlMapper.writeValueAsString( ECBExchangeRatesData( ECBExchangeRatesDataSet( exchangeRates.map { @@ -243,5 +298,4 @@ class ValutakursRestClientTest { ), ), ) - } } diff --git a/web-client/src/main/java/no/nav/familie/webflux/builder/AzureWebClientConfig.kt b/web-client/src/main/java/no/nav/familie/webflux/builder/AzureWebClientConfig.kt index 78796140..ca3c56c3 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/builder/AzureWebClientConfig.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/builder/AzureWebClientConfig.kt @@ -29,27 +29,21 @@ class AzureWebClientConfig( @Qualifier(FAMILIE_WEB_CLIENT_BUILDER) webClientBuilder: WebClient.Builder, bearerTokenFilter: BearerTokenFilter, - ): WebClient { - return buildAzureWebClient(webClientBuilder, bearerTokenFilter) - } + ): WebClient = buildAzureWebClient(webClientBuilder, bearerTokenFilter) @Bean("azureClientCredentialWebClient") fun azureClientCredentialWebClient( @Qualifier(FAMILIE_WEB_CLIENT_BUILDER) webClientBuilder: WebClient.Builder, bearerTokenFilter: BearerTokenClientCredentialFilter, - ): WebClient { - return buildAzureWebClient(webClientBuilder, bearerTokenFilter) - } + ): WebClient = buildAzureWebClient(webClientBuilder, bearerTokenFilter) @Bean("azureOnBehalfOfWebClient") fun azureOnBehalfOfWebClient( @Qualifier(FAMILIE_WEB_CLIENT_BUILDER) webClientBuilder: WebClient.Builder, bearerTokenFilter: BearerTokenOnBehalfOfFilter, - ): WebClient { - return buildAzureWebClient(webClientBuilder, bearerTokenFilter) - } + ): WebClient = buildAzureWebClient(webClientBuilder, bearerTokenFilter) private fun buildAzureWebClient( webClientBuilder: WebClient.Builder, diff --git a/web-client/src/main/java/no/nav/familie/webflux/builder/NaisProxyCustomizer.kt b/web-client/src/main/java/no/nav/familie/webflux/builder/NaisProxyCustomizer.kt index bd13d228..baf78315 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/builder/NaisProxyCustomizer.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/builder/NaisProxyCustomizer.kt @@ -18,9 +18,7 @@ class NaisProxyConfig { fun naisProxyCustomizer( proxyTimeout: ProxyTimeout, jettyResourceFactory: JettyResourceFactory, - ): NaisProxyCustomizer { - return NaisProxyCustomizer(proxyTimeout, jettyResourceFactory) - } + ): NaisProxyCustomizer = NaisProxyCustomizer(proxyTimeout, jettyResourceFactory) } /** @@ -31,7 +29,10 @@ class NaisProxyCustomizer( private val jettyResourceFactory: JettyResourceFactory, ) { fun customize(webClientBuilder: WebClient.Builder) { - class DynamicProxy(host: String, port: Int) : HttpProxy(host, port) { + class DynamicProxy( + host: String, + port: Int, + ) : HttpProxy(host, port) { override fun matches(origin: Origin): Boolean { if (origin.address.host.contains("microsoft")) { return true diff --git a/web-client/src/main/java/no/nav/familie/webflux/builder/RestTemplateBuilderConfig.kt b/web-client/src/main/java/no/nav/familie/webflux/builder/RestTemplateBuilderConfig.kt index 89bebbd8..f600da31 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/builder/RestTemplateBuilderConfig.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/builder/RestTemplateBuilderConfig.kt @@ -28,14 +28,15 @@ import java.time.temporal.ChronoUnit @Suppress("SpringFacetCodeInspection") @Configuration @Import(ProxyTimeout::class) -class RestTemplateBuilderConfig(private val proxyTimeout: ProxyTimeout) { +class RestTemplateBuilderConfig( + private val proxyTimeout: ProxyTimeout, +) { @Bean @ConditionalOnProperty("no.nav.security.jwt.issuer.azuread.proxyurl", matchIfMissing = true) - fun restTemplateBuilderNoProxy(): RestTemplateBuilder { - return RestTemplateBuilder() + fun restTemplateBuilderNoProxy(): RestTemplateBuilder = + RestTemplateBuilder() .setConnectTimeout(Duration.of(proxyTimeout.connectTimeout, ChronoUnit.MILLIS)) .setReadTimeout(Duration.of(proxyTimeout.requestTimeout, ChronoUnit.MILLIS)) - } @Bean @ConditionalOnProperty("no.nav.security.jwt.issuer.azuread.proxyurl") @@ -45,34 +46,34 @@ class RestTemplateBuilderConfig(private val proxyTimeout: ProxyTimeout) { override fun customize(restTemplate: RestTemplate) { val proxy = HttpHost("webproxy-nais.nav.no", 8088) val client: HttpClient = - HttpClientBuilder.create() + HttpClientBuilder + .create() .setDefaultRequestConfig( - RequestConfig.custom() + RequestConfig + .custom() .setConnectTimeout(Timeout.ofSeconds(proxyTimeout.connectTimeout)) .setConnectionRequestTimeout(Timeout.ofSeconds(proxyTimeout.requestTimeout)) .build(), - ) - .setConnectionManager( - PoolingHttpClientConnectionManagerBuilder.create() + ).setConnectionManager( + PoolingHttpClientConnectionManagerBuilder + .create() .setDefaultSocketConfig( - SocketConfig.custom() + SocketConfig + .custom() .setSoTimeout(Timeout.ofMilliseconds(proxyTimeout.socketTimeout)) .build(), - ) - .build(), - ) - .setRoutePlanner( + ).build(), + ).setRoutePlanner( object : DefaultProxyRoutePlanner(proxy) { public override fun determineProxy( target: HttpHost, context: HttpContext, - ): HttpHost? { - return if (target.hostName.contains("microsoft")) { + ): HttpHost? = + if (target.hostName.contains("microsoft")) { super.determineProxy(target, context) } else { null } - } }, ).build() diff --git a/web-client/src/main/java/no/nav/familie/webflux/builder/StsWebClientConfig.kt b/web-client/src/main/java/no/nav/familie/webflux/builder/StsWebClientConfig.kt index a317752e..4c2d2ca2 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/builder/StsWebClientConfig.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/builder/StsWebClientConfig.kt @@ -19,9 +19,8 @@ class StsWebClientConfig { @Qualifier(FAMILIE_WEB_CLIENT_BUILDER) webClientBuilder: WebClient.Builder, stsBearerTokenFilter: StsBearerTokenFilter, - ): WebClient { - return webClientBuilder + ): WebClient = + webClientBuilder .filter(stsBearerTokenFilter) .build() - } } diff --git a/web-client/src/main/java/no/nav/familie/webflux/builder/WebClientConfig.kt b/web-client/src/main/java/no/nav/familie/webflux/builder/WebClientConfig.kt index ff8001b6..9bedf639 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/builder/WebClientConfig.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/builder/WebClientConfig.kt @@ -44,9 +44,8 @@ class WebClientConfig { */ @Bean @ConditionalOnProperty("familie.web.exchangeStrategiesCustomizer", matchIfMissing = true) - fun exchangeStrategiesCustomizer(codecCustomizers: ObjectProvider): WebClientCodecCustomizer { - return WebClientCodecCustomizer(codecCustomizers.orderedStream().collect(Collectors.toList())) - } + fun exchangeStrategiesCustomizer(codecCustomizers: ObjectProvider): WebClientCodecCustomizer = + WebClientCodecCustomizer(codecCustomizers.orderedStream().collect(Collectors.toList())) /** * Spring har default 256KB, denne settes automatisk til unlimited for å unngå trøbbel. @@ -56,9 +55,7 @@ class WebClientConfig { @Bean @Order(-1) @ConditionalOnProperty("spring.codec.max-in-memory-size", matchIfMissing = true, havingValue = "Umulig verdi") - fun codecCustomizer(): CodecCustomizer { - return CodecCustomizer { it.defaultCodecs().maxInMemorySize(-1) } - } + fun codecCustomizer(): CodecCustomizer = CodecCustomizer { it.defaultCodecs().maxInMemorySize(-1) } /** * Scope: prototype - for å generere en ny webbuilder for hver gang som den blir injectad, ellers er den singleton @@ -98,14 +95,16 @@ class WebClientConfig { if (!ClassUtils.isPresent("org.eclipse.jetty.client.HttpClient", this::class.java.classLoader)) { error("Har ikke implementert støtte for andre clienter enn reactor client") } - return HttpAsyncClients.custom() + return HttpAsyncClients + .custom() .setIOReactorConfig( - IOReactorConfig.custom() + IOReactorConfig + .custom() .setSoTimeout(Timeout.ofMilliseconds(socketTimeout)) .build(), - ) - .setDefaultRequestConfig( - RequestConfig.custom() + ).setDefaultRequestConfig( + RequestConfig + .custom() .setConnectTimeout(Timeout.ofMilliseconds(connectTimeout)) .setConnectionRequestTimeout(Timeout.ofMilliseconds(requestTimeout)) .build(), diff --git a/web-client/src/main/java/no/nav/familie/webflux/client/AbstractPingableWebClient.kt b/web-client/src/main/java/no/nav/familie/webflux/client/AbstractPingableWebClient.kt index 91d3bae2..4106a204 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/client/AbstractPingableWebClient.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/client/AbstractPingableWebClient.kt @@ -9,7 +9,8 @@ import java.net.URI abstract class AbstractPingableWebClient( webClient: WebClient, metricsPrefix: String, -) : AbstractWebClient(webClient, metricsPrefix), Pingable { +) : AbstractWebClient(webClient, metricsPrefix), + Pingable { abstract val pingUri: URI override fun ping() { diff --git a/web-client/src/main/java/no/nav/familie/webflux/client/AbstractWebClient.kt b/web-client/src/main/java/no/nav/familie/webflux/client/AbstractWebClient.kt index 2193f29a..d473b270 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/client/AbstractWebClient.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/client/AbstractWebClient.kt @@ -33,73 +33,73 @@ abstract class AbstractWebClient( inline fun getForEntity( uri: URI, httpHeaders: HttpHeaders? = null, - ): T { - return executeMedMetrics(uri) { - webClient.get() + ): T = + executeMedMetrics(uri) { + webClient + .get() .uri(uri) .addHeaders>(httpHeaders) .retrieve() .bodyToMono() } - } inline fun postForEntity( uri: URI, payload: Any, httpHeaders: HttpHeaders? = null, - ): T { - return executeMedMetrics(uri) { - webClient.post() + ): T = + executeMedMetrics(uri) { + webClient + .post() .uri(uri) .addHeaders(httpHeaders) .bodyValue(payload) .retrieve() .bodyToMono() } - } inline fun putForEntity( uri: URI, payload: Any, httpHeaders: HttpHeaders? = null, - ): T { - return executeMedMetrics(uri) { - webClient.put() + ): T = + executeMedMetrics(uri) { + webClient + .put() .uri(uri) .addHeaders(httpHeaders) .bodyValue(payload) .retrieve() .bodyToMono() } - } inline fun patchForEntity( uri: URI, payload: Any, httpHeaders: HttpHeaders? = null, - ): T { - return executeMedMetrics(uri) { - webClient.patch() + ): T = + executeMedMetrics(uri) { + webClient + .patch() .uri(uri) .addHeaders(httpHeaders) .bodyValue(payload) .retrieve() .bodyToMono() } - } inline fun deleteForEntity( uri: URI, httpHeaders: HttpHeaders? = null, - ): T { - return executeMedMetrics(uri) { - webClient.delete() + ): T = + executeMedMetrics(uri) { + webClient + .delete() .uri(uri) .addHeaders>(httpHeaders) .retrieve() .bodyToMono() } - } fun executeMedMetrics( uri: URI, diff --git a/web-client/src/main/java/no/nav/familie/webflux/filter/BearerTokenFilter.kt b/web-client/src/main/java/no/nav/familie/webflux/filter/BearerTokenFilter.kt index 3604303a..556a8cd8 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/filter/BearerTokenFilter.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/filter/BearerTokenFilter.kt @@ -27,15 +27,14 @@ class BearerTokenFilter( override fun filter( request: ClientRequest, function: ExchangeFunction, - ): Mono { - return retrieveAndAddBearerToken( + ): Mono = + retrieveAndAddBearerToken( oAuth2AccessTokenService, clientConfigurationProperties, request, function, null, ) - } } @Component @@ -46,15 +45,14 @@ class BearerTokenClientCredentialFilter( override fun filter( request: ClientRequest, function: ExchangeFunction, - ): Mono { - return retrieveAndAddBearerToken( + ): Mono = + retrieveAndAddBearerToken( oAuth2AccessTokenService, clientConfigurationProperties, request, function, GrantType.CLIENT_CREDENTIALS, ) - } } @Component @@ -65,15 +63,14 @@ class BearerTokenOnBehalfOfFilter( override fun filter( request: ClientRequest, function: ExchangeFunction, - ): Mono { - return retrieveAndAddBearerToken( + ): Mono = + retrieveAndAddBearerToken( oAuth2AccessTokenService, clientConfigurationProperties, request, function, OAuth2GrantType.JWT_BEARER, ) - } } @Component @@ -84,15 +81,14 @@ class BearerTokenExchangeFilter( override fun filter( request: ClientRequest, function: ExchangeFunction, - ): Mono { - return retrieveAndAddBearerToken( + ): Mono = + retrieveAndAddBearerToken( oAuth2AccessTokenService, clientConfigurationProperties, request, function, OAuth2GrantType.TOKEN_EXCHANGE, ) - } } @Import(StsTokenClient::class) @@ -105,8 +101,8 @@ class BearerTokenStsFallbackFilter( override fun filter( request: ClientRequest, function: ExchangeFunction, - ): Mono { - return if (erSystembruker()) { + ): Mono = + if (erSystembruker()) { addBearerToken(request, function, stsRestClient.systemOIDCToken) } else { retrieveAndAddBearerToken( @@ -116,7 +112,6 @@ class BearerTokenStsFallbackFilter( function, ) } - } } private fun retrieveAndAddBearerToken( @@ -142,10 +137,12 @@ private fun addBearerToken( accessToken: String, ): Mono { val modifiedRequest = - ClientRequest.from(request).header( - "Authorization", - "Bearer " + accessToken, - ).build() + ClientRequest + .from(request) + .header( + "Authorization", + "Bearer " + accessToken, + ).build() return function.exchange(modifiedRequest) } @@ -200,10 +197,9 @@ private fun clientPropertiesForGrantType( values: List, grantType: GrantType, uri: URI, -): ClientProperties { - return values.firstOrNull { grantType == it.grantType } +): ClientProperties = + values.firstOrNull { grantType == it.grantType } ?: error("could not find oauth2 client config for uri=$uri and grant type=$grantType") -} private fun clientCredentialOrJwtBearer() = if (erSystembruker()) OAuth2GrantType.CLIENT_CREDENTIALS else OAuth2GrantType.JWT_BEARER diff --git a/web-client/src/main/java/no/nav/familie/webflux/filter/ConsumerIdFilter.kt b/web-client/src/main/java/no/nav/familie/webflux/filter/ConsumerIdFilter.kt index 058734bc..2cbe3f94 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/filter/ConsumerIdFilter.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/filter/ConsumerIdFilter.kt @@ -13,14 +13,14 @@ import reactor.core.publisher.Mono class ConsumerIdFilter( @Value("\${application.name}") private val appName: String, @Value("\${credential.username:}") private val serviceUser: String, -) : - ExchangeFilterFunction { +) : ExchangeFilterFunction { override fun filter( request: ClientRequest, function: ExchangeFunction, ): Mono { val modifiedRequest = - ClientRequest.from(request) + ClientRequest + .from(request) .header(NavHttpHeaders.NAV_CONSUMER_ID.asString(), serviceUser.ifBlank { appName }) .build() return function.exchange(modifiedRequest) diff --git a/web-client/src/main/java/no/nav/familie/webflux/filter/InternLoggerFilter.kt b/web-client/src/main/java/no/nav/familie/webflux/filter/InternLoggerFilter.kt index 5ab0ddac..d5c23827 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/filter/InternLoggerFilter.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/filter/InternLoggerFilter.kt @@ -16,7 +16,9 @@ import java.util.concurrent.atomic.AtomicBoolean @Component @Import(OIDCUtil::class) -class InternLoggerFilter(private val oidcUtil: OIDCUtil) : ExchangeFilterFunction { +class InternLoggerFilter( + private val oidcUtil: OIDCUtil, +) : ExchangeFilterFunction { override fun filter( request: ClientRequest, function: ExchangeFunction, @@ -52,16 +54,17 @@ class InternLoggerFilter(private val oidcUtil: OIDCUtil) : ExchangeFilterFunctio ): Mono { val responseReceived = AtomicBoolean() return Mono.defer { - responseMono.doOnEach { signal: Signal -> - if (signal.isOnNext || signal.isOnError) { - responseReceived.set(true) - postLogRequest(request, signal.type, hentSaksbehandler(oidcUtil)) + responseMono + .doOnEach { signal: Signal -> + if (signal.isOnNext || signal.isOnError) { + responseReceived.set(true) + postLogRequest(request, signal.type, hentSaksbehandler(oidcUtil)) + } + }.doFinally { signalType: SignalType -> + if (!responseReceived.get() && SignalType.CANCEL == signalType) { + postLogRequest(request, signalType, hentSaksbehandler(oidcUtil)) + } } - }.doFinally { signalType: SignalType -> - if (!responseReceived.get() && SignalType.CANCEL == signalType) { - postLogRequest(request, signalType, hentSaksbehandler(oidcUtil)) - } - } } } diff --git a/web-client/src/main/java/no/nav/familie/webflux/filter/MdcValuesPropagatingFilter.kt b/web-client/src/main/java/no/nav/familie/webflux/filter/MdcValuesPropagatingFilter.kt index 47cd9304..66049fa9 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/filter/MdcValuesPropagatingFilter.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/filter/MdcValuesPropagatingFilter.kt @@ -20,7 +20,8 @@ class MdcValuesPropagatingFilter : ExchangeFilterFunction { val callId = MDC.get(MDCConstants.MDC_CALL_ID) ?: IdUtils.generateId() val requestId = MDC.get(MDCConstants.MDC_REQUEST_ID) ?: callId val modifiedRequest = - ClientRequest.from(request) + ClientRequest + .from(request) .header(NavHttpHeaders.NAV_CALL_ID.asString(), callId) .header(NavHttpHeaders.NGNINX_REQUEST_ID.asString(), requestId) .build() diff --git a/web-client/src/main/java/no/nav/familie/webflux/filter/StsBearerTokenFilter.kt b/web-client/src/main/java/no/nav/familie/webflux/filter/StsBearerTokenFilter.kt index 05d94bc7..3a1d94ed 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/filter/StsBearerTokenFilter.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/filter/StsBearerTokenFilter.kt @@ -11,7 +11,9 @@ import reactor.core.publisher.Mono @Import(StsTokenClient::class) @Component -class StsBearerTokenFilter(private val stsTokenClient: StsTokenClient) : ExchangeFilterFunction { +class StsBearerTokenFilter( + private val stsTokenClient: StsTokenClient, +) : ExchangeFilterFunction { override fun filter( request: ClientRequest, function: ExchangeFunction, diff --git a/web-client/src/main/java/no/nav/familie/webflux/health/AbstractHealthIndicator.kt b/web-client/src/main/java/no/nav/familie/webflux/health/AbstractHealthIndicator.kt index e4acfa00..916b1020 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/health/AbstractHealthIndicator.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/health/AbstractHealthIndicator.kt @@ -20,16 +20,16 @@ abstract class AbstractHealthIndicator( private val log: Logger = LoggerFactory.getLogger(this::class.java) private val failureCounter: Counter = Metrics.counter(metricsNavn, "status", "nede") - override fun health(): Health { - return try { + override fun health(): Health = + try { pingable.ping() Health.up().build() } catch (e: Exception) { failureCounter.increment() log.info("Feil ved helsesjekk ${this::class.simpleName}", e) - Health.status(statusCode) + Health + .status(statusCode) .withDetail("Feilmelding", NestedExceptionUtils.getMostSpecificCause(e).javaClass.name + ": " + e.message) .build() } - } } diff --git a/web-client/src/main/java/no/nav/familie/webflux/sts/StsAccessTokenFeilException.kt b/web-client/src/main/java/no/nav/familie/webflux/sts/StsAccessTokenFeilException.kt index e67c0e44..51b455e5 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/sts/StsAccessTokenFeilException.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/sts/StsAccessTokenFeilException.kt @@ -1,3 +1,6 @@ package no.nav.familie.webflux.sts -class StsAccessTokenFeilException(message: String, cause: Throwable? = null) : RuntimeException(message, cause) +class StsAccessTokenFeilException( + message: String, + cause: Throwable? = null, +) : RuntimeException(message, cause) diff --git a/web-client/src/main/java/no/nav/familie/webflux/sts/StsTokenClient.kt b/web-client/src/main/java/no/nav/familie/webflux/sts/StsTokenClient.kt index 393189d5..71c7e369 100644 --- a/web-client/src/main/java/no/nav/familie/webflux/sts/StsTokenClient.kt +++ b/web-client/src/main/java/no/nav/familie/webflux/sts/StsTokenClient.kt @@ -21,9 +21,11 @@ class StsTokenClient( @Value("\${STS_APIKEY:#{null}}") private val stsApiKey: String? = null, ) { private val client = - WebClient.builder() + WebClient + .builder() .baseUrl(stsUrl) - .defaultHeader("Authorization", basicAuth(stsUsername, stsPassword)).apply { + .defaultHeader("Authorization", basicAuth(stsUsername, stsPassword)) + .apply { if (!stsApiKey.isNullOrEmpty()) { it.defaultHeader("x-nav-apiKey", stsApiKey) } @@ -56,7 +58,11 @@ class StsTokenClient( val accessTokenResponse = try { - client.get().retrieve().bodyToMono(AccessTokenResponse::class.java).block(Duration.ofSeconds(30)) + client + .get() + .retrieve() + .bodyToMono(AccessTokenResponse::class.java) + .block(Duration.ofSeconds(30)) } catch (e: RuntimeException) { throw StsAccessTokenFeilException("Feil i tilkobling", e) } @@ -75,8 +81,6 @@ class StsTokenClient( private fun basicAuth( username: String, password: String, - ): String { - return "Basic " + Base64.getEncoder().encodeToString("$username:$password".toByteArray()) - } + ): String = "Basic " + Base64.getEncoder().encodeToString("$username:$password".toByteArray()) } } diff --git a/web-client/src/test/java/no/nav/familie/webflux/builder/WebClientConfigCustomTest.kt b/web-client/src/test/java/no/nav/familie/webflux/builder/WebClientConfigCustomTest.kt index 728811d7..8c99b3c2 100644 --- a/web-client/src/test/java/no/nav/familie/webflux/builder/WebClientConfigCustomTest.kt +++ b/web-client/src/test/java/no/nav/familie/webflux/builder/WebClientConfigCustomTest.kt @@ -27,11 +27,10 @@ import java.time.LocalDate @Configuration class WebClientConfigTestConfig { @Bean - fun objectMapper(): ObjectMapper { - return ObjectMapper() + fun objectMapper(): ObjectMapper = + ObjectMapper() .registerModule(JavaTimeModule()) .enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) - } } @EnableAutoConfiguration @@ -53,7 +52,9 @@ internal class WebClientConfigEgenObjectMapperTest { @Qualifier(FAMILIE_WEB_CLIENT_BUILDER) lateinit var webClientBuilder: WebClient.Builder - data class TestDto(val dato: LocalDate = LocalDate.of(2020, 1, 1)) + data class TestDto( + val dato: LocalDate = LocalDate.of(2020, 1, 1), + ) @Test internal fun `default webClient skal skrive dato som iso-string`() { @@ -68,14 +69,18 @@ internal class WebClientConfigEgenObjectMapperTest { .block() wiremockServerItem.verify( - WireMock.postRequestedFor(WireMock.anyUrl()) + WireMock + .postRequestedFor(WireMock.anyUrl()) .withRequestBody(WireMock.equalToJson("""{"dato" : [ 2020, 1, 1 ] } """)), ) } @Test internal fun `skal kunne motta en stor fil`() { - val fil = this::class.java.classLoader.getResource("dummy/image_large.jpg")!!.readText() + val fil = + this::class.java.classLoader + .getResource("dummy/image_large.jpg")!! + .readText() wiremockServerItem.stubFor(WireMock.post(WireMock.anyUrl()).willReturn(WireMock.ok().withBody(fil))) val build = webClientBuilder.build() assertThatThrownBy { diff --git a/web-client/src/test/java/no/nav/familie/webflux/builder/WebClientConfigTest.kt b/web-client/src/test/java/no/nav/familie/webflux/builder/WebClientConfigTest.kt index 0f809faf..99997c15 100644 --- a/web-client/src/test/java/no/nav/familie/webflux/builder/WebClientConfigTest.kt +++ b/web-client/src/test/java/no/nav/familie/webflux/builder/WebClientConfigTest.kt @@ -33,7 +33,9 @@ internal class WebClientConfigTest { @Autowired lateinit var webClientBuilder: WebClient.Builder - data class TestDto(val dato: LocalDate = LocalDate.of(2020, 1, 1)) + data class TestDto( + val dato: LocalDate = LocalDate.of(2020, 1, 1), + ) @Test internal fun `skal skrive dato som iso-string`() { @@ -55,7 +57,10 @@ internal class WebClientConfigTest { @Test internal fun `skal kunne motta en stor fil`() { - val fil = this::class.java.classLoader.getResource("dummy/image_large.jpg")!!.readText() + val fil = + this::class.java.classLoader + .getResource("dummy/image_large.jpg")!! + .readText() wiremockServerItem.stubFor(WireMock.post(WireMock.anyUrl()).willReturn(WireMock.ok().withBody(fil))) val build = familieWebClientBuilder.build() build diff --git a/web-client/src/test/java/no/nav/familie/webflux/client/AbstractWebClientTest.kt b/web-client/src/test/java/no/nav/familie/webflux/client/AbstractWebClientTest.kt index e8df5431..ab5ef9ad 100644 --- a/web-client/src/test/java/no/nav/familie/webflux/client/AbstractWebClientTest.kt +++ b/web-client/src/test/java/no/nav/familie/webflux/client/AbstractWebClientTest.kt @@ -18,10 +18,10 @@ import org.springframework.web.reactive.function.client.WebClientResponseExcepti import java.net.URI internal class AbstractWebClientTest { - class TestClient(val uri: URI) : AbstractWebClient(WebClient.create(), "") { - fun test(): Ressurs { - return getForEntity(uri) - } + class TestClient( + val uri: URI, + ) : AbstractWebClient(WebClient.create(), "") { + fun test(): Ressurs = getForEntity(uri) } @AfterEach @@ -50,7 +50,8 @@ internal class AbstractWebClientTest { val ressurs = Ressurs.failure("FeiletÅæø") val body = objectMapper.writeValueAsString(ressurs) wireMockServer.stubFor( - WireMock.get(WireMock.anyUrl()) + WireMock + .get(WireMock.anyUrl()) .willReturn(WireMock.aResponse().withStatus(500).withBody(body)), ) @@ -67,7 +68,8 @@ internal class AbstractWebClientTest { internal fun `feil med body som inneholder feltet status men ikke er en ressurs`() { val body = objectMapper.writeValueAsString(mapOf("status" to "nei")) wireMockServer.stubFor( - WireMock.get(WireMock.anyUrl()) + WireMock + .get(WireMock.anyUrl()) .willReturn(WireMock.aResponse().withStatus(500).withBody(body)), ) @@ -81,7 +83,8 @@ internal class AbstractWebClientTest { @Test internal fun `feil uten ressurs kaster videre spring exception`() { wireMockServer.stubFor( - WireMock.get(WireMock.anyUrl()) + WireMock + .get(WireMock.anyUrl()) .willReturn(WireMock.aResponse().withStatus(500)), )