Skip to content

Commit

Permalink
Oppdatert versjoner + diverse config og consumere
Browse files Browse the repository at this point in the history
  • Loading branch information
LarsOttoHaugen committed Jan 14, 2025
1 parent 6f67789 commit 906727d
Show file tree
Hide file tree
Showing 72 changed files with 2,087 additions and 2,715 deletions.
2 changes: 1 addition & 1 deletion .nais/feature.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ azure:
sigrun_scope: dev-fss.team-inntekt.sigrun-q1
pensjon_url: pensjon-pen-q1.dev-fss-pub.nais.io
pensjon_scope: dev-fss.pensjon-q1.pensjon-pen-q1
bidragperson_url: bidrag-person-feature.dev-fss-pub.nais.io
bidragperson_url: bidrag-person-feature.dev-fss-pub.nais.io/bidrag-person
bidragperson_scope: dev-fss.bidrag.bidrag-person-feature
bidragperson_app: bidrag-person-feature
bidragperson_cluster: dev-fss
Expand Down
2 changes: 1 addition & 1 deletion .nais/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ azure:
sigrun_scope: dev-fss.team-inntekt.sigrun-q2
pensjon_url: pensjon-pen-q1.dev-fss-pub.nais.io
pensjon_scope: dev-fss.pensjon-q1.pensjon-pen-q1
bidragperson_url: bidrag-person.dev-fss-pub.nais.io
bidragperson_url: bidrag-person.dev-fss-pub.nais.io/bidrag-person
bidragperson_scope: dev-fss.bidrag.bidrag-person
bidragperson_app: bidrag-person
bidragperson_cluster: dev-fss
Expand Down
2 changes: 1 addition & 1 deletion .nais/prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ azure:
sigrun_scope: prod-fss.team-inntekt.sigrun
pensjon_url: pensjon-pen.prod-fss-pub.nais.io
pensjon_scope: prod-fss.pensjondeployer.pensjon-pen
bidragperson_url: bidrag-person.prod-fss-pub.nais.io/bidrag-person
bidragperson_scope: prod-fss.bidrag.bidrag-person
bidragperson_url: bidrag-person.prod-fss-pub.nais.io
bidragperson_app: bidrag-person
bidragperson_cluster: prod-fss
familiekssak_scope: prod-gcp.teamfamilie.familie-ks-sak
Expand Down
56 changes: 35 additions & 21 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.5</version>
<version>3.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

Expand All @@ -19,23 +19,21 @@

<properties>
<!-- build/language -->
<kotlin.version>1.9.24</kotlin.version>
<kotlin.version>2.1.0</kotlin.version>
<build-helper-maven.version>3.2.0</build-helper-maven.version>
<token-support.version>3.2.0</token-support.version>
<!-- <token-support.version>5.0.1</token-support.version>-->
<!-- dependencies -->
<bidrag-commons-test.version>1.20230511093912_dc35d81</bidrag-commons-test.version>
<bidrag-felles.version>2024.10.02.120046</bidrag-felles.version>
<bidrag-felles.version>2025.01.06.142103</bidrag-felles.version>
<bidrag-tilgangskontroll.version>1.10.4</bidrag-tilgangskontroll.version>
<mockito-kotlin.version>5.4.0</mockito-kotlin.version>
<springdoc-openapi-ui.version>2.6.0</springdoc-openapi-ui.version>
<nimbus-jose-jwt.version>9.40</nimbus-jose-jwt.version>
<springframework-cloud.version>4.1.4</springframework-cloud.version>
<springdoc-openapi-ui.version>2.8.1</springdoc-openapi-ui.version>
<nimbus-jose-jwt.version>10.0.1</nimbus-jose-jwt.version>
<springframework-cloud.version>4.2.0</springframework-cloud.version>
<com.squareup.okhttp3.version>4.12.0</com.squareup.okhttp3.version>
<aordningen-inntektsinformasjon-v1.version>1.7</aordningen-inntektsinformasjon-v1.version>
<jackson-datatype.version>2.17.2</jackson-datatype.version>
<ktlint.version>1.2.1</ktlint.version>
<kotlin-coroutines.version>1.8.1</kotlin-coroutines.version>
<ktlint.version>1.5.0</ktlint.version>
<mockk.version>1.13.14</mockk.version>
<kotest.version>5.9.1</kotest.version>
</properties>

<dependencies>
Expand Down Expand Up @@ -73,19 +71,16 @@
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson-datatype.version}</version>
</dependency>

<!-- kotlin coroutines -->
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-core-jvm</artifactId>
<version>${kotlin-coroutines.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-reactor</artifactId>
<version>${kotlin-coroutines.version}</version>
<scope>runtime</scope>
</dependency>

Expand All @@ -105,11 +100,11 @@
<artifactId>bidrag-transport-felles</artifactId>
<version>${bidrag-felles.version}</version>
</dependency>
<dependency>
<groupId>no.nav.bidrag</groupId>
<artifactId>bidrag-tilgangskontroll</artifactId>
<version>${bidrag-tilgangskontroll.version}</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>no.nav.bidrag</groupId>-->
<!-- <artifactId>bidrag-tilgangskontroll</artifactId>-->
<!-- <version>${bidrag-tilgangskontroll.version}</version>-->
<!-- </dependency>-->
<dependency>
<groupId>no.nav.security</groupId>
<artifactId>token-validation-spring</artifactId>
Expand Down Expand Up @@ -175,8 +170,8 @@
</dependency>
<dependency>
<groupId>no.nav.bidrag</groupId>
<artifactId>bidrag-commons-test</artifactId>
<version>${bidrag-commons-test.version}</version>
<artifactId>bidrag-commons-test-felles</artifactId>
<version>${bidrag-felles.version}</version>
<scope>test</scope>
</dependency>

Expand Down Expand Up @@ -213,6 +208,25 @@
<version>${springframework-cloud.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.mockk</groupId>
<artifactId>mockk-jvm</artifactId>
<version>${mockk.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test-junit5</artifactId>
<version>${kotlin.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.kotest</groupId>
<artifactId>kotest-runner-junit5-jvm</artifactId>
<version>${kotest.version}</version>
<scope>test</scope>
</dependency>

</dependencies>

<build>
Expand Down
157 changes: 4 additions & 153 deletions src/main/kotlin/no/nav/bidrag/grunnlag/BidragGrunnlagConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,39 +5,18 @@ import io.swagger.v3.oas.annotations.enums.SecuritySchemeType
import io.swagger.v3.oas.annotations.info.Info
import io.swagger.v3.oas.annotations.security.SecurityRequirement
import io.swagger.v3.oas.annotations.security.SecurityScheme
import no.nav.bidrag.commons.CorrelationId
import no.nav.bidrag.commons.ExceptionLogger
import no.nav.bidrag.commons.cache.EnableUserCache
import no.nav.bidrag.commons.web.CorrelationIdFilter
import no.nav.bidrag.commons.web.DefaultCorsFilter
import no.nav.bidrag.commons.web.HttpHeaderRestTemplate
import no.nav.bidrag.commons.web.UserMdcFilter
import no.nav.bidrag.grunnlag.consumer.arbeidsforhold.ArbeidsforholdConsumer
import no.nav.bidrag.grunnlag.consumer.arbeidsforhold.EnhetsregisterConsumer
import no.nav.bidrag.grunnlag.consumer.bidragperson.BidragPersonConsumer
import no.nav.bidrag.grunnlag.consumer.familiebasak.FamilieBaSakConsumer
import no.nav.bidrag.grunnlag.consumer.familiebasak.TilleggsstønadConsumer
import no.nav.bidrag.grunnlag.consumer.familieefsak.FamilieEfSakConsumer
import no.nav.bidrag.grunnlag.consumer.familiekssak.FamilieKsSakConsumer
import no.nav.bidrag.grunnlag.consumer.inntektskomponenten.InntektskomponentenConsumer
import no.nav.bidrag.grunnlag.consumer.pensjon.PensjonConsumer
import no.nav.bidrag.grunnlag.consumer.skattegrunnlag.SigrunConsumer
import no.nav.bidrag.grunnlag.service.SecurityTokenService
import no.nav.security.token.support.spring.api.EnableJwtTokenValidation
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder
import org.apache.hc.core5.http.io.SocketConfig
import org.apache.hc.core5.util.Timeout
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.web.client.RootUriTemplateHandler
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Import
import org.springframework.context.annotation.Scope
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory
import org.springframework.http.client.observation.DefaultClientRequestObservationConvention
import org.springframework.retry.annotation.EnableRetry
import org.springframework.web.client.RestTemplate

const val LIVE_PROFILE = "live"

Expand Down Expand Up @@ -65,138 +44,10 @@ class BidragGrunnlagConfig {
}

@Bean
fun exceptionLogger(): ExceptionLogger = ExceptionLogger(BidragGrunnlag::class.java.simpleName)

@Bean
@Scope("prototype")
fun restTemplate(): HttpHeaderRestTemplate {
val httpHeaderRestTemplate = HttpHeaderRestTemplate()

val sc = SocketConfig.custom().setSoTimeout(Timeout.ofSeconds(10)).build()
val pb = PoolingHttpClientConnectionManagerBuilder.create().setDefaultSocketConfig(sc).build()
val connectionManager = HttpClientBuilder.create().setConnectionManager(pb).build()
val requestFactory = HttpComponentsClientHttpRequestFactory(connectionManager)
httpHeaderRestTemplate.requestFactory = requestFactory

httpHeaderRestTemplate.addHeaderGenerator(CorrelationIdFilter.CORRELATION_ID_HEADER) { CorrelationId.fetchCorrelationIdForThread() }
return httpHeaderRestTemplate
}

@Bean
fun clientRequestObservationConvention() = DefaultClientRequestObservationConvention()

@Bean
fun familieBaSakConsumer(
@Value("\${FAMILIEBASAK_URL}") url: String,
restTemplate: HttpHeaderRestTemplate,
grunnlagSecurityTokenService: SecurityTokenService,
): FamilieBaSakConsumer {
LOGGER.info("Url satt i config: $url")
restTemplate.uriTemplateHandler = RootUriTemplateHandler(url)
restTemplate.interceptors.add(grunnlagSecurityTokenService.generateBearerToken("familiebasak"))
return FamilieBaSakConsumer(restTemplate)
}

@Bean
fun familieEfSakConsumer(
@Value("\${FAMILIEEFSAK_URL}") url: String,
restTemplate: HttpHeaderRestTemplate,
grunnlagSecurityTokenService: SecurityTokenService,
): FamilieEfSakConsumer {
LOGGER.info("Url satt i config: $url")
restTemplate.uriTemplateHandler = RootUriTemplateHandler(url)
restTemplate.interceptors.add(grunnlagSecurityTokenService.generateBearerToken("familieefsak"))
return FamilieEfSakConsumer(restTemplate)
}

@Bean
fun inntektskomponentenConsumer(
@Value("\${INNTEKTSKOMPONENTEN_URL}") url: String,
restTemplate: HttpHeaderRestTemplate,
grunnlagSecurityTokenService: SecurityTokenService,
): InntektskomponentenConsumer {
LOGGER.info("Url satt i config: $url")
restTemplate.uriTemplateHandler = RootUriTemplateHandler(url)
restTemplate.interceptors.add(grunnlagSecurityTokenService.generateBearerToken("inntektskomponenten"))
return InntektskomponentenConsumer(restTemplate)
}

@Bean
fun sigrunConsumer(
@Value("\${SIGRUN_URL}") url: String,
restTemplate: HttpHeaderRestTemplate,
grunnlagSecurityTokenService: SecurityTokenService,
): SigrunConsumer {
LOGGER.info("Url satt i config: $url")
restTemplate.uriTemplateHandler = RootUriTemplateHandler(url)
restTemplate.interceptors.add(grunnlagSecurityTokenService.generateBearerToken("sigrun"))
return SigrunConsumer(restTemplate)
}

@Bean
fun pensjonConsumer(
@Value("\${PENSJON_URL}") url: String,
restTemplate: HttpHeaderRestTemplate,
grunnlagSecurityTokenService: SecurityTokenService,
): PensjonConsumer {
LOGGER.info("Url satt i config: $url")
restTemplate.uriTemplateHandler = RootUriTemplateHandler(url)
restTemplate.interceptors.add(grunnlagSecurityTokenService.generateBearerToken("pensjon"))
return PensjonConsumer(restTemplate)
}

@Bean
fun bidragPersonConsumer(
@Value("\${BIDRAGPERSON_URL}") url: String,
restTemplate: HttpHeaderRestTemplate,
grunnlagSecurityTokenService: SecurityTokenService,
): BidragPersonConsumer {
LOGGER.info("Url satt i config: $url")
restTemplate.uriTemplateHandler = RootUriTemplateHandler(url)
restTemplate.interceptors.add(grunnlagSecurityTokenService.generateBearerToken("bidragperson"))
return BidragPersonConsumer(restTemplate)
}

@Bean
fun familieKsSakConsumer(
@Value("\${FAMILIEKSSAK_URL}") url: String,
restTemplate: HttpHeaderRestTemplate,
grunnlagSecurityTokenService: SecurityTokenService,
): FamilieKsSakConsumer {
LOGGER.info("Url satt i config: $url")
restTemplate.uriTemplateHandler = RootUriTemplateHandler(url)
restTemplate.interceptors.add(grunnlagSecurityTokenService.generateBearerToken("familiekssak"))
return FamilieKsSakConsumer(restTemplate)
fun restTemplate(): RestTemplate {
return RestTemplate();
}

@Bean
fun arbeidsforholdConsumer(
@Value("\${AAREG_URL}") url: String,
restTemplate: HttpHeaderRestTemplate,
grunnlagSecurityTokenService: SecurityTokenService,
): ArbeidsforholdConsumer {
LOGGER.info("Url satt i config: $url")
restTemplate.uriTemplateHandler = RootUriTemplateHandler(url)
restTemplate.interceptors.add(grunnlagSecurityTokenService.generateBearerToken("aareg"))
return ArbeidsforholdConsumer(restTemplate)
}

@Bean
fun enhetsregisterConsumer(@Value("\${EREG_URL}") url: String, restTemplate: HttpHeaderRestTemplate): EnhetsregisterConsumer {
LOGGER.info("Url satt i config: $url")
restTemplate.uriTemplateHandler = RootUriTemplateHandler(url)
return EnhetsregisterConsumer(restTemplate)
}

@Bean
fun tilleggsstønadConsumer(
@Value("\${TILLEGGSSTONADERSAK_URL}") url: String,
restTemplate: HttpHeaderRestTemplate,
grunnlagSecurityTokenService: SecurityTokenService,
): TilleggsstønadConsumer {
LOGGER.info("Url satt i config: $url")
restTemplate.uriTemplateHandler = RootUriTemplateHandler(url)
restTemplate.interceptors.add(grunnlagSecurityTokenService.generateBearerToken("tilleggsstonadersak"))
return TilleggsstønadConsumer(restTemplate)
}
fun exceptionLogger(): ExceptionLogger = ExceptionLogger(BidragGrunnlag::class.java.simpleName)
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ abstract class AbstractPeriodComparator<T : PeriodComparable<*, *>> {
val LOGGER: Logger = LoggerFactory.getLogger(AbstractPeriodComparator::class.java)
}

private fun isInsidePeriod(requestedPeriod: IPeriod, existingPeriod: IPeriod): Boolean {
return existingPeriod.periodeFra.isAfterOrEqual(requestedPeriod.periodeFra) && existingPeriod.periodeTil
.isBeforeOrEqual(requestedPeriod.periodeTil)
}
private fun isInsidePeriod(requestedPeriod: IPeriod, existingPeriod: IPeriod): Boolean =
existingPeriod.periodeFra.isAfterOrEqual(requestedPeriod.periodeFra) &&
existingPeriod.periodeTil
.isBeforeOrEqual(requestedPeriod.periodeTil)

fun comparePeriodEntities(requestedPeriod: IPeriod, newEntities: List<T>, existingEntities: List<T>): ComparatorResult<T> {
val expiredEntities = mutableListOf<T>()
Expand Down Expand Up @@ -68,12 +68,11 @@ abstract class AbstractPeriodComparator<T : PeriodComparable<*, *>> {
return differences
}

private fun findEntityWithEqualPeriod(periodEntity: T, periodEntities: List<T>): T? {
return periodEntities.find { t ->
t.periodEntity.periodeFra.isEqual(periodEntity.periodEntity.periodeFra) && t.periodEntity.periodeTil.isEqual(
private fun findEntityWithEqualPeriod(periodEntity: T, periodEntities: List<T>): T? = periodEntities.find { t ->
t.periodEntity.periodeFra.isEqual(periodEntity.periodEntity.periodeFra) &&
t.periodEntity.periodeTil.isEqual(
periodEntity.periodEntity.periodeTil,
)
}
}

private fun filterEntitiesByPeriod(
Expand All @@ -93,9 +92,8 @@ abstract class AbstractPeriodComparator<T : PeriodComparable<*, *>> {
return filteredEntities
}

private fun periodEntityStillExists(existingEntity: T, newEntities: List<T>): Boolean {
return findEntityWithEqualPeriod(existingEntity, newEntities) != null
}
private fun periodEntityStillExists(existingEntity: T, newEntities: List<T>): Boolean =
findEntityWithEqualPeriod(existingEntity, newEntities) != null

abstract fun isEntitiesEqual(newEntity: T, existingEntity: T): Boolean
}
Expand All @@ -109,16 +107,8 @@ class Period(override val periodeFra: LocalDate, override val periodeTil: LocalD

open class PeriodComparable<PeriodEntity : IPeriod, Child>(val periodEntity: PeriodEntity, val children: List<Child>?)

class ComparatorResult<T : PeriodComparable<*, *>>(
val expiredEntities: List<T>,
val updatedEntities: List<T>,
val equalEntities: List<T>,
)
class ComparatorResult<T : PeriodComparable<*, *>>(val expiredEntities: List<T>, val updatedEntities: List<T>, val equalEntities: List<T>)

fun LocalDate.isAfterOrEqual(startDate: LocalDate): Boolean {
return this >= startDate
}
fun LocalDate.isAfterOrEqual(startDate: LocalDate): Boolean = this >= startDate

fun LocalDate.isBeforeOrEqual(endDate: LocalDate): Boolean {
return this <= endDate
}
fun LocalDate.isBeforeOrEqual(endDate: LocalDate): Boolean = this <= endDate
Loading

0 comments on commit 906727d

Please sign in to comment.