From 1aa6d65b98211416ca14055effe3dfc0db3bcee6 Mon Sep 17 00:00:00 2001 From: stigus Date: Fri, 21 Jun 2024 10:16:02 +0200 Subject: [PATCH 001/161] Lagt til app for levende arbeidsforhold #deploy-levende-arbeidsforhold-service --- .../app.levende-arbeidsforhold-service.yml | 23 + .../GenererNavnServiceApplicationStarter.java | 2 +- .../config/ApplicationConfig.java | 2 +- .../config/DevConfig.java | 2 +- .../config/OpenApiConfig.java | 2 +- .../config/SecurityConfig.java | 2 +- .../provider/GenerateNavnController.java | 6 +- .../service/FileReader.java | 2 +- .../service/GenerateNavnService.java | 2 +- .../service/VerifyNavnService.java | 2 +- .../ApplicationContextTest.java | 2 +- .../service/FileReaderTest.java | 2 +- .../service/GenerateNavnServiceTest.java | 2 +- .../service/VerifyNavnServiceTest.java | 2 +- .../levende-arbeidsforhold-service/Dockerfile | 8 + apps/levende-arbeidsforhold-service/README.md | 26 + .../build.gradle | 76 + .../levende-arbeidsforhold-service/config.yml | 58 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + apps/levende-arbeidsforhold-service/gradlew | 234 +++ .../gradlew.bat | 89 + .../gradlewUpdate.sh | 3 + .../settings.gradle | 19 + .../GenererNavnServiceApplicationStarter.java | 12 + .../config/ApplicationConfig.java | 16 + .../config/DevConfig.java | 36 + .../config/OpenApiConfig.java | 55 + .../config/SecurityConfig.java | 38 + .../provider/GenerateNavnController.java | 39 + .../service/FileReader.java | 32 + .../service/GenerateNavnService.java | 33 + .../service/VerifyNavnService.java | 33 + .../src/main/resources/application.yml | 50 + .../src/main/resources/logback-spring.xml | 40 + .../src/main/resources/static/adjektiv.csv | 603 +++++++ .../src/main/resources/static/adverb.csv | 64 + .../src/main/resources/static/substantiv.csv | 1598 +++++++++++++++++ .../ApplicationContextTest.java | 20 + .../service/FileReaderTest.java | 31 + .../service/GenerateNavnServiceTest.java | 27 + .../service/VerifyNavnServiceTest.java | 46 + .../resources/application-test.properties | 1 + .../src/test/resources/static/test.csv | 3 + settings.gradle | 1 + 45 files changed, 3334 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/app.levende-arbeidsforhold-service.yml rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/GenererNavnServiceApplicationStarter.java (85%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/config/ApplicationConfig.java (87%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/config/DevConfig.java (95%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/config/OpenApiConfig.java (97%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/config/SecurityConfig.java (96%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/provider/GenerateNavnController.java (84%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/service/FileReader.java (93%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/service/GenerateNavnService.java (95%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/service/VerifyNavnService.java (95%) rename apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/ApplicationContextTest.java (89%) rename apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/service/FileReaderTest.java (93%) rename apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/service/GenerateNavnServiceTest.java (91%) rename apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/{generernavnservice => levendearbeidsforhold}/service/VerifyNavnServiceTest.java (96%) create mode 100644 apps/levende-arbeidsforhold-service/Dockerfile create mode 100644 apps/levende-arbeidsforhold-service/README.md create mode 100644 apps/levende-arbeidsforhold-service/build.gradle create mode 100644 apps/levende-arbeidsforhold-service/config.yml create mode 100644 apps/levende-arbeidsforhold-service/gradle/wrapper/gradle-wrapper.jar create mode 100644 apps/levende-arbeidsforhold-service/gradle/wrapper/gradle-wrapper.properties create mode 100755 apps/levende-arbeidsforhold-service/gradlew create mode 100644 apps/levende-arbeidsforhold-service/gradlew.bat create mode 100755 apps/levende-arbeidsforhold-service/gradlewUpdate.sh create mode 100644 apps/levende-arbeidsforhold-service/settings.gradle create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/resources/application.yml create mode 100644 apps/levende-arbeidsforhold-service/src/main/resources/logback-spring.xml create mode 100644 apps/levende-arbeidsforhold-service/src/main/resources/static/adjektiv.csv create mode 100644 apps/levende-arbeidsforhold-service/src/main/resources/static/adverb.csv create mode 100644 apps/levende-arbeidsforhold-service/src/main/resources/static/substantiv.csv create mode 100644 apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java create mode 100644 apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java create mode 100644 apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java create mode 100644 apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java create mode 100644 apps/levende-arbeidsforhold-service/src/test/resources/application-test.properties create mode 100644 apps/levende-arbeidsforhold-service/src/test/resources/static/test.csv diff --git a/.github/workflows/app.levende-arbeidsforhold-service.yml b/.github/workflows/app.levende-arbeidsforhold-service.yml new file mode 100644 index 00000000000..aa2760335f8 --- /dev/null +++ b/.github/workflows/app.levende-arbeidsforhold-service.yml @@ -0,0 +1,23 @@ +name: miljoer-service + +on: + push: + paths: + - libs/commands + - libs/data-transfer-objects + - libs/security-core + - libs/servlet-core + - libs/servlet-security + - apps/levende-arbeidsforhold-service/** + - .github/workflows/app.levende-arbeidsforhold-service.yml + +jobs: + workflow: + uses: ./.github/workflows/common.workflow.backend.yml + with: + working-directory: "apps/levende-arbeidsforhold-service" + deploy-tag: "#deploy-levende-arbeidsforhold-service" + permissions: + contents: read + id-token: write + secrets: inherit diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/GenererNavnServiceApplicationStarter.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java similarity index 85% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/GenererNavnServiceApplicationStarter.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java index 0580485b5ad..f563e06da7d 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/GenererNavnServiceApplicationStarter.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavnservice; +package no.nav.registre.testnorge.levendearbeidsforhold; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/ApplicationConfig.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java similarity index 87% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/ApplicationConfig.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java index 9a2dba21455..5870fadc8b4 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/ApplicationConfig.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavnservice.config; +package no.nav.registre.testnorge.levendearbeidsforhold.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/DevConfig.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java similarity index 95% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/DevConfig.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java index bb204187a9f..4cbc3adb649 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/DevConfig.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavnservice.config; +package no.nav.registre.testnorge.levendearbeidsforhold.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/OpenApiConfig.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java similarity index 97% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/OpenApiConfig.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java index a28df4ddafe..d2dc2940c31 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/OpenApiConfig.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavnservice.config; +package no.nav.registre.testnorge.levendearbeidsforhold.config; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/SecurityConfig.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java similarity index 96% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/SecurityConfig.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java index 7666c1c71e7..bb57d582088 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/SecurityConfig.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavnservice.config; +package no.nav.registre.testnorge.levendearbeidsforhold.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/provider/GenerateNavnController.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java similarity index 84% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/provider/GenerateNavnController.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java index aed3fa2e462..99d3014eb0c 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/provider/GenerateNavnController.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java @@ -1,9 +1,9 @@ -package no.nav.registre.testnorge.generernavnservice.provider; +package no.nav.registre.testnorge.levendearbeidsforhold.provider; import io.swagger.v3.oas.annotations.media.Schema; import lombok.RequiredArgsConstructor; -import no.nav.registre.testnorge.generernavnservice.service.GenerateNavnService; -import no.nav.registre.testnorge.generernavnservice.service.VerifyNavnService; +import no.nav.registre.testnorge.levendearbeidsforhold.service.GenerateNavnService; +import no.nav.registre.testnorge.levendearbeidsforhold.service.VerifyNavnService; import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/FileReader.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java similarity index 93% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/FileReader.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java index d96e0f9ed11..251390dede6 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/FileReader.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavnservice.service; +package no.nav.registre.testnorge.levendearbeidsforhold.service; import lombok.NoArgsConstructor; import lombok.SneakyThrows; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/GenerateNavnService.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java similarity index 95% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/GenerateNavnService.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java index 59772a67026..6bb23da5f39 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/GenerateNavnService.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavnservice.service; +package no.nav.registre.testnorge.levendearbeidsforhold.service; import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; import org.springframework.stereotype.Service; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/VerifyNavnService.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java similarity index 95% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/VerifyNavnService.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java index 9b37262bb47..e0e2831878e 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/VerifyNavnService.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavnservice.service; +package no.nav.registre.testnorge.levendearbeidsforhold.service; import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; import org.springframework.stereotype.Service; diff --git a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/ApplicationContextTest.java b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java similarity index 89% rename from apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/ApplicationContextTest.java rename to apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java index 054bfe6bd61..4c6f896873e 100644 --- a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/ApplicationContextTest.java +++ b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavnservice; +package no.nav.registre.testnorge.levendearbeidsforhold; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; diff --git a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/FileReaderTest.java b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java similarity index 93% rename from apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/FileReaderTest.java rename to apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java index e33435307be..165037712e0 100644 --- a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/FileReaderTest.java +++ b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavnservice.service; +package no.nav.registre.testnorge.levendearbeidsforhold.service; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; diff --git a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/GenerateNavnServiceTest.java b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java similarity index 91% rename from apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/GenerateNavnServiceTest.java rename to apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java index 386ab347ee0..e3d98846906 100644 --- a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/GenerateNavnServiceTest.java +++ b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavnservice.service; +package no.nav.registre.testnorge.levendearbeidsforhold.service; import org.junit.jupiter.api.Test; diff --git a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/VerifyNavnServiceTest.java b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java similarity index 96% rename from apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/VerifyNavnServiceTest.java rename to apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java index 5a0ffcdf63b..31078501c25 100644 --- a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/VerifyNavnServiceTest.java +++ b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavnservice.service; +package no.nav.registre.testnorge.levendearbeidsforhold.service; import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; import org.junit.jupiter.api.Test; diff --git a/apps/levende-arbeidsforhold-service/Dockerfile b/apps/levende-arbeidsforhold-service/Dockerfile new file mode 100644 index 00000000000..4a36f93546f --- /dev/null +++ b/apps/levende-arbeidsforhold-service/Dockerfile @@ -0,0 +1,8 @@ +FROM ghcr.io/navikt/baseimages/temurin:21 +LABEL maintainer="Team Dolly" + +ENV JAVA_OPTS="-Dspring.profiles.active=prod" + +ADD /build/libs/app.jar /app/app.jar + +EXPOSE 8080 diff --git a/apps/levende-arbeidsforhold-service/README.md b/apps/levende-arbeidsforhold-service/README.md new file mode 100644 index 00000000000..515c7b126c4 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/README.md @@ -0,0 +1,26 @@ +# Levende arbeidsforhold-service + +Fyll inn + +## Swagger + +Swagger finnes under [/swagger](https://levende-arbeidsforhold-service.intern.dev.nav.no/swagger) -endepunktet til +applikasjonen. + +## Lokal kjøring + +Ha naisdevice kjørende og kjør GenererNavnServiceApplicationStarter med følgende argumenter: + +``` +-Dspring.cloud.vault.token=[vault-token] +-Dspring.profiles.active=dev +``` + +### Utviklerimage + +I utviklerimage brukes ikke naisdevice og du må legge til følgende ekstra argumenter: + +``` +-Djavax.net.ssl.trustStore=[path til lokal truststore] +-Djavax.net.ssl.trustStorePassword=[passord til lokal truststore] +``` diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle new file mode 100644 index 00000000000..7d0da904ed8 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -0,0 +1,76 @@ +plugins { + id 'java' + id "org.sonarqube" version "5.0.0.4638" + id 'org.springframework.boot' version "3.2.6" + id 'io.spring.dependency-management' version "1.1.5" + id "jacoco" +} + +test { + useJUnitPlatform() +} + +sonarqube { + properties { + property "sonar.dynamicAnalysis", "reuseReports" + property "sonar.host.url", "https://sonarcloud.io" + property "sonar.java.coveragePlugin", "jacoco" + property "sonar.language", "java" + property "sonar.token", System.getenv("SONAR_TOKEN") + property "sonar.organization", "navikt" + property "sonar.project.monorepo.enabled", true + property "sonar.projectKey", "testnav-generer-navn-service" + property "sonar.projectName", "testnav-generer-navn-service" + property "sonar.sourceEncoding", "UTF-8" + } +} +bootJar { + archiveFileName = "app.jar" +} + +dependencyManagement { + applyMavenExclusions = false + imports { + mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2023.0.1' + } +} + +repositories { + mavenCentral() + mavenLocal() +} +dependencies { + + implementation 'no.nav.testnav.libs:security-core' + implementation 'no.nav.testnav.libs:servlet-core' + implementation 'no.nav.testnav.libs:commands' + implementation 'no.nav.testnav.libs:data-transfer-objects' + implementation 'no.nav.testnav.libs:servlet-security' + + implementation 'org.springframework.boot:spring-boot-starter-webflux' + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' + implementation 'org.springframework.boot:spring-boot-starter-security' + + implementation 'org.springframework.cloud:spring-cloud-starter-vault-config' + implementation 'org.springframework.boot:spring-boot-starter-actuator' + + implementation 'io.micrometer:micrometer-registry-prometheus' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' + implementation 'io.swagger.core.v3:swagger-annotations-jakarta:2.2.21' + + implementation 'net.logstash.logback:logstash-logback-encoder:7.4' + implementation 'org.hibernate.validator:hibernate-validator' + + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'org.springframework.cloud:spring-cloud-contract-wiremock' + + implementation 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' + testAnnotationProcessor 'org.projectlombok:lombok' +} +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} diff --git a/apps/levende-arbeidsforhold-service/config.yml b/apps/levende-arbeidsforhold-service/config.yml new file mode 100644 index 00000000000..aaf3f0f87d4 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/config.yml @@ -0,0 +1,58 @@ +apiVersion: "nais.io/v1alpha1" +kind: "Application" +metadata: + name: levende-arbeidsforhold-service + namespace: dolly + labels: + team: dolly +spec: + image: "{{image}}" + port: 8080 + accessPolicy: + inbound: + rules: + - application: team-dolly-lokal-app + cluster: dev-gcp + - application: testnav-organisasjon-forvalter + cluster: dev-gcp + - application: testnav-pdl-forvalter + cluster: dev-gcp + - application: testnav-pdl-forvalter-dev + cluster: dev-gcp + - application: testnav-oversikt-frontend + cluster: dev-gcp + - application: dolly-backend + cluster: dev-gcp + - application: dolly-frontend + cluster: dev-gcp + tokenx: + enabled: true + azure: + application: + allowAllUsers: true + enabled: true + tenant: nav.no + liveness: + path: /internal/isAlive + initialDelay: 4 + periodSeconds: 5 + failureThreshold: 500 + readiness: + path: /internal/isReady + initialDelay: 4 + periodSeconds: 5 + failureThreshold: 500 + prometheus: + enabled: true + path: /internal/metrics + replicas: + min: 1 + max: 1 + resources: + requests: + cpu: 200m + memory: 1024Mi + limits: + memory: 2048Mi + ingresses: + - "https://generer-navn-service.intern.dev.nav.no" diff --git a/apps/levende-arbeidsforhold-service/gradle/wrapper/gradle-wrapper.jar b/apps/levende-arbeidsforhold-service/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/apps/levende-arbeidsforhold-service/gradle/wrapper/gradle-wrapper.properties b/apps/levende-arbeidsforhold-service/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000000..48c0a02ca41 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/apps/levende-arbeidsforhold-service/gradlew b/apps/levende-arbeidsforhold-service/gradlew new file mode 100755 index 00000000000..3da45c161b0 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright ? 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions ?$var?, ?${var}?, ?${var:-default}?, ?${var+SET}?, +# ?${var#prefix}?, ?${var%suffix}?, and ?$( cmd )?; +# * compound commands having a testable exit status, especially ?case?; +# * various built-in commands including ?command?, ?set?, and ?ulimit?. +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/apps/levende-arbeidsforhold-service/gradlew.bat b/apps/levende-arbeidsforhold-service/gradlew.bat new file mode 100644 index 00000000000..107acd32c4e --- /dev/null +++ b/apps/levende-arbeidsforhold-service/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/apps/levende-arbeidsforhold-service/gradlewUpdate.sh b/apps/levende-arbeidsforhold-service/gradlewUpdate.sh new file mode 100755 index 00000000000..e5ee6361152 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/gradlewUpdate.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +gradle wrapper \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/settings.gradle b/apps/levende-arbeidsforhold-service/settings.gradle new file mode 100644 index 00000000000..8f0c233f883 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/settings.gradle @@ -0,0 +1,19 @@ +plugins { + id "com.gradle.develocity" version "3.17.4" +} + +rootProject.name = 'levende-arbeidsforhold-service' + +includeBuild '../../libs/security-core' +includeBuild '../../libs/servlet-core' +includeBuild '../../libs/commands' +includeBuild '../../libs/data-transfer-objects' +includeBuild '../../libs/servlet-security' +includeBuild '../../libs/testing' + +develocity { + buildScan { + termsOfUseUrl = "https://gradle.com/terms-of-service" + termsOfUseAgree = "yes" + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java new file mode 100644 index 00000000000..f563e06da7d --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java @@ -0,0 +1,12 @@ +package no.nav.registre.testnorge.levendearbeidsforhold; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class GenererNavnServiceApplicationStarter { + public static void main(String[] args) { + + SpringApplication.run(GenererNavnServiceApplicationStarter.class, args); + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java new file mode 100644 index 00000000000..5870fadc8b4 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java @@ -0,0 +1,16 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +import no.nav.testnav.libs.servletcore.config.ApplicationCoreConfig; +import no.nav.testnav.libs.servletsecurity.config.SecureOAuth2ServerToServerConfiguration; + +@Configuration +@Import({ + ApplicationCoreConfig.class, + SecureOAuth2ServerToServerConfiguration.class +}) +public class ApplicationConfig { + +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java new file mode 100644 index 00000000000..4cbc3adb649 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java @@ -0,0 +1,36 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.vault.annotation.VaultPropertySource; +import org.springframework.vault.authentication.ClientAuthentication; +import org.springframework.vault.authentication.TokenAuthentication; +import org.springframework.vault.client.VaultEndpoint; +import org.springframework.vault.config.AbstractVaultConfiguration; + +import static io.micrometer.common.util.StringUtils.isBlank; + +@Configuration +@Profile("dev") +@VaultPropertySource(value = "secret/dolly/lokal", ignoreSecretNotFound = false) +public class DevConfig extends AbstractVaultConfiguration { + + private static final String VAULT_TOKEN = "spring.cloud.vault.token"; + + @Override + public VaultEndpoint vaultEndpoint() { + return VaultEndpoint.create("vault.adeo.no", 443); + } + + @Override + public ClientAuthentication clientAuthentication() { + if (System.getenv().containsKey("VAULT_TOKEN")) { + System.setProperty(VAULT_TOKEN, System.getenv("VAULT_TOKEN")); + } + var token = System.getProperty(VAULT_TOKEN); + if (isBlank(token)) { + throw new IllegalArgumentException("Påkrevet property 'spring.cloud.vault.token' er ikke satt."); + } + return new TokenAuthentication(System.getProperty(VAULT_TOKEN)); + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java new file mode 100644 index 00000000000..d2dc2940c31 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java @@ -0,0 +1,55 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.config; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Contact; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.util.Arrays; + +import no.nav.testnav.libs.servletcore.config.ApplicationProperties; + +@Configuration +public class OpenApiConfig implements WebMvcConfigurer { + + @Bean + public OpenAPI openApi(ApplicationProperties applicationProperties) { + return new OpenAPI() + .components(new Components().addSecuritySchemes("bearer-jwt", new SecurityScheme() + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("JWT") + .in(SecurityScheme.In.HEADER) + .name("Authorization") + )) + .addSecurityItem( + new SecurityRequirement().addList("bearer-jwt", Arrays.asList("read", "write"))) + .info(new Info() + .title(applicationProperties.getName()) + .version(applicationProperties.getVersion()) + .description(applicationProperties.getDescription()) + .termsOfService("https://nav.no") + .contact(new Contact() + .url("https://nav-it.slack.com/archives/CA3P9NGA2") + .email("dolly@nav.no") + .name("Team Dolly") + ) + .license(new License() + .name("MIT License") + .url("https://opensource.org/licenses/MIT") + ) + ); + } + + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/swagger").setViewName("redirect:/swagger-ui.html"); + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java new file mode 100644 index 00000000000..bb57d582088 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.security.config.Customizer; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.web.SecurityFilterChain; + +@EnableWebSecurity +@Configuration +@Profile({ "prod", "dev" }) +public class SecurityConfig { + + @Bean + public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { + + httpSecurity.sessionManagement(sessionConfig -> sessionConfig.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) + .csrf(AbstractHttpConfigurer::disable) + .authorizeHttpRequests(authorizeConfig -> authorizeConfig.requestMatchers( + "/internal/**", + "/webjars/**", + "/swagger-resources/**", + "/v3/api-docs/**", + "/swagger-ui/**", + "/swagger", + "/error", + "/swagger-ui.html" + ).permitAll().requestMatchers("/api/**").fullyAuthenticated()) + .oauth2ResourceServer(oauth2RSConfig -> oauth2RSConfig.jwt(Customizer.withDefaults())); + + return httpSecurity.build(); + } +} + diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java new file mode 100644 index 00000000000..99d3014eb0c --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java @@ -0,0 +1,39 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.provider; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.RequiredArgsConstructor; +import no.nav.registre.testnorge.levendearbeidsforhold.service.GenerateNavnService; +import no.nav.registre.testnorge.levendearbeidsforhold.service.VerifyNavnService; +import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/api/v1/navn") +@RequiredArgsConstructor +public class GenerateNavnController { + + private final GenerateNavnService generateNavnService; + private final VerifyNavnService verifyNavnService; + + @GetMapping + public List generateName( + @RequestParam(required = false, defaultValue = "10") Integer antall, + @RequestParam(required = false) Long seed) { + + return generateNavnService.getRandomNavn(seed, antall); + } + + @PostMapping("/check") + @Schema(description = "Verifiser om navn finnes i liste over godkjente alternativer") + public boolean checkName(@RequestBody NavnDTO navn) { + + return verifyNavnService.verifyNavn(navn); + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java new file mode 100644 index 00000000000..251390dede6 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java @@ -0,0 +1,32 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.service; + +import lombok.NoArgsConstructor; +import lombok.SneakyThrows; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +@NoArgsConstructor(access = lombok.AccessLevel.PRIVATE) +class FileReader { + + @SneakyThrows + static List readLinesFromResources(String path) { + + try (var in = FileReader.class.getClassLoader().getResourceAsStream(path)) { + if (in == null) { + throw new IOException("Unable to find file " + path); + } + var reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); + var lines = new ArrayList(); + while (reader.ready()) { + lines.add(reader.readLine().trim()); + } + return lines; + } + } + +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java new file mode 100644 index 00000000000..6bb23da5f39 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java @@ -0,0 +1,33 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.service; + +import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; +import org.springframework.stereotype.Service; + +import java.security.SecureRandom; +import java.util.List; +import java.util.Random; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +@Service +public class GenerateNavnService { + private static final List ADJEKTIVER = FileReader.readLinesFromResources("static/adjektiv.csv"); + private static final List ADVERBER = FileReader.readLinesFromResources("static/adverb.csv"); + private static final List SUBSTANTIVER = FileReader.readLinesFromResources("static/substantiv.csv"); + + public List getRandomNavn(Long seed, Integer antall) { + var random = seed == null ? new SecureRandom() : new Random(seed); + return IntStream + .range(0, antall).boxed() + .map(navn -> NavnDTO.builder() + .adjektiv(toTitleCase(ADJEKTIVER.get(random.nextInt(ADJEKTIVER.size())))) + .adverb(toTitleCase(ADVERBER.get(random.nextInt(ADVERBER.size())))) + .substantiv(toTitleCase(SUBSTANTIVER.get(random.nextInt(SUBSTANTIVER.size())))) + .build()) + .collect(Collectors.toList()); + } + + private String toTitleCase(String value) { + return value.substring(0, 1).toUpperCase() + value.substring(1); + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java new file mode 100644 index 00000000000..e0e2831878e --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java @@ -0,0 +1,33 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.service; + +import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +import static java.util.Objects.isNull; +import static org.apache.commons.lang3.StringUtils.isNotBlank; + +@Service +public class VerifyNavnService { + private static final List ADJEKTIVER = FileReader.readLinesFromResources("static/adjektiv.csv"); + private static final List ADVERBER = FileReader.readLinesFromResources("static/adverb.csv"); + private static final List SUBSTANTIVER = FileReader.readLinesFromResources("static/substantiv.csv"); + + public boolean verifyNavn(NavnDTO navnDTO) { + + var alleAdjektiv = navnDTO.getAdjektiv().split(" "); + var alleAdverb = isNotBlank(navnDTO.getAdverb()) ? navnDTO.getAdverb().split(" ") : new String[]{}; + var alleSubstantiv = navnDTO.getSubstantiv().split(" "); + + return Arrays.stream(alleAdjektiv).allMatch(adjektiv -> verify(adjektiv, ADJEKTIVER)) && + Arrays.stream(alleAdverb).allMatch(adverb -> verify(adverb, ADVERBER)) && + Arrays.stream(alleSubstantiv).allMatch(substantiv -> verify(substantiv, SUBSTANTIVER)); + } + + private static boolean verify(String value, List approvedValues) { + + return isNull(value) || approvedValues.stream().anyMatch(validValue -> validValue.equalsIgnoreCase(value)); + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml new file mode 100644 index 00000000000..e19f133d6b6 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -0,0 +1,50 @@ +AAD_ISSUER_URI: https://login.microsoftonline.com/62366534-1ec3-4962-8869-9b5535279d0b + +spring: + main: + banner-mode: off + application: + name: generer-navn-service + version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle + description: App for å hente PDL personer. + security: + oauth2: + resourceserver: + aad: + issuer-uri: ${AAD_ISSUER_URI}/v2.0 + jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys + accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} + tokenx: + issuer-uri: ${TOKEN_X_ISSUER} + jwk-set-uri: ${TOKEN_X_JWKS_URI} + accepted-audience: ${TOKEN_X_CLIENT_ID} + cloud: + vault: + enabled: false + +springdoc: + swagger-ui: + disable-swagger-default-url: true + url: /v3/api-docs + +management: + endpoints: + enabled-by-default: true + web: + base-path: /internal + exposure.include: prometheus,heapdump,health + path-mapping: + prometheus: metrics + endpoint: + prometheus.enabled: true + heapdump.enabled: true + prometheus: + metrics: + export: + enabled: true +server: + servlet: + encoding: + charset: UTF-8 + error: + include-message: always \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/logback-spring.xml b/apps/levende-arbeidsforhold-service/src/main/resources/logback-spring.xml new file mode 100644 index 00000000000..9583ff2d427 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/resources/logback-spring.xml @@ -0,0 +1,40 @@ + + + + + + + true + 256 + 10280 + 20 + ^sun\.reflect\..*\.invoke + ^net\.sf\.cglib\.proxy\.MethodProxy\.invoke + java\.util\.concurrent\..* + org\.apache\.catalina\..* + org\.apache\.coyote\..* + org\.apache\.tomcat\..* + + + + + + + + + + + + + %d{HH:mm:ss.SSS} | %5p | %logger{25} | %m%n + + utf8 + + + + + + + + + \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/static/adjektiv.csv b/apps/levende-arbeidsforhold-service/src/main/resources/static/adjektiv.csv new file mode 100644 index 00000000000..3053afe064a --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/resources/static/adjektiv.csv @@ -0,0 +1,603 @@ +akademisk +akrobatisk +akseptabel +aktiv +aktiv +aktuell +aktverdig +akustisk +akvatisk +alfabetisk +allmektig +allsidig +allslags +alminnelig +alternativ +alvorlig +anonym +anstendig +ansvarsfull +aritmetisk +artig +autentisk +autonom +autorisert +avansert +barmhjertig +begeistret +bemerkelsesverdig +berømt +beskjeden +bestemt +betydelig +bevisst +blaut +blid +blomstrete +bløt +bra +dedikert +deilig +demokratisk +direkte +diskret +distingvert +diverse +djerv +dobbel +dogmatisk +driftig +dyktig +dynamisk +dyp +dypsindig +dyr +dyrebar +effektiv +egoistisk +eksakt +eksemplarisk +eksplosiv +ekstra +ekte +elastisk +elegant +elektronisk +emosjonell +empatisk +empirisk +engasjert +enkel +entusiastisk +episk +erfaren +estetisk +etterpåklok +eventyrlig +evig +falsk +familiær +famøs +fantasifull +fantasiløs +fantastisk +farlig +fast +fattet +fattig +fersk +festlig +fiktiv +filosofisk +fin +fiolett +firkantet +fjång +flat +fleksibel +flink +flott +flyktig +fordekt +foretaksom +formbar +fornem +fornuftig +fornøyd +forsiktig +forskjellig +forstandig +forståelsesfull +fredelig +fredfull +freidig +frisk +from +fruktbar +fryktløs +fryktsom +fullkommen +funksjonell +fyldig +fysisk +genierklært +geometrisk +gild +gjennomsiktig +gjensidig +gjestfri +glad +glemsom +glovarm +glupsk +gnien +god +gratis +grei +gretten +grunn +grønn +grå +gul +gylden +gøyal +gåen +halv +handlekraftig +hardhudet +hel +heldig +hellig +hemmelighetsfull +hensiktsmessig +hensynsfull +hensynsløs +hes +hevngjerrig +historisk +horisontal +human +humoristisk +hurtig +husløs +hyggelig +håndfast +håndlaget +hårsår +idiotsikker +iherdig +impulsiv +initiativrik +inkonsekvent +innesluttet +innsiktsfull +integrert +intelligent +interessant +interessert +internasjonal +intrikat +intuitiv +ivrig +jordisk +jordnær +jovial +juridisk +justerbar +kald +kantete +kjent +kjær +kjærlig +klam +klar +klartenkt +klassisk +klok +klok +knuslete +kognitiv +komfortabel +komisk +kompatibel +kompetent +kompleks +komplett +komplisert +konge +konkret +konkurransedyktig +konsekvent +konsentrisk +konservativ +kontant +kontrollert +konvensjonell +korrekt +kort +kostbar +kreativ +kritisk +kry +kul +kulturell +kunnskapsrik +kunst +kunstig +kursiv +kvadratisk +kvart +lang +lattermild +lav +legitim +lei +lekker +lengre +lett +likegyldig +lilla +liten +litt +livlig +livsglad +logisk +lojal +lun +lydig +lykkelig +lys +lyseblå +lysegrønn +lysegul +lyselilla +lystig +løsningsorientert +mange +maritim +matematisk +matt +medgjørlig +melankolsk +mett +minimalistisk +misfornøyd +mobil +moderat +moderne +modig +momentan +moralsk +morsk +morsom +mosegrodd +motivert +motløs +motstandsdyktig +motvillig +munter +musikalsk +muskuløs +måteholden +naturlig +naturstridig +nesnødd +neste +nett +nonfigurativ +normal +ny +nybakt +nysgjerrig +nyttig +nær +nødvendig +nøytral +observant +offisiell +oksydert +omkommen +omsorgsfull +omtenksom +operativ +oppblåst +oppgitt +oppjaget +opplagt +opplyst +opprett +oppriktig +opprømt +oppstemt +optimistisk +oransje +oransje +ordentlig +ordinær +ordknapp +oriental +original +overeksponert +overfladisk +overflødig +overfølsom +overmodig +overnaturlig +oversiktlig +parat +parisk +parodisk +passiv +patent +pen +perfekt +personlig +pessimistisk +plutselig +pompøs +populær +positiv +possessiv +pragmatisk +praktisk +pratsom +presentabel +presis +prikkete +proaktiv +produktiv +punktlig +puslete +pussig +pålitelig +påpasselig +raffinert +rakrygget +rask +rastløs +ravgul +real +realistisk +redelig +refleksiv +rektangulær +relevant +ren +reservert +retorisk +rett +rettferdig +rik +riktig +rimelig +ring +risikabel +robust +rolig +romantisk +rosa +ru +rund +rusten +ryddig +rød +rørete +sakte +salig +salt +samarbeidsvillig +samlet +samtidig +sannferdig +sannsynlig +sart +sein +selvhjulpen +selvtilfreds +sensitiv +sentral +sigen +sikker +sindig +sist +sitrongul +sivilisert +sjelden +sjenert +sjokkert +skamfull +skeptisk +skjønn +skjør +skravlete +skrivefør +sky +skyfri +skånsom +slakk +slapp +slem +sliten +smal +smart +smidig +smul +snakkesalig +snar +snill +snål +sofistikert +solid +sorgløs +sosial +sped +spesiell +spesifikk +spettete +spiss +spontan +sta +stabil +stadig +standhaftig +sterk +stille +stolt +stor +storartet +straffet +streng +stridlynt +styrbar +støyfri +subjektiv +subtil +sunn +svensk +svimmel +svær +sympatisk +søt +søvnig +taktfull +talefør +tankefull +tapper +taus +tentativ +teoretisk +tilbakeholden +tilfeldig +tillitsfull +tom +topp +toårig +tradisjonsbunden +treg +treig +trekantet +trist +trofast +trossig +troverdig +tru +trygg +trådløs +turkis +tydelig +tykkhudet +typisk +tøff +tørr +tørst +uavhengig +ubestikkelig +uemosjonell +uforgjengelig +ufornuftig +ufruktbar +ufunksjonell +ufølsom +ugjennomsiktig +uglesett +uinspirert +uinteressert +ukjent +uklar +ukontroversiell +ulastelig +ulik +ullen +ulogisk +ultrafiolett +ulydig +umake +umoden +umotivert +umusikalsk +underdanig +underfundig +underlig +ung +ungt +unormal +unyttig +unøyaktig +upersonlig +upopulær +upraktisk +upresis +urettferdig +urimelig +urokkelig +urolig +uromantisk +usannferdig +usedvanlig +uselvisk +uselvstendig +usensuell +usikker +usjenert +usnobbet +ustabil +usymmetrisk +utakknemlig +utgått +utholden +utmerket +utrolig +utstrakt +uttrykksfull +utydelig +utørst +utålmodig +uvanlig +uvirksom +vakker +varm +varm +varsom +vassen +veik +veldig +velkommen +vennlig +venstre +verd +verdifull +vertikal +vidsynt +viktig +viktig +viljesterk +virkelig +virtuell +vis +vissen +vokal +vrien +våken +vårlig +ærlig +øde +økologisk +økonomisk +øvrig +åpen +Ödslig +Ökänd +Öm +Äcklig +Ädel +Älskvärd +Ändlös +Ängslig +Magnífico +Frío +Cariñoso +Ácido +Común +Hábil +Aauténtico +Pequeño diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/static/adverb.csv b/apps/levende-arbeidsforhold-service/src/main/resources/static/adverb.csv new file mode 100644 index 00000000000..6a93640660b --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/resources/static/adverb.csv @@ -0,0 +1,64 @@ +akselererende +aktpågivende +aldrende +altetende +analyserende +befriende +berikende +blunkende +dansende +drøvtyggende +fallende +famlende +fascinerende +ferierende +fintfølende +flakkende +fraværende +glitrende +gryntende +gyngende +handlende +hikkende +inkluderende +innbringende +kjempende +ledende +leende +levende +lurende +memorerende +minkende +måpende +oppfarende +oppfyllende +oppklarende +opprettholdende +overbevisende +overstrålende +pleiende +påtroppende +reflekterende +samlende +skapende +skjelende +skjelvende +skravlende +sløvende +smigrende +smiskende +snøvlende +spennende +sprellende +sprudlende +tikkende +tilfredsstillende +tilgivende +tiltalende +tvilende +utmattende +utnyttende +uvitende +vaggende +vaklende +voksende \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/static/substantiv.csv b/apps/levende-arbeidsforhold-service/src/main/resources/static/substantiv.csv new file mode 100644 index 00000000000..fe62a1d206a --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/resources/static/substantiv.csv @@ -0,0 +1,1598 @@ +Abakus +Abbed +Abbedisse +abbor +Abonnement +Abonnent +Adapter +Adelsmann +Adjutant +Administrasjonsbygning +Admiral +Adressat +Adresse +adventskalender +advokat +agenda +agent +agg +agurk +agurktid +akeleie +akkord +akrobat +akselerator +aksjonist +aksjonær +aktivist +aktivitet +aktor +aktualitet +aktuar +aktør +akupunktør +akvarell +akvariefisk +alarm +albatross +alder +alderdom +aldring +alge +algoritme +alke +alkove +alkymist +allehånde +allergi +allianse +alligator +alm +almanakk +almisse +alpakka +alpelue +alpinski +alt +altmuligmann +aluminium +alv +ambisjon +ambolt +ambulofobi +analogi +analyse +ananas +anatomi +anbefaling +and +andakt +andrefiolin +andrik +anke +ankel +ansiktskrem +antikvitet +antilope +apanasje +appell +appelsin +appetitt +aprikos +april +aprilsnarr +arbeidsdag +arbeidsstyrke +aristokrat +ark +arkeolog +arkitektur +arkiv +arm +aroma +art +arterie +artikkel +artisjokk +ask +asparges +assistent +assosiasjon +asterisk +astrolog +astronom +august +autoritet +avanse +avarisk +avdeling +aveny +avgrunn +avhending +avis +avokado +avslutning +avslutningsfest +avstand +avtale +baby +babybag +bacon +bad +badeand +badeball +badebukse +badeby +badegjest +badehette +badekar +badenymfe +badering +badestrand +badmintonbane +bagasje +bagasjetralle +bagatell +bajas +bakepulver +bakeri +bakgrunn +bakgrunnslitteratur +bakhjulsdrift +bakke +bakkeklaring +bakkerekord +baktanke +bakterie +bakverk +balanse +ball +ballong +ballongbukse +ballsko +balltre +balsam +band +bane +banjo +bank +bankboks +banke +bar +barberskum +barista +bark +barneskole +barnestol +baron +bart +bas +base +basilikum +bass +baug +bedrift +befal +befolkning +behandling +bekk +benk +bensin +bensinstasjon +beskjed +bestefar +besteforelder +bestemmelsesnøkkel +bestemor +betaling +betydning +beundring +bevegelse +bever +bevilling +bibliotekar +bie +bikkje +bil +bilde +bildekort +bille +billett +billettluke +biograf +biografi +biologi +bit +bjelke +bjørk +Bjørk +bjørkefink +bjørn +bjørnebær +bjørnunge +blad +blanding +blankett +blekk +blindveg +blogg +blokk +blokkfløyte +blomsterplante +blund +blunder +bly +blyant +Blåbær +Blåklokke +blåveis +boble +bok +bokfink +bokhandel +bokhylle +bokklubb +bokorm +boks +boksamling +bokstav +bolero +bolle +bom +bomull +bonde +boom +bord +borg +bot +botanikk +brande +brann +branngate +bregne +breiflabb +brett +brev +brille +bringe +bris +bror +brosme +bru +brud +brudekjole +brudgom +bruk +bruksrett +bruktbil +brus +bry +brødskive +brøk +brøkdel +brøkstrek +bu +budeie +buk +bukk +Bukkeblad +bukse +buksesele +bukspyttkjertel +bukt +bunad +bursdag +busk +buss +busse +bussjåfør +busskur +busstopp +butikk +by +bygd +bygg +bygning +byregion +bysse +bytte +bær +bærtur +bøffel +bøk +bølge +bønne +bør +børste +bøtte +bøye +bøylehest +bånd +båndsalat +båt +campingvogn +Chilipepper +corner +cosinus +daddel +dagbok +dagbot +dagelev +dagkrem +dagsmarsj +dagsorden +dal +dalside +dam +dame +damesykkel +dans +datamaskin +dato +deig +deklarasjon +del +delegasjon +delepris +delmengde +delstat +desember +desimal +desimeter +dessert +detalj +dialekt +diamant +diameter +diesel +diett +diode +direktør +dirk +distanse +diva +doktor +doktorgrad +dokument +dokumentar +dompap +domstol +doning +drage +dregg +dreng +dress +drikke +dromedar +dronning +drosje +drott +drue +dråpe +dublett +due +duell +Duftranke +dugnad +duk +dunkjevle +dusj +dykker +dynamo +dyne +dyreflokk +dyrlege +dør +dørslag +dørstokkmil +edderkopp +edelstein +eføy +eggeplomme +eik +einebær +ekornhale +eksamen +ekspedisjon +ekspeditør +eksplosjon +ektemann +elefant +elev +elg +ellipse +elv +energi +energidrikk +eng +engel +enke +enkemann +entreprenør +episode +eplekake +epoke +eridofobi +erklæring +ert +eske +espresso +espressomaskin +etappe +etasje +etat +ettermiddag +evaluering +fabrikk +fabrikkpipe +fagott +fagressurs +fakir +fakkel +faktor +faktura +falk +fallskjerm +fallskjermhopper +familie +familiebarnehage +fan +fane +fange +fant +fantasi +fantast +far +farfar +farge +farmor +farsott +fart +fartshump +fartsretning +fasade +fase +faste +fastlandsforbindelse +fastlege +fastlegeordning +fastmerke +fasttelefon +fasttelefoni +fattigdom +fattigmann +fattigmannskost +feber +februar +feide +feil +fell +felle +feltseng +feltstol +felttog +femkant +ferd +ferie +ferskvann +fetter +fiber +fiken +fil +filet +fille +film +filmomtale +filmstjerne +filosof +filt +filter +finale +fiolin +firkant +firma +fisk +fiskebolle +fiskebutikk +fiskekrok +fjell +Fjellfiol +fjellkjede +Fjellkråkefot +fjernkontroll +fjernsyn +fjes +fjord +fjording +fjær +flagg +flaggermus +flamme +flaske +flaskehals +flate +flekk +Flekkmarihand +flette +flod +flokk +flom +fluktstol +flygefisk +flyplass +flyttelass +flyvertinne +fløy +fløyte +fobi +foldbygg +fole +folk +fontene +forbindelse +fordypning +forelder +forfader +forklaring +forkledning +form +formann +formel +formiddag +formue +fornøyelse +forsikring +forskjell +forstand +forsøkskanin +forutsetning +forventning +foss +fossekall +fot +fotball +fotkrem +fotnote +fotosyntese +foxtrot +frakk +framtid +frase +fred +fredag +frekvens +frende +frihet +frisyre +fritid +frokostblanding +frosk +frostnatt +frue +frukt +fruktbutikk +frukthage +fryd +frynse +fugl +fuglekasse +fugleskremsel +fuktighetskrem +funksjon +funksjonær +Furu +fusjon +fyr +fyrste +fyrstikk +fyrstinne +fødselsdag +føflekk +følelse +føll +førstemann +føyke +galakse +gallauniform +galleri +gallium +gallupmåling +galopp +galoppsport +galte +gang +garanti +garasje +gardin +gasspedal +gate +gaupe +gebursdag +geit +geithams +gelatin +genser +geografi +geometri +gitar +gitarhals +gjenbruksstasjon +gjenstand +gjerde +gjerrigknark +gjesterom +gjær +gjørme +gladiator +glede +globus +glose +gluten +gnist +golv +gorilla +graf +grammatikk +gran +Gran +grandis +grandonkel +grandtante +granitt +granne +granskning +grapefrukt +grav +gravemaskin +gravimetri +grend +grense +gress +greve +grevling +grunnskole +grønnfink +grønnsisik +grøt +gråhegre +gråsisik +gudinne +Gulkrokus +gullmynt +gullstol +gulnebblom +Gurkemeie +guvernante +gyngehest +gyngestol +gås +gåstol +gåte +habitt +hage +hai +hake +hakke +hale +hals +halvkule +halvmeter +halvsøsken +halvøy +ham +hamster +handel +handelsflåte +handelsmann +handelsreisende +handlekraft +handleliste +handlingsevne +handlingsrom +hane +hankatt +hare +harmoni +harpe +harpun +Hassel +hatt +haug +hauk +havhest +havsvale +Hegg +hei +heis +heldiggris +helgen +helikopter +helle +helt +hengekøye +hensikt +herbarium +herre +hest +hestedrosje +Hestehov +hestesko +hete +hette +hieroglyf +himmel +hingst +hinne +histolog +historie +hjelm +hjelp +hjelpelinje +hjulvisp +hjørnestein +hobby +hofte +holmgang +honning +hoppe +horisont +hotelldirektør +hotellsuite +hullemaskin +humor +hund +Hundekjeks +hunkatt +husbåt +Hvitkløver +Hvitveis +hybelkanin +hylle +hymne +hypotese +hørsel +høvel +høydedrag +høyttaler +håndkrem +idé +idyll +igle +Ildtopp +indrefilet +industri +infeksjon +informasjon +ingeniør +ingrediens +ingress +inndeling +innestemme +innhegning +innsjø +inntekt +interesse +invitasjon +isbjørn +iskrem +jaguar +jak +jakke +jakt +jaktterreng +Jalapeño +Jamón +jantelov +januar +japp +jeans +jeger +jekk +jeksel +jente +jernbane +jerv +jobb +joker +jolle +Jonsokkoll +jord +jordbruk +jordbruker +jordbær +jorde +jordmor +jordskjelv +jordskorpe +jordsmonn +journal +journalist +jubel +jubilant +juice +jukeboks +jul +juleferie +julepresang +juli +jungel +juni +jurist +juvel +kabin +kafeteria +kahytt +kai +kaie +kaiman +kakao +kakaobønne +kake +kaktus +kalddusj +kalender +kalkulator +kalori +kalv +kam +kamel +kamera +kamerat +kanin +kanne +kanon +kant +kantarell +kappe +kar +karaffel +karakter +karakteristikk +karies +karnapp +karneval +karosseri +karriere +kartlegging +karusell +kasjott +kasse +katalysator +katapult +katedral +kategori +kateter +katt +kattunge +kelner +kenguru +kentaur +ketsjup +kikkert +kile +kilometer +kime +kino +kiwi +kjede +kjedekollisjon +kjeks +kjeltring +kjendis +kjenning +kjepphest +kjerne +kjetting +kjæreste +kjøpmann +Kjørvel +kjøttbolle +kjøttdeig +klage +klang +klappstol +klasse +klasserom +klaustrofobi +klem +klemme +klinkekule +klippe +klippfisk +klisjé +klokke +Klokkelyng +klosett +klovn +klut +kløver +Kløver +knapp +knute +kokeplate +kokkekniv +kollega +kollisjon +koloni +komedie +komfyr +komité +kommentar +kommode +kommune +kompetanse +komposisjon +konditor +konduktør +kone +konferanse +konge +konglebit +kongress +konjakk +konjunksjon +konklusjon +konkurranse +konsekvens +konsert +konsonant +konstruksjon +kontakt +kontingent +kontorbygg +kontradiksjon +kontrast +kontroll +konvolutt +kopp +korg +korgstol +kork +kornsirkel +kornsort +korridor +kortstokk +kos +kost +kostnad +krabbe +krage +krampe +Krattfiol +krem +kreps +krets +krokodille +Krokus +krone +krydder +kryddermål +krypdyr +kråke +kråkebolle +kråkesølv +kubbestol +kulepenn +kulturplante +kunde +kunngjøring +kunnskap +kunst +kunsteventyr +kunstverk +kupé +kur +kusine +Kusymre +kutte +kveld +kveldsmat +kvern +kvinne +kyst +kyststi +kø +køyeseng +kål +kålrabi +labyrint +lagidrett +lagsport +lakris +lama +lampe +lampett +landmåler +landsby +lapp +larm +larve +lefse +lege +legevakt +legg +lekeplass +lenestol +lensmann +leopard +leppe +lerke +lerkefugl +lerketre +leverandør +leveregel +liggestol +likning +lilje +lind +linjal +linje +linselus +list +liste +litteratur +livsstil +loddsnor +logaritme +logg +lomme +lommebok +lov +lue +lugar +lugg +lukt +lunge +lunsj +lupe +lyd +lykke +lyte +lørdag +løve +løveflokk +løvetann +Løvetann +løvinne +mage +magesekk +mai +mais +make +maktperson +malerbukse +maleri +malm +malstrøm +mamma +mammut +mandag +mandag +mandagsbil +mandarin +mandel +mandolin +mann +mann +marengskake +marg +mark +marmor +masekopp +maskin +mast +mat +matboks +matematiker +matpakke +matte +matvare +maur +medaljong +medisin +medisterdeig +medvind +melding +mengde +meny +merr +meter +metode +metrolog +middag +mil +miljøgift +million +minibank +mobiltelefon +modell +moldvarp +mor +morene +morfar +mormor +mose +moskus +motordel +motvind +muffins +Muñeco +munn +muskel +mutter +mygg +mynt +myntsamling +Myrfiol +myrsnipe +møbelforretning +møll +mølle +mønster +måke +målsetting +måne +månefase +måneferd +månerakett +nakke +natt +nattergal +natthegre +nattkrem +natur +naturressurs +naut +nepe +nestleder +nettadresse +netthinne +nettleser +nettverkskabel +neve +nevø +niese +Niño +nisse +nitrogen +nordavind +november +nyre +nøkkel +Nøkleblom +nøtt +odde +okse +oktober +oldefar +oldemor +olivenolje +olje +omelett +omsetning +omstilling +omtale +onkel +onsdag +oppdatering +oppdrett +opphoping +opplag +opportunist +opposisjon +oppskrift +oppslutning +opptaksprøve +oppvartning +oppvaskmaskin +oppvisningskamp +opsjon +ord +ordbok +ordre +oridé +orientering +original +orm +ost +ostehøvel +ostekake +oter +overgang +oversikt +overskrift +overstyring +ovn +Pájaro +pakke +pakt +pali +palme +palmeolje +pamp +panikk +panikkangst +panjabi +panne +pannekake +panter +papegøye +papp +pappa +paraply +parasoll +parfyme +partikkel +parykk +pause +pausefisk +pedagog +pedal +pendel +penge +periode +perle +Perleblom +Perleblomst +permanent +persepsjon +persille +person +pes +pianist +pianokrakk +pike +pinnestol +pinsett +pioner +pistol +pizza +planet +plante +plasma +plass +plassering +plast +plate +platina +pleie +plekter +plikt +plomme +plyndring +pode +poesi +pokal +politibil +ponni +porsjon +port +porto +pose +postkasse +postnummer +potet +praksis +prat +premie +presentasjon +presse +prest +pris +produksjon +prærieulv +prøve +pub +puddel +pukkel +pumpe +purre +pus +pusekatt +pute +pyjamas +pyjamasbukse +pyramide +pytt +pære +påfunn +påkjenning +påpakning +påske +påskeegg +radiostasjon +ramme +regel +region +regle +regnskog +reise +reke +rekkefølge +rekord +reserve +ressurs +restaurant +retningslinje +retorikk +revebjelle +ribbe +ridebukse +ringdue +ripe +rist +robåt +rose +rosin +rubin +rulletrapp +rygg +rynke +rype +rytme +rødfotsule +Rødkløver +rødstrupe +røyskatt +råvare +sak +saks +salamander +salt +salve +samboer +sanddyne +sandkasse +sans +sarkofag +sarv +satellitt +satire +sau +saudabu +saus +savanne +scene +sebra +seidel +seigmann +seilbåt +sekk +sekretær +sekretær +sel +Selje +sen +senat +senator +Señor +sentrum +separasjon +september +seremoni +service +serviett +servise +servitrise +servitør +sete +sild +silhuett +sitron +Sitronmelisse +sitronsyre +sjakal +sjeselong +sjiraff +sjokoladekake +sjø +sjøsetting +skatoll +skive +skjorte +sko +Skogfiol +Skogkløver +Skogmarihand +Skogstjerne +skole +skorpion +skrivemaskin +sky +skytte +skyvedør +skål +slektning +smaragd +snegle +snøball +Snøklokke +sofa +sokk +sol +solbær +solkrem +soloppgang +solsikke +sommerferie +sovepose +spasertur +spenne +spesialist +stafett +stamfar +stammor +stasjon +stasjonsvogn +statist +Stemorsblomst +stilling +stjerne +stokk +stol +storskjerm +struktur +struts +strømpebukse +stund +støtte +støvel +støvlett +sum +suppe +supporter +sure +svale +svamp +svane +sverm +svigerdatter +svigerinne +svigersønn +svoger +sydvest +sykkel +syl +synd +syndebukk +synonym +synsing +syre +system +systrending +sysvort +Sølvakasie +søndag +søndag +sønnavind +søster +søyle +såpe +takke +takras +tallerken +talltegn +tangent +tanke +tann +tannbørste +telefonkatalog +telefonkiosk +telefonnummer +Teléfono +telegram +teleskopord +terskel +test +tevling +tiger +time +timebu +timeplan +tirsdag +tiur +tja +tomat +tommel +tomt +tone +toppskarv +toppvinkel +tordivel +torn +torsdag +torsk +tournure +township +tradisjon +trafikkork +tragedie +trakt +traktkantarell +traktoregg +trane +trapp +tre +treff +tregrense +trekkfugl +trenchcoat +trikk +trombone +trommis +trompet +trost +träd +tunfisk +tunge +tunnel +turbin +turistby +tusenfryd +Tusenfryd +tusj +tyggis +tyr +tyttebær +tøffel +tøffelhelt +tørketrommel +undulat +ungdom +unge +universitet +unnselig +vaffel +vaktel +valmue +vals +vandrefalk +vane +vannmann +varde +vare +varedeklarasjon +varetekt +variasjon +vaskemaskin +vegg +veps +veranda +veske +vest +vestibyle +veterinær +vevstol +vifte +villa +vits +vogge +voks +volleyball +vott +vulkan +vurdering +våghals +Vårkrokus +Ägare +Ägg +Äggula +Äktenskap +æresdoktor +æresgjest +æresmedlem +ærfugl +Ödemark +Ödla +Ög +Ögonblick +Öra +ørn +østers +øvelse +øy +åker +årbok +årsak +årsplan +årstid diff --git a/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java b/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java new file mode 100644 index 00000000000..4c6f896873e --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java @@ -0,0 +1,20 @@ +package no.nav.registre.testnorge.levendearbeidsforhold; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.security.oauth2.jwt.JwtDecoder; +import org.springframework.test.context.ActiveProfiles; + +@SpringBootTest +@ActiveProfiles("test") +class ApplicationContextTest { + + @MockBean + public JwtDecoder jwtDecoder; + + @Test + @SuppressWarnings("java:S2699") + void load_app_context() { + } +} diff --git a/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java b/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java new file mode 100644 index 00000000000..165037712e0 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java @@ -0,0 +1,31 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.service; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; + +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +class FileReaderTest { + + @Test + void testThatContentsAreCorrectlyRead() { + var contents = FileReader.readLinesFromResources("static/test.csv"); + assertThat(contents) + .hasSize(3) + .containsExactly( + "one", + "two", + "three" + ); + } + + @Test + void testThatNonexistingResourceCausesException() { + assertThatThrownBy(() -> FileReader.readLinesFromResources("static/does-not-exist.csv")) + .isInstanceOf(IOException.class) + .hasMessage("Unable to find file static/does-not-exist.csv"); + } + +} diff --git a/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java b/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java new file mode 100644 index 00000000000..e3d98846906 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java @@ -0,0 +1,27 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.service; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; + +class GenerateNavnServiceTest { + + private final GenerateNavnService service = new GenerateNavnService(); + + @Test + void noSeedShouldGiveDifferentListsOfNames() { + var names1 = service.getRandomNavn(null, 100); + var names2 = service.getRandomNavn(null, 100); + assertThat(names1) + .isNotEqualTo(names2); + } + + @Test + void sameSeedShouldGiveSameListOfNames() { + var names1 = service.getRandomNavn(1000L, 100); + var names2 = service.getRandomNavn(1000L, 100); + assertThat(names1) + .isEqualTo(names2); + } + +} diff --git a/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java b/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java new file mode 100644 index 00000000000..31078501c25 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java @@ -0,0 +1,46 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.service; + +import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +class VerifyNavnServiceTest { + + private final static String GYLDIG_ADJEKTIV = "Lojal Avansert"; + private final static String GYLDIG_ADVERB = "Reflekterende"; + private final static String GYLDIG_SUBSTANTIV = "Reise Løveflokk Tragedie"; + + private final static String IKKE_ADJEKTIV = "Aaaaaa Bbbbbbb Cccccccc"; + private final static String IKKE_ADVERB = "Ddddddddd"; + private final static String IKKE_SUBSTANTIV = "Eeeeeeee Fffffffff Ggggggggg Hhhhhhhhh"; + + @Test + void testVerifyNavn() { + var service = new VerifyNavnService(); + var gyldigNavnResult = service.verifyNavn( + NavnDTO.builder() + .adjektiv(GYLDIG_ADJEKTIV) + .adverb(GYLDIG_ADVERB) + .substantiv(GYLDIG_SUBSTANTIV) + .build() + ); + var gyldigNavnMedTomtMellomnavnResult = service.verifyNavn( + NavnDTO.builder() + .adjektiv(GYLDIG_ADJEKTIV) + .adverb(null) + .substantiv(GYLDIG_SUBSTANTIV) + .build() + ); + var ikkeGyldigNavnResult = service.verifyNavn( + NavnDTO.builder() + .adjektiv(IKKE_ADJEKTIV) + .adverb(IKKE_ADVERB) + .substantiv(IKKE_SUBSTANTIV) + .build() + ); + assertThat(gyldigNavnResult).isTrue(); + assertThat(gyldigNavnMedTomtMellomnavnResult).isTrue(); + assertThat(ikkeGyldigNavnResult).isFalse(); + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/test/resources/application-test.properties b/apps/levende-arbeidsforhold-service/src/test/resources/application-test.properties new file mode 100644 index 00000000000..e5e55886152 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/test/resources/application-test.properties @@ -0,0 +1 @@ +TOKEN_X_ISSUER=dummy \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/test/resources/static/test.csv b/apps/levende-arbeidsforhold-service/src/test/resources/static/test.csv new file mode 100644 index 00000000000..54d55bf0bb5 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/test/resources/static/test.csv @@ -0,0 +1,3 @@ +one +two +three \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 21529e70cd8..461c0ca2bdd 100644 --- a/settings.gradle +++ b/settings.gradle @@ -105,6 +105,7 @@ includeBuild './apps/organisasjon-service' includeBuild './apps/organisasjon-tilgang-frontend' includeBuild './apps/organisasjon-tilgang-service' includeBuild './apps/orgnummer-service' +includeBuild './apps/levende-arbeidsforhold-service' includeBuild './apps/oversikt-frontend' includeBuild './apps/pdl-forvalter' includeBuild './apps/person-faste-data-service' From 3d2d501ad4d9f9e93aa21a1d348e5f58d1b77599 Mon Sep 17 00:00:00 2001 From: stigus Date: Fri, 21 Jun 2024 10:16:53 +0200 Subject: [PATCH 002/161] Liten folder fix #deploy-levende-arbeidsforhold-service --- .../GenererNavnServiceApplicationStarter.java | 2 +- .../config/ApplicationConfig.java | 2 +- .../config/DevConfig.java | 2 +- .../config/OpenApiConfig.java | 2 +- .../config/SecurityConfig.java | 2 +- .../provider/GenerateNavnController.java | 6 +++--- .../service/FileReader.java | 2 +- .../service/GenerateNavnService.java | 2 +- .../service/VerifyNavnService.java | 2 +- .../levendearbeidsforhold/service/FileReaderTest.java | 1 + .../service/GenerateNavnServiceTest.java | 1 + .../service/VerifyNavnServiceTest.java | 1 + 12 files changed, 14 insertions(+), 11 deletions(-) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavn}/GenererNavnServiceApplicationStarter.java (85%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavn}/config/ApplicationConfig.java (87%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavn}/config/DevConfig.java (95%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavn}/config/OpenApiConfig.java (97%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavn}/config/SecurityConfig.java (96%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavn}/provider/GenerateNavnController.java (84%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavn}/service/FileReader.java (93%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavn}/service/GenerateNavnService.java (95%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavn}/service/VerifyNavnService.java (95%) diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/GenererNavnServiceApplicationStarter.java similarity index 85% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/GenererNavnServiceApplicationStarter.java index f563e06da7d..bbb163c9912 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/GenererNavnServiceApplicationStarter.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold; +package no.nav.registre.testnorge.generernavn; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/ApplicationConfig.java similarity index 87% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/ApplicationConfig.java index 5870fadc8b4..d022a172bc0 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/ApplicationConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.config; +package no.nav.registre.testnorge.generernavn.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/DevConfig.java similarity index 95% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/DevConfig.java index 4cbc3adb649..da58eca6075 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/DevConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.config; +package no.nav.registre.testnorge.generernavn.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/OpenApiConfig.java similarity index 97% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/OpenApiConfig.java index d2dc2940c31..fc3ee353342 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/OpenApiConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.config; +package no.nav.registre.testnorge.generernavn.config; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/SecurityConfig.java similarity index 96% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/SecurityConfig.java index bb57d582088..6ac28f4bb1e 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/SecurityConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.config; +package no.nav.registre.testnorge.generernavn.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/provider/GenerateNavnController.java similarity index 84% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/provider/GenerateNavnController.java index 99d3014eb0c..d56ad5a11bd 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/provider/GenerateNavnController.java @@ -1,9 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.provider; +package no.nav.registre.testnorge.generernavn.provider; import io.swagger.v3.oas.annotations.media.Schema; import lombok.RequiredArgsConstructor; -import no.nav.registre.testnorge.levendearbeidsforhold.service.GenerateNavnService; -import no.nav.registre.testnorge.levendearbeidsforhold.service.VerifyNavnService; +import no.nav.registre.testnorge.generernavn.service.GenerateNavnService; +import no.nav.registre.testnorge.generernavn.service.VerifyNavnService; import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/FileReader.java similarity index 93% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/FileReader.java index 251390dede6..1f610cc2862 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/FileReader.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; +package no.nav.registre.testnorge.generernavn.service; import lombok.NoArgsConstructor; import lombok.SneakyThrows; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/GenerateNavnService.java similarity index 95% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/GenerateNavnService.java index 6bb23da5f39..9766f455c1f 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/GenerateNavnService.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; +package no.nav.registre.testnorge.generernavn.service; import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; import org.springframework.stereotype.Service; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/VerifyNavnService.java similarity index 95% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/VerifyNavnService.java index e0e2831878e..902b9146af1 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/VerifyNavnService.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; +package no.nav.registre.testnorge.generernavn.service; import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; import org.springframework.stereotype.Service; diff --git a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java index 165037712e0..455e417f858 100644 --- a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java +++ b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java @@ -3,6 +3,7 @@ import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; +import no.nav.registre.testnorge.generernavn.service.FileReader; import org.junit.jupiter.api.Test; import java.io.IOException; diff --git a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java index e3d98846906..03929dedc04 100644 --- a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java +++ b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java @@ -1,5 +1,6 @@ package no.nav.registre.testnorge.levendearbeidsforhold.service; +import no.nav.registre.testnorge.generernavn.service.GenerateNavnService; import org.junit.jupiter.api.Test; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; diff --git a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java index 31078501c25..a042c847f55 100644 --- a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java +++ b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java @@ -1,5 +1,6 @@ package no.nav.registre.testnorge.levendearbeidsforhold.service; +import no.nav.registre.testnorge.generernavn.service.VerifyNavnService; import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; import org.junit.jupiter.api.Test; From 15c0d6b0194b58371bc8e2df5ad7a47d0e26b145 Mon Sep 17 00:00:00 2001 From: stigus Date: Fri, 21 Jun 2024 10:19:42 +0200 Subject: [PATCH 003/161] Liten name fix #deploy-levende-arbeidsforhold-service --- .../src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index e19f133d6b6..e0afedb755c 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -4,7 +4,7 @@ spring: main: banner-mode: off application: - name: generer-navn-service + name: levende-arbeidsforhold-service version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle description: App for å hente PDL personer. security: @@ -15,7 +15,7 @@ spring: jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} tokenx: - issuer-uri: ${TOKEN_X_ISSUER} + issuer-uri: ${TOKEN_X_ISSUER} jwk-set-uri: ${TOKEN_X_JWKS_URI} accepted-audience: ${TOKEN_X_CLIENT_ID} cloud: From 8e0a996f7808155d95f738713188af8b7a6d0c7a Mon Sep 17 00:00:00 2001 From: stigus Date: Fri, 21 Jun 2024 10:20:55 +0200 Subject: [PATCH 004/161] Liten name fix #deploy-levende-arbeidsforhold-service --- .github/workflows/app.levende-arbeidsforhold-service.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/app.levende-arbeidsforhold-service.yml b/.github/workflows/app.levende-arbeidsforhold-service.yml index aa2760335f8..edeb307b167 100644 --- a/.github/workflows/app.levende-arbeidsforhold-service.yml +++ b/.github/workflows/app.levende-arbeidsforhold-service.yml @@ -1,4 +1,4 @@ -name: miljoer-service +name: levende-arbeidsforhold-service on: push: From 894f1b0c12db4e31acd03fee3315ef33addafb2b Mon Sep 17 00:00:00 2001 From: stigus Date: Fri, 21 Jun 2024 10:32:05 +0200 Subject: [PATCH 005/161] Revertert endringer i generer-navn-service #deploy-levende-arbeidsforhold-service --- .../GenererNavnServiceApplicationStarter.java | 2 +- .../config/ApplicationConfig.java | 2 +- .../config/DevConfig.java | 2 +- .../config/OpenApiConfig.java | 2 +- .../config/SecurityConfig.java | 2 +- .../provider/GenerateNavnController.java | 6 +++--- .../service/FileReader.java | 2 +- .../service/GenerateNavnService.java | 2 +- .../service/VerifyNavnService.java | 2 +- .../ApplicationContextTest.java | 2 +- .../service/FileReaderTest.java | 3 +-- .../service/GenerateNavnServiceTest.java | 3 +-- .../service/VerifyNavnServiceTest.java | 3 +-- 13 files changed, 15 insertions(+), 18 deletions(-) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavn => generernavnservice}/GenererNavnServiceApplicationStarter.java (86%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavn => generernavnservice}/config/ApplicationConfig.java (87%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavn => generernavnservice}/config/DevConfig.java (95%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavn => generernavnservice}/config/OpenApiConfig.java (97%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavn => generernavnservice}/config/SecurityConfig.java (96%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavn => generernavnservice}/provider/GenerateNavnController.java (85%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavn => generernavnservice}/service/FileReader.java (93%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavn => generernavnservice}/service/GenerateNavnService.java (95%) rename apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/{generernavn => generernavnservice}/service/VerifyNavnService.java (95%) rename apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavnservice}/ApplicationContextTest.java (89%) rename apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavnservice}/service/FileReaderTest.java (87%) rename apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavnservice}/service/GenerateNavnServiceTest.java (83%) rename apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/{levendearbeidsforhold => generernavnservice}/service/VerifyNavnServiceTest.java (92%) diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/GenererNavnServiceApplicationStarter.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/GenererNavnServiceApplicationStarter.java similarity index 86% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/GenererNavnServiceApplicationStarter.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/GenererNavnServiceApplicationStarter.java index bbb163c9912..0580485b5ad 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/GenererNavnServiceApplicationStarter.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/GenererNavnServiceApplicationStarter.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavn; +package no.nav.registre.testnorge.generernavnservice; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/ApplicationConfig.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/ApplicationConfig.java similarity index 87% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/ApplicationConfig.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/ApplicationConfig.java index d022a172bc0..9a2dba21455 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/ApplicationConfig.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/ApplicationConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavn.config; +package no.nav.registre.testnorge.generernavnservice.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/DevConfig.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/DevConfig.java similarity index 95% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/DevConfig.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/DevConfig.java index da58eca6075..bb204187a9f 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/DevConfig.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/DevConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavn.config; +package no.nav.registre.testnorge.generernavnservice.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/OpenApiConfig.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/OpenApiConfig.java similarity index 97% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/OpenApiConfig.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/OpenApiConfig.java index fc3ee353342..a28df4ddafe 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/OpenApiConfig.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/OpenApiConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavn.config; +package no.nav.registre.testnorge.generernavnservice.config; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/SecurityConfig.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/SecurityConfig.java similarity index 96% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/SecurityConfig.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/SecurityConfig.java index 6ac28f4bb1e..7666c1c71e7 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/config/SecurityConfig.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/config/SecurityConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavn.config; +package no.nav.registre.testnorge.generernavnservice.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/provider/GenerateNavnController.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/provider/GenerateNavnController.java similarity index 85% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/provider/GenerateNavnController.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/provider/GenerateNavnController.java index d56ad5a11bd..aed3fa2e462 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/provider/GenerateNavnController.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/provider/GenerateNavnController.java @@ -1,9 +1,9 @@ -package no.nav.registre.testnorge.generernavn.provider; +package no.nav.registre.testnorge.generernavnservice.provider; import io.swagger.v3.oas.annotations.media.Schema; import lombok.RequiredArgsConstructor; -import no.nav.registre.testnorge.generernavn.service.GenerateNavnService; -import no.nav.registre.testnorge.generernavn.service.VerifyNavnService; +import no.nav.registre.testnorge.generernavnservice.service.GenerateNavnService; +import no.nav.registre.testnorge.generernavnservice.service.VerifyNavnService; import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/FileReader.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/FileReader.java similarity index 93% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/FileReader.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/FileReader.java index 1f610cc2862..d96e0f9ed11 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/FileReader.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/FileReader.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavn.service; +package no.nav.registre.testnorge.generernavnservice.service; import lombok.NoArgsConstructor; import lombok.SneakyThrows; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/GenerateNavnService.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/GenerateNavnService.java similarity index 95% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/GenerateNavnService.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/GenerateNavnService.java index 9766f455c1f..59772a67026 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/GenerateNavnService.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/GenerateNavnService.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavn.service; +package no.nav.registre.testnorge.generernavnservice.service; import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; import org.springframework.stereotype.Service; diff --git a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/VerifyNavnService.java b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/VerifyNavnService.java similarity index 95% rename from apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/VerifyNavnService.java rename to apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/VerifyNavnService.java index 902b9146af1..9b37262bb47 100644 --- a/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavn/service/VerifyNavnService.java +++ b/apps/generer-navn-service/src/main/java/no/nav/registre/testnorge/generernavnservice/service/VerifyNavnService.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.generernavn.service; +package no.nav.registre.testnorge.generernavnservice.service; import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; import org.springframework.stereotype.Service; diff --git a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/ApplicationContextTest.java similarity index 89% rename from apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java rename to apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/ApplicationContextTest.java index 4c6f896873e..054bfe6bd61 100644 --- a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java +++ b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/ApplicationContextTest.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold; +package no.nav.registre.testnorge.generernavnservice; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; diff --git a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/FileReaderTest.java similarity index 87% rename from apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java rename to apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/FileReaderTest.java index 455e417f858..e33435307be 100644 --- a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java +++ b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/FileReaderTest.java @@ -1,9 +1,8 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; +package no.nav.registre.testnorge.generernavnservice.service; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; -import no.nav.registre.testnorge.generernavn.service.FileReader; import org.junit.jupiter.api.Test; import java.io.IOException; diff --git a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/GenerateNavnServiceTest.java similarity index 83% rename from apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java rename to apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/GenerateNavnServiceTest.java index 03929dedc04..386ab347ee0 100644 --- a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java +++ b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/GenerateNavnServiceTest.java @@ -1,6 +1,5 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; +package no.nav.registre.testnorge.generernavnservice.service; -import no.nav.registre.testnorge.generernavn.service.GenerateNavnService; import org.junit.jupiter.api.Test; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; diff --git a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/VerifyNavnServiceTest.java similarity index 92% rename from apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java rename to apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/VerifyNavnServiceTest.java index a042c847f55..5a0ffcdf63b 100644 --- a/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java +++ b/apps/generer-navn-service/src/test/java/no/nav/registre/testnorge/generernavnservice/service/VerifyNavnServiceTest.java @@ -1,6 +1,5 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; +package no.nav.registre.testnorge.generernavnservice.service; -import no.nav.registre.testnorge.generernavn.service.VerifyNavnService; import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; import org.junit.jupiter.api.Test; From 47b9e2fd042c0b7817b8dfd13ecfc614c99e7b27 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Fri, 21 Jun 2024 13:55:12 +0200 Subject: [PATCH 006/161] #deploy-levende-arbeidsforhold-service --- apps/levende-arbeidsforhold-service/build.gradle | 4 ++-- apps/levende-arbeidsforhold-service/config.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle index 7d0da904ed8..0d145a01608 100644 --- a/apps/levende-arbeidsforhold-service/build.gradle +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -19,8 +19,8 @@ sonarqube { property "sonar.token", System.getenv("SONAR_TOKEN") property "sonar.organization", "navikt" property "sonar.project.monorepo.enabled", true - property "sonar.projectKey", "testnav-generer-navn-service" - property "sonar.projectName", "testnav-generer-navn-service" + property "sonar.projectKey", "testnav-levende-arbeidsforhold-service" + property "sonar.projectName", "testnav-levende-arbeidsforhold-service" property "sonar.sourceEncoding", "UTF-8" } } diff --git a/apps/levende-arbeidsforhold-service/config.yml b/apps/levende-arbeidsforhold-service/config.yml index aaf3f0f87d4..6385825c53f 100644 --- a/apps/levende-arbeidsforhold-service/config.yml +++ b/apps/levende-arbeidsforhold-service/config.yml @@ -55,4 +55,4 @@ spec: limits: memory: 2048Mi ingresses: - - "https://generer-navn-service.intern.dev.nav.no" + - "https://levende-arbeidsforhold-service.intern.dev.nav.no" From dc528e89d0469a4f88991ef3a8f41039f81e7fc8 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Mon, 24 Jun 2024 08:58:52 +0200 Subject: [PATCH 007/161] test tilgang --- apps/levende-arbeidsforhold-service/build.gradle | 1 + .../levendearbeidsforhold/provider/GenerateNavnController.java | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle index 0d145a01608..e3a213ee3ec 100644 --- a/apps/levende-arbeidsforhold-service/build.gradle +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -4,6 +4,7 @@ plugins { id 'org.springframework.boot' version "3.2.6" id 'io.spring.dependency-management' version "1.1.5" id "jacoco" + id "com.gradle.develocity" version "3.17.4" } test { diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java index 99d3014eb0c..a95a7f1a43e 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java @@ -26,7 +26,6 @@ public class GenerateNavnController { public List generateName( @RequestParam(required = false, defaultValue = "10") Integer antall, @RequestParam(required = false) Long seed) { - return generateNavnService.getRandomNavn(seed, antall); } From 01e805853834f0bca20c5ff3d12fe8fbfbfef236 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Fri, 21 Jun 2024 15:51:34 +0200 Subject: [PATCH 008/161] =?UTF-8?q?Fungerer=20=C3=A5=20kj=C3=B8re=20lokalt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 4 ---- .../examples/reactiverestexample/repository/CarEntity.java | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index e0afedb755c..7d653da8255 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -14,10 +14,6 @@ spring: issuer-uri: ${AAD_ISSUER_URI}/v2.0 jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} - tokenx: - issuer-uri: ${TOKEN_X_ISSUER} - jwk-set-uri: ${TOKEN_X_JWKS_URI} - accepted-audience: ${TOKEN_X_CLIENT_ID} cloud: vault: enabled: false diff --git a/examples/reactive-rest-example/src/main/java/no/nav/testnav/examples/reactiverestexample/repository/CarEntity.java b/examples/reactive-rest-example/src/main/java/no/nav/testnav/examples/reactiverestexample/repository/CarEntity.java index ee096aed4dd..dda3cadb6d7 100644 --- a/examples/reactive-rest-example/src/main/java/no/nav/testnav/examples/reactiverestexample/repository/CarEntity.java +++ b/examples/reactive-rest-example/src/main/java/no/nav/testnav/examples/reactiverestexample/repository/CarEntity.java @@ -49,3 +49,5 @@ public boolean isNew() { + + From bce80648f59f67b76e699b91c5086c03e052673c Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 24 Jun 2024 14:01:55 +0200 Subject: [PATCH 009/161] Fjernet develocity --- apps/levende-arbeidsforhold-service/build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle index e3a213ee3ec..0d145a01608 100644 --- a/apps/levende-arbeidsforhold-service/build.gradle +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -4,7 +4,6 @@ plugins { id 'org.springframework.boot' version "3.2.6" id 'io.spring.dependency-management' version "1.1.5" id "jacoco" - id "com.gradle.develocity" version "3.17.4" } test { From 5881a965d17ecf4b44cd54464a791357807779a8 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 24 Jun 2024 14:05:40 +0200 Subject: [PATCH 010/161] renamet applikasjonen --- ...va => LevendeArbeidsforholdServiceApplicationStarter.java} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/{GenererNavnServiceApplicationStarter.java => LevendeArbeidsforholdServiceApplicationStarter.java} (62%) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java similarity index 62% rename from apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java rename to apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java index f563e06da7d..7ccaab48965 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/GenererNavnServiceApplicationStarter.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java @@ -4,9 +4,9 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class GenererNavnServiceApplicationStarter { +public class LevendeArbeidsforholdServiceApplicationStarter { public static void main(String[] args) { - SpringApplication.run(GenererNavnServiceApplicationStarter.class, args); + SpringApplication.run(LevendeArbeidsforholdServiceApplicationStarter.class, args); } } From 57ae028ceae6dc010612f062681693a17499abb1 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 24 Jun 2024 14:26:29 +0200 Subject: [PATCH 011/161] Lagt til KafkaConfig.java --- .../config/KafkaConfig.java | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java new file mode 100644 index 00000000000..2d2dffed095 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java @@ -0,0 +1,93 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.config; + + +import io.confluent.kafka.serializers.AbstractKafkaSchemaSerDeConfig; +import io.confluent.kafka.serializers.KafkaAvroDeserializer; +import io.confluent.kafka.serializers.KafkaAvroDeserializerConfig; +import lombok.extern.slf4j.Slf4j; +//import no.nav.registre.testnorge.organisasjonmottak.service.ShutdownService; +import org.apache.kafka.clients.CommonClientConfigs; +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.common.config.SslConfigs; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Profile; +import org.springframework.kafka.annotation.EnableKafka; +import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; +import org.springframework.kafka.core.ConsumerFactory; +import org.springframework.kafka.core.DefaultKafkaConsumerFactory; +import org.springframework.kafka.listener.CommonLoggingErrorHandler; +import org.springframework.stereotype.Component; + +import java.net.InetSocketAddress; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@EnableKafka +@Component +@Profile("dev") +public class KafkaConfig { + + private final String groupId; + //private final ShutdownService shutdownService; + + public KafkaConfig(@Value("${kafka.groupid}") String groupId) {//, ShutdownService shutdownService + this.groupId = groupId; + //this.shutdownService = shutdownService; + } + + public ConsumerFactory consumerFactory() { + InetSocketAddress inetSocketAddress = new InetSocketAddress(0); + Map props = new HashMap<>(); + props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, System.getenv("KAFKA_BROKERS")); + props.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, System.getenv("KAFKA_KEYSTORE_PATH")); + props.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, System.getenv("KAFKA_CREDSTORE_PASSWORD")); + props.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, System.getenv("KAFKA_TRUSTSTORE_PATH")); + props.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, System.getenv("KAFKA_CREDSTORE_PASSWORD")); + props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SSL"); + props.put(KafkaAvroDeserializerConfig.SPECIFIC_AVRO_READER_CONFIG, true); + + props.put(AbstractKafkaSchemaSerDeConfig.BASIC_AUTH_CREDENTIALS_SOURCE, "USER_INFO"); + var username = System.getenv("KAFKA_SCHEMA_REGISTRY_USER"); + var password = System.getenv("KAFKA_SCHEMA_REGISTRY_PASSWORD"); + + props.put(AbstractKafkaSchemaSerDeConfig.USER_INFO_CONFIG, username + ":" + password); + props.put(AbstractKafkaSchemaSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, System.getenv("KAFKA_SCHEMA_REGISTRY")); + + props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId); + props.put(ConsumerConfig.CLIENT_ID_CONFIG, groupId + inetSocketAddress.getHostString()); + props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, true); + props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest"); + props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); + props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 1000 * 60 * 10); + props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class); + + return new DefaultKafkaConsumerFactory<>(props); + } + + @Bean + public ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory() { + + ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory<>(); + var consumerFactory = consumerFactory(); + consumerFactory.addListener(new ConsumerFactory.Listener<>() { + @Override + public void consumerAdded(String id, Consumer consumer) { + log.info("Legger til consumer med id: {}", id); + } + + @Override + public void consumerRemoved(String id, Consumer consumer) { + log.warn("Fjerner consumer med id: {}. Restarter app...", id); + //shutdownService.initiateShutdown(0); + } + }); + factory.setBatchListener(true); + factory.setConsumerFactory(consumerFactory); + factory.setCommonErrorHandler(new CommonLoggingErrorHandler()); + return factory; + } +} \ No newline at end of file From e7c0ddfa14bd36c35b7e1093d62f87b7601d83c3 Mon Sep 17 00:00:00 2001 From: "Martine.Erdal.Mansaker" Date: Mon, 24 Jun 2024 14:30:16 +0200 Subject: [PATCH 012/161] Test tilgang --- apps/levende-arbeidsforhold-service/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/README.md b/apps/levende-arbeidsforhold-service/README.md index 515c7b126c4..8f4c27a0910 100644 --- a/apps/levende-arbeidsforhold-service/README.md +++ b/apps/levende-arbeidsforhold-service/README.md @@ -1,6 +1,6 @@ # Levende arbeidsforhold-service -Fyll inn +Fyll inn: ## Swagger From bbf8f669d61df797a4b62c9eba9b4b39c814837d Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 24 Jun 2024 14:47:46 +0200 Subject: [PATCH 013/161] Lagt til kafke implementation --- apps/levende-arbeidsforhold-service/build.gradle | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle index 0d145a01608..dab9e0089ba 100644 --- a/apps/levende-arbeidsforhold-service/build.gradle +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -68,6 +68,21 @@ dependencies { implementation 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' + + implementation 'no.nav.testnav.libs:kafka-config' + implementation 'org.apache.kafka:kafka-clients:3.7.0' + implementation 'io.confluent:kafka-avro-serializer:7.5.1' + implementation 'org.springframework.kafka:spring-kafka' + + implementation 'no.nav.testnav.libs:avro-schema' + implementation 'no.nav.testnav.libs:commands' + implementation 'no.nav.testnav.libs:data-transfer-objects' + implementation 'no.nav.testnav.libs:kafka-config' + implementation 'no.nav.testnav.libs:kafka-producers' + implementation 'no.nav.testnav.libs:reactive-core' + implementation 'no.nav.testnav.libs:security-core' + implementation 'no.nav.testnav.libs:servlet-core' + implementation 'no.nav.testnav.libs:servlet-insecure-security' } java { toolchain { From e5b8a8df091d14f2ae9191ee8e5310417e3aea86 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 24 Jun 2024 15:17:47 +0200 Subject: [PATCH 014/161] Lagt til kafke implementationLagt til settings --- apps/levende-arbeidsforhold-service/build.gradle | 2 +- apps/levende-arbeidsforhold-service/config.yml | 2 +- apps/levende-arbeidsforhold-service/settings.gradle | 3 ++- .../src/main/resources/application.yml | 2 +- settings.gradle | 1 + 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle index dab9e0089ba..6b20ab6d99f 100644 --- a/apps/levende-arbeidsforhold-service/build.gradle +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -40,7 +40,7 @@ repositories { mavenLocal() } dependencies { - + implementation "no.nav.testnav.libs:kafka-config" implementation 'no.nav.testnav.libs:security-core' implementation 'no.nav.testnav.libs:servlet-core' implementation 'no.nav.testnav.libs:commands' diff --git a/apps/levende-arbeidsforhold-service/config.yml b/apps/levende-arbeidsforhold-service/config.yml index 6385825c53f..dc4aadb79bd 100644 --- a/apps/levende-arbeidsforhold-service/config.yml +++ b/apps/levende-arbeidsforhold-service/config.yml @@ -1,7 +1,7 @@ apiVersion: "nais.io/v1alpha1" kind: "Application" metadata: - name: levende-arbeidsforhold-service + name: testnav-levende-arbeidsforhold-service namespace: dolly labels: team: dolly diff --git a/apps/levende-arbeidsforhold-service/settings.gradle b/apps/levende-arbeidsforhold-service/settings.gradle index 8f0c233f883..ac4aff482cb 100644 --- a/apps/levende-arbeidsforhold-service/settings.gradle +++ b/apps/levende-arbeidsforhold-service/settings.gradle @@ -2,8 +2,9 @@ plugins { id "com.gradle.develocity" version "3.17.4" } -rootProject.name = 'levende-arbeidsforhold-service' +rootProject.name = 'testnav-levende-arbeidsforhold-service' +includeBuild "../../libs/kafka-config" includeBuild '../../libs/security-core' includeBuild '../../libs/servlet-core' includeBuild '../../libs/commands' diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 7d653da8255..476e865beb7 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -4,7 +4,7 @@ spring: main: banner-mode: off application: - name: levende-arbeidsforhold-service + name: testnav-levende-arbeidsforhold-service version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle description: App for å hente PDL personer. security: diff --git a/settings.gradle b/settings.gradle index 461c0ca2bdd..a0573fe3cfb 100644 --- a/settings.gradle +++ b/settings.gradle @@ -125,6 +125,7 @@ includeBuild './apps/udi-stub' includeBuild './apps/varslinger-service' includeBuild './apps/dollystatus' includeBuild './apps/skattekort-service' +includeBuild "./apps/levende-arbeidsforhold-service" includeBuild './xsd/arbeidsforhold-xsd' From 5b73bd8140f63f68572f9d095c53f84815880b5b Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 25 Jun 2024 11:48:20 +0200 Subject: [PATCH 015/161] Kommentert ut // implementation 'io.confluent:kafka-avro-serializer:7.5.1' i build.gradle --- apps/levende-arbeidsforhold-service/build.gradle | 1 - apps/organisasjon-mottak-service/build.gradle | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle index 6b20ab6d99f..0692065f568 100644 --- a/apps/levende-arbeidsforhold-service/build.gradle +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -78,7 +78,6 @@ dependencies { implementation 'no.nav.testnav.libs:commands' implementation 'no.nav.testnav.libs:data-transfer-objects' implementation 'no.nav.testnav.libs:kafka-config' - implementation 'no.nav.testnav.libs:kafka-producers' implementation 'no.nav.testnav.libs:reactive-core' implementation 'no.nav.testnav.libs:security-core' implementation 'no.nav.testnav.libs:servlet-core' diff --git a/apps/organisasjon-mottak-service/build.gradle b/apps/organisasjon-mottak-service/build.gradle index c2bbd7c2a80..f1be04bb3f9 100644 --- a/apps/organisasjon-mottak-service/build.gradle +++ b/apps/organisasjon-mottak-service/build.gradle @@ -70,7 +70,7 @@ dependencies { implementation 'org.hibernate.validator:hibernate-validator' implementation 'org.springframework.kafka:spring-kafka' implementation 'org.apache.kafka:kafka-clients:3.7.0' - implementation 'io.confluent:kafka-avro-serializer:7.5.1' +// implementation 'io.confluent:kafka-avro-serializer:7.5.1' implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' implementation 'net.logstash.logback:logstash-logback-encoder:7.4' From 15b2851dc48e11a696c5c79153c56c238240d553 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 25 Jun 2024 11:52:57 +0200 Subject: [PATCH 016/161] Kommentert ut // implementation 'io.confluent:kafka-avro-serializer:7.5.1' i build.gradle --- apps/levende-arbeidsforhold-service/build.gradle | 2 +- apps/organisasjon-mottak-service/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle index 0692065f568..d919b3d47be 100644 --- a/apps/levende-arbeidsforhold-service/build.gradle +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -71,7 +71,7 @@ dependencies { implementation 'no.nav.testnav.libs:kafka-config' implementation 'org.apache.kafka:kafka-clients:3.7.0' - implementation 'io.confluent:kafka-avro-serializer:7.5.1' +// implementation 'io.confluent:kafka-avro-serializer:7.5.1' implementation 'org.springframework.kafka:spring-kafka' implementation 'no.nav.testnav.libs:avro-schema' diff --git a/apps/organisasjon-mottak-service/build.gradle b/apps/organisasjon-mottak-service/build.gradle index f1be04bb3f9..c2bbd7c2a80 100644 --- a/apps/organisasjon-mottak-service/build.gradle +++ b/apps/organisasjon-mottak-service/build.gradle @@ -70,7 +70,7 @@ dependencies { implementation 'org.hibernate.validator:hibernate-validator' implementation 'org.springframework.kafka:spring-kafka' implementation 'org.apache.kafka:kafka-clients:3.7.0' -// implementation 'io.confluent:kafka-avro-serializer:7.5.1' + implementation 'io.confluent:kafka-avro-serializer:7.5.1' implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' implementation 'net.logstash.logback:logstash-logback-encoder:7.4' From 3d54d5ac5ada9776be10da06c9de24407903b8ab Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 25 Jun 2024 13:06:21 +0200 Subject: [PATCH 017/161] Fungerer --- apps/levende-arbeidsforhold-service/build.gradle | 6 +++++- settings.gradle | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle index d919b3d47be..afe41ae2b84 100644 --- a/apps/levende-arbeidsforhold-service/build.gradle +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -38,6 +38,10 @@ dependencyManagement { repositories { mavenCentral() mavenLocal() + maven { + url = uri('https://packages.confluent.io/maven/') + } + } dependencies { implementation "no.nav.testnav.libs:kafka-config" @@ -71,7 +75,7 @@ dependencies { implementation 'no.nav.testnav.libs:kafka-config' implementation 'org.apache.kafka:kafka-clients:3.7.0' -// implementation 'io.confluent:kafka-avro-serializer:7.5.1' + implementation 'io.confluent:kafka-avro-serializer:7.6.0' implementation 'org.springframework.kafka:spring-kafka' implementation 'no.nav.testnav.libs:avro-schema' diff --git a/settings.gradle b/settings.gradle index a0573fe3cfb..6b5d3def7de 100644 --- a/settings.gradle +++ b/settings.gradle @@ -125,7 +125,7 @@ includeBuild './apps/udi-stub' includeBuild './apps/varslinger-service' includeBuild './apps/dollystatus' includeBuild './apps/skattekort-service' -includeBuild "./apps/levende-arbeidsforhold-service" +includeBuild './apps/levende-arbeidsforhold-service' includeBuild './xsd/arbeidsforhold-xsd' From 153660f5218d2be5f5c55334ea0ece1ab8690251 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 25 Jun 2024 13:44:35 +0200 Subject: [PATCH 018/161] FUNGERER --- apps/levende-arbeidsforhold-service/build.gradle | 2 -- apps/levende-arbeidsforhold-service/settings.gradle | 1 + .../LevendeArbeidsforholdServiceApplicationStarter.java | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle index afe41ae2b84..8ebe23fb15c 100644 --- a/apps/levende-arbeidsforhold-service/build.gradle +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -82,10 +82,8 @@ dependencies { implementation 'no.nav.testnav.libs:commands' implementation 'no.nav.testnav.libs:data-transfer-objects' implementation 'no.nav.testnav.libs:kafka-config' - implementation 'no.nav.testnav.libs:reactive-core' implementation 'no.nav.testnav.libs:security-core' implementation 'no.nav.testnav.libs:servlet-core' - implementation 'no.nav.testnav.libs:servlet-insecure-security' } java { toolchain { diff --git a/apps/levende-arbeidsforhold-service/settings.gradle b/apps/levende-arbeidsforhold-service/settings.gradle index ac4aff482cb..86447219874 100644 --- a/apps/levende-arbeidsforhold-service/settings.gradle +++ b/apps/levende-arbeidsforhold-service/settings.gradle @@ -5,6 +5,7 @@ plugins { rootProject.name = 'testnav-levende-arbeidsforhold-service' includeBuild "../../libs/kafka-config" +includeBuild "../../libs/avro-schema" includeBuild '../../libs/security-core' includeBuild '../../libs/servlet-core' includeBuild '../../libs/commands' diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java index 7ccaab48965..a389e554613 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java @@ -6,7 +6,6 @@ @SpringBootApplication public class LevendeArbeidsforholdServiceApplicationStarter { public static void main(String[] args) { - SpringApplication.run(LevendeArbeidsforholdServiceApplicationStarter.class, args); } } From 566aaa05cf178fe69560c25072a2051830b016e1 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 25 Jun 2024 15:00:38 +0200 Subject: [PATCH 019/161] #deploy-levende-arbeidsforhold-service --- .../testnorge/levendearbeidsforhold/config/DevConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java index 4cbc3adb649..a5b2cad3c88 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java @@ -31,6 +31,6 @@ public ClientAuthentication clientAuthentication() { if (isBlank(token)) { throw new IllegalArgumentException("Påkrevet property 'spring.cloud.vault.token' er ikke satt."); } - return new TokenAuthentication(System.getProperty(VAULT_TOKEN)); + return new TokenAuthentication(System.getProperty(VAULT_TOKEN)); } } \ No newline at end of file From baf45957f3960e20fb3e6a306fea6ea43adafc65 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 25 Jun 2024 15:40:08 +0200 Subject: [PATCH 020/161] #deploy-levende-arbeidsforhold-service --- .../LevendeArbeidsforholdServiceApplicationStarter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java index a389e554613..80ecdce682f 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java @@ -8,4 +8,4 @@ public class LevendeArbeidsforholdServiceApplicationStarter { public static void main(String[] args) { SpringApplication.run(LevendeArbeidsforholdServiceApplicationStarter.class, args); } -} +} \ No newline at end of file From 242aa344afbc4bc4e66b965491e00900dc3683ec Mon Sep 17 00:00:00 2001 From: "Martine.Erdal.Mansaker" Date: Wed, 26 Jun 2024 12:16:19 +0200 Subject: [PATCH 021/161] Fjerne ubrukt kode fra template --- apps/levende-arbeidsforhold-service/build.gradle | 2 +- apps/levende-arbeidsforhold-service/config.yml | 14 ++------------ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle index 8ebe23fb15c..761bd0fb00d 100644 --- a/apps/levende-arbeidsforhold-service/build.gradle +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -41,8 +41,8 @@ repositories { maven { url = uri('https://packages.confluent.io/maven/') } - } + dependencies { implementation "no.nav.testnav.libs:kafka-config" implementation 'no.nav.testnav.libs:security-core' diff --git a/apps/levende-arbeidsforhold-service/config.yml b/apps/levende-arbeidsforhold-service/config.yml index dc4aadb79bd..22743892dfd 100644 --- a/apps/levende-arbeidsforhold-service/config.yml +++ b/apps/levende-arbeidsforhold-service/config.yml @@ -13,20 +13,8 @@ spec: rules: - application: team-dolly-lokal-app cluster: dev-gcp - - application: testnav-organisasjon-forvalter - cluster: dev-gcp - - application: testnav-pdl-forvalter - cluster: dev-gcp - - application: testnav-pdl-forvalter-dev - cluster: dev-gcp - application: testnav-oversikt-frontend cluster: dev-gcp - - application: dolly-backend - cluster: dev-gcp - - application: dolly-frontend - cluster: dev-gcp - tokenx: - enabled: true azure: application: allowAllUsers: true @@ -54,5 +42,7 @@ spec: memory: 1024Mi limits: memory: 2048Mi + kafka: + pool: nav-dev ingresses: - "https://levende-arbeidsforhold-service.intern.dev.nav.no" From 6886157aef1de3a7bc53384dd8aeb2178f43e5ff Mon Sep 17 00:00:00 2001 From: "Martine.Erdal.Mansaker" Date: Wed, 26 Jun 2024 13:27:14 +0200 Subject: [PATCH 022/161] =?UTF-8?q?Start=20p=C3=A5=20=C3=A5=20hente=20PDL?= =?UTF-8?q?=20hendelser?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/PDLHendelse.java | 60 +++++++++++++++++++ .../listener/DoedsfallListener.java | 22 +++++++ 2 files changed, 82 insertions(+) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/PDLHendelse.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/PDLHendelse.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/PDLHendelse.java new file mode 100644 index 00000000000..bfb18af6eb6 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/PDLHendelse.java @@ -0,0 +1,60 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain; + +public class PDLHendelse { + private String folkeregisteridentifikator; + private String hendelsetype; + private String hendelsesdokument; + private String persondokument; + private String ajourholdstidspunkt; + + public PDLHendelse() { + } + + public PDLHendelse(String folkeregisteridentifikator, String hendelsetype, String hendelsesdokument, String persondokument, String ajourholdstidspunkt) { + this.folkeregisteridentifikator = folkeregisteridentifikator; + this.hendelsetype = hendelsetype; + this.hendelsesdokument = hendelsesdokument; + this.persondokument = persondokument; + this.ajourholdstidspunkt = ajourholdstidspunkt; + } + + public String getFolkeregisteridentifikator() { + return folkeregisteridentifikator; + } + + public void setFolkeregisteridentifikator(String folkeregisteridentifikator) { + this.folkeregisteridentifikator = folkeregisteridentifikator; + } + + public String getHendelsetype() { + return hendelsetype; + } + + public void setHendelsetype(String hendelsetype) { + this.hendelsetype = hendelsetype; + } + + public String getHendelsesdokument() { + return hendelsesdokument; + } + + public void setHendelsesdokument(String hendelsesdokument) { + this.hendelsesdokument = hendelsesdokument; + } + + public String getPersondokument() { + return persondokument; + } + + public void setPersondokument(String persondokument) { + this.persondokument = persondokument; + } + + public String getAjourholdstidspunkt() { + return ajourholdstidspunkt; + } + + public void setAjourholdstidspunkt(String ajourholdstidspunkt) { + this.ajourholdstidspunkt = ajourholdstidspunkt; + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java new file mode 100644 index 00000000000..419ae6d06f3 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -0,0 +1,22 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.listener; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Profile; +import org.springframework.kafka.annotation.KafkaListener; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Slf4j +@Profile("dev") +@Component +@RequiredArgsConstructor +public class DoedsfallListener { + private static final String doedsfallTopic = "pdl.leesah-v1"; + + @KafkaListener(topics = doedsfallTopic) + public void getHendelser() { + + } +} From 85a0a53eb7847e1b61210a4d938cbb6f3ae397ee Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Wed, 26 Jun 2024 14:00:59 +0200 Subject: [PATCH 023/161] Slettet ting som var til generer navn service --- .../listener/DoedsfallListener.java | 17 +- .../provider/GenerateNavnController.java | 38 - .../service/FileReader.java | 32 - .../service/GenerateNavnService.java | 33 - .../service/VerifyNavnService.java | 33 - .../src/main/resources/static/adjektiv.csv | 603 ------- .../src/main/resources/static/adverb.csv | 64 - .../src/main/resources/static/substantiv.csv | 1598 ----------------- .../service/FileReaderTest.java | 31 - .../service/GenerateNavnServiceTest.java | 27 - .../service/VerifyNavnServiceTest.java | 46 - .../src/test/resources/static/test.csv | 3 - 12 files changed, 16 insertions(+), 2509 deletions(-) delete mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java delete mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java delete mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java delete mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java delete mode 100644 apps/levende-arbeidsforhold-service/src/main/resources/static/adjektiv.csv delete mode 100644 apps/levende-arbeidsforhold-service/src/main/resources/static/adverb.csv delete mode 100644 apps/levende-arbeidsforhold-service/src/main/resources/static/substantiv.csv delete mode 100644 apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java delete mode 100644 apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java delete mode 100644 apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java delete mode 100644 apps/levende-arbeidsforhold-service/src/test/resources/static/test.csv diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 419ae6d06f3..e01276b98d3 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -2,11 +2,18 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import no.nav.testnav.libs.avro.organisasjon.v1.Opprettelsesdokument; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.slf4j.Logger; +import org.slf4j.LoggerFactoryFriend; import org.springframework.context.annotation.Profile; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; +import no.nav.registre.testnorge.levendearbeidsforhold.config.KafkaConfig; import java.util.List; +import java.util.function.Supplier; +import java.util.stream.Collectors; @Slf4j @Profile("dev") @@ -16,7 +23,15 @@ public class DoedsfallListener { private static final String doedsfallTopic = "pdl.leesah-v1"; @KafkaListener(topics = doedsfallTopic) - public void getHendelser() { + public void getHendelser(List> records) { + System.out.println(records.stream().collect().toList()); + /* + records.stream().collect(Collectors.groupingBy(value -> value.value().getMetadata().getMiljo())).forEach((miljo, list) -> { + var organisasjoner = list.stream().map(value -> value.value().getOrganisasjon()).collect(Collectors.toList()); + var ids = list.stream().map(ConsumerRecord::key).collect(Collectors.toSet()); + save(organisasjoner, miljo, false, ids); + }); + */ } } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java deleted file mode 100644 index a95a7f1a43e..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/GenerateNavnController.java +++ /dev/null @@ -1,38 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.provider; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.RequiredArgsConstructor; -import no.nav.registre.testnorge.levendearbeidsforhold.service.GenerateNavnService; -import no.nav.registre.testnorge.levendearbeidsforhold.service.VerifyNavnService; -import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -@RestController -@RequestMapping("/api/v1/navn") -@RequiredArgsConstructor -public class GenerateNavnController { - - private final GenerateNavnService generateNavnService; - private final VerifyNavnService verifyNavnService; - - @GetMapping - public List generateName( - @RequestParam(required = false, defaultValue = "10") Integer antall, - @RequestParam(required = false) Long seed) { - return generateNavnService.getRandomNavn(seed, antall); - } - - @PostMapping("/check") - @Schema(description = "Verifiser om navn finnes i liste over godkjente alternativer") - public boolean checkName(@RequestBody NavnDTO navn) { - - return verifyNavnService.verifyNavn(navn); - } -} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java deleted file mode 100644 index 251390dede6..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReader.java +++ /dev/null @@ -1,32 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; - -import lombok.NoArgsConstructor; -import lombok.SneakyThrows; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.List; - -@NoArgsConstructor(access = lombok.AccessLevel.PRIVATE) -class FileReader { - - @SneakyThrows - static List readLinesFromResources(String path) { - - try (var in = FileReader.class.getClassLoader().getResourceAsStream(path)) { - if (in == null) { - throw new IOException("Unable to find file " + path); - } - var reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); - var lines = new ArrayList(); - while (reader.ready()) { - lines.add(reader.readLine().trim()); - } - return lines; - } - } - -} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java deleted file mode 100644 index 6bb23da5f39..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnService.java +++ /dev/null @@ -1,33 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; - -import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; -import org.springframework.stereotype.Service; - -import java.security.SecureRandom; -import java.util.List; -import java.util.Random; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -@Service -public class GenerateNavnService { - private static final List ADJEKTIVER = FileReader.readLinesFromResources("static/adjektiv.csv"); - private static final List ADVERBER = FileReader.readLinesFromResources("static/adverb.csv"); - private static final List SUBSTANTIVER = FileReader.readLinesFromResources("static/substantiv.csv"); - - public List getRandomNavn(Long seed, Integer antall) { - var random = seed == null ? new SecureRandom() : new Random(seed); - return IntStream - .range(0, antall).boxed() - .map(navn -> NavnDTO.builder() - .adjektiv(toTitleCase(ADJEKTIVER.get(random.nextInt(ADJEKTIVER.size())))) - .adverb(toTitleCase(ADVERBER.get(random.nextInt(ADVERBER.size())))) - .substantiv(toTitleCase(SUBSTANTIVER.get(random.nextInt(SUBSTANTIVER.size())))) - .build()) - .collect(Collectors.toList()); - } - - private String toTitleCase(String value) { - return value.substring(0, 1).toUpperCase() + value.substring(1); - } -} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java deleted file mode 100644 index e0e2831878e..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnService.java +++ /dev/null @@ -1,33 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; - -import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; -import org.springframework.stereotype.Service; - -import java.util.Arrays; -import java.util.List; - -import static java.util.Objects.isNull; -import static org.apache.commons.lang3.StringUtils.isNotBlank; - -@Service -public class VerifyNavnService { - private static final List ADJEKTIVER = FileReader.readLinesFromResources("static/adjektiv.csv"); - private static final List ADVERBER = FileReader.readLinesFromResources("static/adverb.csv"); - private static final List SUBSTANTIVER = FileReader.readLinesFromResources("static/substantiv.csv"); - - public boolean verifyNavn(NavnDTO navnDTO) { - - var alleAdjektiv = navnDTO.getAdjektiv().split(" "); - var alleAdverb = isNotBlank(navnDTO.getAdverb()) ? navnDTO.getAdverb().split(" ") : new String[]{}; - var alleSubstantiv = navnDTO.getSubstantiv().split(" "); - - return Arrays.stream(alleAdjektiv).allMatch(adjektiv -> verify(adjektiv, ADJEKTIVER)) && - Arrays.stream(alleAdverb).allMatch(adverb -> verify(adverb, ADVERBER)) && - Arrays.stream(alleSubstantiv).allMatch(substantiv -> verify(substantiv, SUBSTANTIVER)); - } - - private static boolean verify(String value, List approvedValues) { - - return isNull(value) || approvedValues.stream().anyMatch(validValue -> validValue.equalsIgnoreCase(value)); - } -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/static/adjektiv.csv b/apps/levende-arbeidsforhold-service/src/main/resources/static/adjektiv.csv deleted file mode 100644 index 3053afe064a..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/resources/static/adjektiv.csv +++ /dev/null @@ -1,603 +0,0 @@ -akademisk -akrobatisk -akseptabel -aktiv -aktiv -aktuell -aktverdig -akustisk -akvatisk -alfabetisk -allmektig -allsidig -allslags -alminnelig -alternativ -alvorlig -anonym -anstendig -ansvarsfull -aritmetisk -artig -autentisk -autonom -autorisert -avansert -barmhjertig -begeistret -bemerkelsesverdig -berømt -beskjeden -bestemt -betydelig -bevisst -blaut -blid -blomstrete -bløt -bra -dedikert -deilig -demokratisk -direkte -diskret -distingvert -diverse -djerv -dobbel -dogmatisk -driftig -dyktig -dynamisk -dyp -dypsindig -dyr -dyrebar -effektiv -egoistisk -eksakt -eksemplarisk -eksplosiv -ekstra -ekte -elastisk -elegant -elektronisk -emosjonell -empatisk -empirisk -engasjert -enkel -entusiastisk -episk -erfaren -estetisk -etterpåklok -eventyrlig -evig -falsk -familiær -famøs -fantasifull -fantasiløs -fantastisk -farlig -fast -fattet -fattig -fersk -festlig -fiktiv -filosofisk -fin -fiolett -firkantet -fjång -flat -fleksibel -flink -flott -flyktig -fordekt -foretaksom -formbar -fornem -fornuftig -fornøyd -forsiktig -forskjellig -forstandig -forståelsesfull -fredelig -fredfull -freidig -frisk -from -fruktbar -fryktløs -fryktsom -fullkommen -funksjonell -fyldig -fysisk -genierklært -geometrisk -gild -gjennomsiktig -gjensidig -gjestfri -glad -glemsom -glovarm -glupsk -gnien -god -gratis -grei -gretten -grunn -grønn -grå -gul -gylden -gøyal -gåen -halv -handlekraftig -hardhudet -hel -heldig -hellig -hemmelighetsfull -hensiktsmessig -hensynsfull -hensynsløs -hes -hevngjerrig -historisk -horisontal -human -humoristisk -hurtig -husløs -hyggelig -håndfast -håndlaget -hårsår -idiotsikker -iherdig -impulsiv -initiativrik -inkonsekvent -innesluttet -innsiktsfull -integrert -intelligent -interessant -interessert -internasjonal -intrikat -intuitiv -ivrig -jordisk -jordnær -jovial -juridisk -justerbar -kald -kantete -kjent -kjær -kjærlig -klam -klar -klartenkt -klassisk -klok -klok -knuslete -kognitiv -komfortabel -komisk -kompatibel -kompetent -kompleks -komplett -komplisert -konge -konkret -konkurransedyktig -konsekvent -konsentrisk -konservativ -kontant -kontrollert -konvensjonell -korrekt -kort -kostbar -kreativ -kritisk -kry -kul -kulturell -kunnskapsrik -kunst -kunstig -kursiv -kvadratisk -kvart -lang -lattermild -lav -legitim -lei -lekker -lengre -lett -likegyldig -lilla -liten -litt -livlig -livsglad -logisk -lojal -lun -lydig -lykkelig -lys -lyseblå -lysegrønn -lysegul -lyselilla -lystig -løsningsorientert -mange -maritim -matematisk -matt -medgjørlig -melankolsk -mett -minimalistisk -misfornøyd -mobil -moderat -moderne -modig -momentan -moralsk -morsk -morsom -mosegrodd -motivert -motløs -motstandsdyktig -motvillig -munter -musikalsk -muskuløs -måteholden -naturlig -naturstridig -nesnødd -neste -nett -nonfigurativ -normal -ny -nybakt -nysgjerrig -nyttig -nær -nødvendig -nøytral -observant -offisiell -oksydert -omkommen -omsorgsfull -omtenksom -operativ -oppblåst -oppgitt -oppjaget -opplagt -opplyst -opprett -oppriktig -opprømt -oppstemt -optimistisk -oransje -oransje -ordentlig -ordinær -ordknapp -oriental -original -overeksponert -overfladisk -overflødig -overfølsom -overmodig -overnaturlig -oversiktlig -parat -parisk -parodisk -passiv -patent -pen -perfekt -personlig -pessimistisk -plutselig -pompøs -populær -positiv -possessiv -pragmatisk -praktisk -pratsom -presentabel -presis -prikkete -proaktiv -produktiv -punktlig -puslete -pussig -pålitelig -påpasselig -raffinert -rakrygget -rask -rastløs -ravgul -real -realistisk -redelig -refleksiv -rektangulær -relevant -ren -reservert -retorisk -rett -rettferdig -rik -riktig -rimelig -ring -risikabel -robust -rolig -romantisk -rosa -ru -rund -rusten -ryddig -rød -rørete -sakte -salig -salt -samarbeidsvillig -samlet -samtidig -sannferdig -sannsynlig -sart -sein -selvhjulpen -selvtilfreds -sensitiv -sentral -sigen -sikker -sindig -sist -sitrongul -sivilisert -sjelden -sjenert -sjokkert -skamfull -skeptisk -skjønn -skjør -skravlete -skrivefør -sky -skyfri -skånsom -slakk -slapp -slem -sliten -smal -smart -smidig -smul -snakkesalig -snar -snill -snål -sofistikert -solid -sorgløs -sosial -sped -spesiell -spesifikk -spettete -spiss -spontan -sta -stabil -stadig -standhaftig -sterk -stille -stolt -stor -storartet -straffet -streng -stridlynt -styrbar -støyfri -subjektiv -subtil -sunn -svensk -svimmel -svær -sympatisk -søt -søvnig -taktfull -talefør -tankefull -tapper -taus -tentativ -teoretisk -tilbakeholden -tilfeldig -tillitsfull -tom -topp -toårig -tradisjonsbunden -treg -treig -trekantet -trist -trofast -trossig -troverdig -tru -trygg -trådløs -turkis -tydelig -tykkhudet -typisk -tøff -tørr -tørst -uavhengig -ubestikkelig -uemosjonell -uforgjengelig -ufornuftig -ufruktbar -ufunksjonell -ufølsom -ugjennomsiktig -uglesett -uinspirert -uinteressert -ukjent -uklar -ukontroversiell -ulastelig -ulik -ullen -ulogisk -ultrafiolett -ulydig -umake -umoden -umotivert -umusikalsk -underdanig -underfundig -underlig -ung -ungt -unormal -unyttig -unøyaktig -upersonlig -upopulær -upraktisk -upresis -urettferdig -urimelig -urokkelig -urolig -uromantisk -usannferdig -usedvanlig -uselvisk -uselvstendig -usensuell -usikker -usjenert -usnobbet -ustabil -usymmetrisk -utakknemlig -utgått -utholden -utmerket -utrolig -utstrakt -uttrykksfull -utydelig -utørst -utålmodig -uvanlig -uvirksom -vakker -varm -varm -varsom -vassen -veik -veldig -velkommen -vennlig -venstre -verd -verdifull -vertikal -vidsynt -viktig -viktig -viljesterk -virkelig -virtuell -vis -vissen -vokal -vrien -våken -vårlig -ærlig -øde -økologisk -økonomisk -øvrig -åpen -Ödslig -Ökänd -Öm -Äcklig -Ädel -Älskvärd -Ändlös -Ängslig -Magnífico -Frío -Cariñoso -Ácido -Común -Hábil -Aauténtico -Pequeño diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/static/adverb.csv b/apps/levende-arbeidsforhold-service/src/main/resources/static/adverb.csv deleted file mode 100644 index 6a93640660b..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/resources/static/adverb.csv +++ /dev/null @@ -1,64 +0,0 @@ -akselererende -aktpågivende -aldrende -altetende -analyserende -befriende -berikende -blunkende -dansende -drøvtyggende -fallende -famlende -fascinerende -ferierende -fintfølende -flakkende -fraværende -glitrende -gryntende -gyngende -handlende -hikkende -inkluderende -innbringende -kjempende -ledende -leende -levende -lurende -memorerende -minkende -måpende -oppfarende -oppfyllende -oppklarende -opprettholdende -overbevisende -overstrålende -pleiende -påtroppende -reflekterende -samlende -skapende -skjelende -skjelvende -skravlende -sløvende -smigrende -smiskende -snøvlende -spennende -sprellende -sprudlende -tikkende -tilfredsstillende -tilgivende -tiltalende -tvilende -utmattende -utnyttende -uvitende -vaggende -vaklende -voksende \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/static/substantiv.csv b/apps/levende-arbeidsforhold-service/src/main/resources/static/substantiv.csv deleted file mode 100644 index fe62a1d206a..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/resources/static/substantiv.csv +++ /dev/null @@ -1,1598 +0,0 @@ -Abakus -Abbed -Abbedisse -abbor -Abonnement -Abonnent -Adapter -Adelsmann -Adjutant -Administrasjonsbygning -Admiral -Adressat -Adresse -adventskalender -advokat -agenda -agent -agg -agurk -agurktid -akeleie -akkord -akrobat -akselerator -aksjonist -aksjonær -aktivist -aktivitet -aktor -aktualitet -aktuar -aktør -akupunktør -akvarell -akvariefisk -alarm -albatross -alder -alderdom -aldring -alge -algoritme -alke -alkove -alkymist -allehånde -allergi -allianse -alligator -alm -almanakk -almisse -alpakka -alpelue -alpinski -alt -altmuligmann -aluminium -alv -ambisjon -ambolt -ambulofobi -analogi -analyse -ananas -anatomi -anbefaling -and -andakt -andrefiolin -andrik -anke -ankel -ansiktskrem -antikvitet -antilope -apanasje -appell -appelsin -appetitt -aprikos -april -aprilsnarr -arbeidsdag -arbeidsstyrke -aristokrat -ark -arkeolog -arkitektur -arkiv -arm -aroma -art -arterie -artikkel -artisjokk -ask -asparges -assistent -assosiasjon -asterisk -astrolog -astronom -august -autoritet -avanse -avarisk -avdeling -aveny -avgrunn -avhending -avis -avokado -avslutning -avslutningsfest -avstand -avtale -baby -babybag -bacon -bad -badeand -badeball -badebukse -badeby -badegjest -badehette -badekar -badenymfe -badering -badestrand -badmintonbane -bagasje -bagasjetralle -bagatell -bajas -bakepulver -bakeri -bakgrunn -bakgrunnslitteratur -bakhjulsdrift -bakke -bakkeklaring -bakkerekord -baktanke -bakterie -bakverk -balanse -ball -ballong -ballongbukse -ballsko -balltre -balsam -band -bane -banjo -bank -bankboks -banke -bar -barberskum -barista -bark -barneskole -barnestol -baron -bart -bas -base -basilikum -bass -baug -bedrift -befal -befolkning -behandling -bekk -benk -bensin -bensinstasjon -beskjed -bestefar -besteforelder -bestemmelsesnøkkel -bestemor -betaling -betydning -beundring -bevegelse -bever -bevilling -bibliotekar -bie -bikkje -bil -bilde -bildekort -bille -billett -billettluke -biograf -biografi -biologi -bit -bjelke -bjørk -Bjørk -bjørkefink -bjørn -bjørnebær -bjørnunge -blad -blanding -blankett -blekk -blindveg -blogg -blokk -blokkfløyte -blomsterplante -blund -blunder -bly -blyant -Blåbær -Blåklokke -blåveis -boble -bok -bokfink -bokhandel -bokhylle -bokklubb -bokorm -boks -boksamling -bokstav -bolero -bolle -bom -bomull -bonde -boom -bord -borg -bot -botanikk -brande -brann -branngate -bregne -breiflabb -brett -brev -brille -bringe -bris -bror -brosme -bru -brud -brudekjole -brudgom -bruk -bruksrett -bruktbil -brus -bry -brødskive -brøk -brøkdel -brøkstrek -bu -budeie -buk -bukk -Bukkeblad -bukse -buksesele -bukspyttkjertel -bukt -bunad -bursdag -busk -buss -busse -bussjåfør -busskur -busstopp -butikk -by -bygd -bygg -bygning -byregion -bysse -bytte -bær -bærtur -bøffel -bøk -bølge -bønne -bør -børste -bøtte -bøye -bøylehest -bånd -båndsalat -båt -campingvogn -Chilipepper -corner -cosinus -daddel -dagbok -dagbot -dagelev -dagkrem -dagsmarsj -dagsorden -dal -dalside -dam -dame -damesykkel -dans -datamaskin -dato -deig -deklarasjon -del -delegasjon -delepris -delmengde -delstat -desember -desimal -desimeter -dessert -detalj -dialekt -diamant -diameter -diesel -diett -diode -direktør -dirk -distanse -diva -doktor -doktorgrad -dokument -dokumentar -dompap -domstol -doning -drage -dregg -dreng -dress -drikke -dromedar -dronning -drosje -drott -drue -dråpe -dublett -due -duell -Duftranke -dugnad -duk -dunkjevle -dusj -dykker -dynamo -dyne -dyreflokk -dyrlege -dør -dørslag -dørstokkmil -edderkopp -edelstein -eføy -eggeplomme -eik -einebær -ekornhale -eksamen -ekspedisjon -ekspeditør -eksplosjon -ektemann -elefant -elev -elg -ellipse -elv -energi -energidrikk -eng -engel -enke -enkemann -entreprenør -episode -eplekake -epoke -eridofobi -erklæring -ert -eske -espresso -espressomaskin -etappe -etasje -etat -ettermiddag -evaluering -fabrikk -fabrikkpipe -fagott -fagressurs -fakir -fakkel -faktor -faktura -falk -fallskjerm -fallskjermhopper -familie -familiebarnehage -fan -fane -fange -fant -fantasi -fantast -far -farfar -farge -farmor -farsott -fart -fartshump -fartsretning -fasade -fase -faste -fastlandsforbindelse -fastlege -fastlegeordning -fastmerke -fasttelefon -fasttelefoni -fattigdom -fattigmann -fattigmannskost -feber -februar -feide -feil -fell -felle -feltseng -feltstol -felttog -femkant -ferd -ferie -ferskvann -fetter -fiber -fiken -fil -filet -fille -film -filmomtale -filmstjerne -filosof -filt -filter -finale -fiolin -firkant -firma -fisk -fiskebolle -fiskebutikk -fiskekrok -fjell -Fjellfiol -fjellkjede -Fjellkråkefot -fjernkontroll -fjernsyn -fjes -fjord -fjording -fjær -flagg -flaggermus -flamme -flaske -flaskehals -flate -flekk -Flekkmarihand -flette -flod -flokk -flom -fluktstol -flygefisk -flyplass -flyttelass -flyvertinne -fløy -fløyte -fobi -foldbygg -fole -folk -fontene -forbindelse -fordypning -forelder -forfader -forklaring -forkledning -form -formann -formel -formiddag -formue -fornøyelse -forsikring -forskjell -forstand -forsøkskanin -forutsetning -forventning -foss -fossekall -fot -fotball -fotkrem -fotnote -fotosyntese -foxtrot -frakk -framtid -frase -fred -fredag -frekvens -frende -frihet -frisyre -fritid -frokostblanding -frosk -frostnatt -frue -frukt -fruktbutikk -frukthage -fryd -frynse -fugl -fuglekasse -fugleskremsel -fuktighetskrem -funksjon -funksjonær -Furu -fusjon -fyr -fyrste -fyrstikk -fyrstinne -fødselsdag -føflekk -følelse -føll -førstemann -føyke -galakse -gallauniform -galleri -gallium -gallupmåling -galopp -galoppsport -galte -gang -garanti -garasje -gardin -gasspedal -gate -gaupe -gebursdag -geit -geithams -gelatin -genser -geografi -geometri -gitar -gitarhals -gjenbruksstasjon -gjenstand -gjerde -gjerrigknark -gjesterom -gjær -gjørme -gladiator -glede -globus -glose -gluten -gnist -golv -gorilla -graf -grammatikk -gran -Gran -grandis -grandonkel -grandtante -granitt -granne -granskning -grapefrukt -grav -gravemaskin -gravimetri -grend -grense -gress -greve -grevling -grunnskole -grønnfink -grønnsisik -grøt -gråhegre -gråsisik -gudinne -Gulkrokus -gullmynt -gullstol -gulnebblom -Gurkemeie -guvernante -gyngehest -gyngestol -gås -gåstol -gåte -habitt -hage -hai -hake -hakke -hale -hals -halvkule -halvmeter -halvsøsken -halvøy -ham -hamster -handel -handelsflåte -handelsmann -handelsreisende -handlekraft -handleliste -handlingsevne -handlingsrom -hane -hankatt -hare -harmoni -harpe -harpun -Hassel -hatt -haug -hauk -havhest -havsvale -Hegg -hei -heis -heldiggris -helgen -helikopter -helle -helt -hengekøye -hensikt -herbarium -herre -hest -hestedrosje -Hestehov -hestesko -hete -hette -hieroglyf -himmel -hingst -hinne -histolog -historie -hjelm -hjelp -hjelpelinje -hjulvisp -hjørnestein -hobby -hofte -holmgang -honning -hoppe -horisont -hotelldirektør -hotellsuite -hullemaskin -humor -hund -Hundekjeks -hunkatt -husbåt -Hvitkløver -Hvitveis -hybelkanin -hylle -hymne -hypotese -hørsel -høvel -høydedrag -høyttaler -håndkrem -idé -idyll -igle -Ildtopp -indrefilet -industri -infeksjon -informasjon -ingeniør -ingrediens -ingress -inndeling -innestemme -innhegning -innsjø -inntekt -interesse -invitasjon -isbjørn -iskrem -jaguar -jak -jakke -jakt -jaktterreng -Jalapeño -Jamón -jantelov -januar -japp -jeans -jeger -jekk -jeksel -jente -jernbane -jerv -jobb -joker -jolle -Jonsokkoll -jord -jordbruk -jordbruker -jordbær -jorde -jordmor -jordskjelv -jordskorpe -jordsmonn -journal -journalist -jubel -jubilant -juice -jukeboks -jul -juleferie -julepresang -juli -jungel -juni -jurist -juvel -kabin -kafeteria -kahytt -kai -kaie -kaiman -kakao -kakaobønne -kake -kaktus -kalddusj -kalender -kalkulator -kalori -kalv -kam -kamel -kamera -kamerat -kanin -kanne -kanon -kant -kantarell -kappe -kar -karaffel -karakter -karakteristikk -karies -karnapp -karneval -karosseri -karriere -kartlegging -karusell -kasjott -kasse -katalysator -katapult -katedral -kategori -kateter -katt -kattunge -kelner -kenguru -kentaur -ketsjup -kikkert -kile -kilometer -kime -kino -kiwi -kjede -kjedekollisjon -kjeks -kjeltring -kjendis -kjenning -kjepphest -kjerne -kjetting -kjæreste -kjøpmann -Kjørvel -kjøttbolle -kjøttdeig -klage -klang -klappstol -klasse -klasserom -klaustrofobi -klem -klemme -klinkekule -klippe -klippfisk -klisjé -klokke -Klokkelyng -klosett -klovn -klut -kløver -Kløver -knapp -knute -kokeplate -kokkekniv -kollega -kollisjon -koloni -komedie -komfyr -komité -kommentar -kommode -kommune -kompetanse -komposisjon -konditor -konduktør -kone -konferanse -konge -konglebit -kongress -konjakk -konjunksjon -konklusjon -konkurranse -konsekvens -konsert -konsonant -konstruksjon -kontakt -kontingent -kontorbygg -kontradiksjon -kontrast -kontroll -konvolutt -kopp -korg -korgstol -kork -kornsirkel -kornsort -korridor -kortstokk -kos -kost -kostnad -krabbe -krage -krampe -Krattfiol -krem -kreps -krets -krokodille -Krokus -krone -krydder -kryddermål -krypdyr -kråke -kråkebolle -kråkesølv -kubbestol -kulepenn -kulturplante -kunde -kunngjøring -kunnskap -kunst -kunsteventyr -kunstverk -kupé -kur -kusine -Kusymre -kutte -kveld -kveldsmat -kvern -kvinne -kyst -kyststi -kø -køyeseng -kål -kålrabi -labyrint -lagidrett -lagsport -lakris -lama -lampe -lampett -landmåler -landsby -lapp -larm -larve -lefse -lege -legevakt -legg -lekeplass -lenestol -lensmann -leopard -leppe -lerke -lerkefugl -lerketre -leverandør -leveregel -liggestol -likning -lilje -lind -linjal -linje -linselus -list -liste -litteratur -livsstil -loddsnor -logaritme -logg -lomme -lommebok -lov -lue -lugar -lugg -lukt -lunge -lunsj -lupe -lyd -lykke -lyte -lørdag -løve -løveflokk -løvetann -Løvetann -løvinne -mage -magesekk -mai -mais -make -maktperson -malerbukse -maleri -malm -malstrøm -mamma -mammut -mandag -mandag -mandagsbil -mandarin -mandel -mandolin -mann -mann -marengskake -marg -mark -marmor -masekopp -maskin -mast -mat -matboks -matematiker -matpakke -matte -matvare -maur -medaljong -medisin -medisterdeig -medvind -melding -mengde -meny -merr -meter -metode -metrolog -middag -mil -miljøgift -million -minibank -mobiltelefon -modell -moldvarp -mor -morene -morfar -mormor -mose -moskus -motordel -motvind -muffins -Muñeco -munn -muskel -mutter -mygg -mynt -myntsamling -Myrfiol -myrsnipe -møbelforretning -møll -mølle -mønster -måke -målsetting -måne -månefase -måneferd -månerakett -nakke -natt -nattergal -natthegre -nattkrem -natur -naturressurs -naut -nepe -nestleder -nettadresse -netthinne -nettleser -nettverkskabel -neve -nevø -niese -Niño -nisse -nitrogen -nordavind -november -nyre -nøkkel -Nøkleblom -nøtt -odde -okse -oktober -oldefar -oldemor -olivenolje -olje -omelett -omsetning -omstilling -omtale -onkel -onsdag -oppdatering -oppdrett -opphoping -opplag -opportunist -opposisjon -oppskrift -oppslutning -opptaksprøve -oppvartning -oppvaskmaskin -oppvisningskamp -opsjon -ord -ordbok -ordre -oridé -orientering -original -orm -ost -ostehøvel -ostekake -oter -overgang -oversikt -overskrift -overstyring -ovn -Pájaro -pakke -pakt -pali -palme -palmeolje -pamp -panikk -panikkangst -panjabi -panne -pannekake -panter -papegøye -papp -pappa -paraply -parasoll -parfyme -partikkel -parykk -pause -pausefisk -pedagog -pedal -pendel -penge -periode -perle -Perleblom -Perleblomst -permanent -persepsjon -persille -person -pes -pianist -pianokrakk -pike -pinnestol -pinsett -pioner -pistol -pizza -planet -plante -plasma -plass -plassering -plast -plate -platina -pleie -plekter -plikt -plomme -plyndring -pode -poesi -pokal -politibil -ponni -porsjon -port -porto -pose -postkasse -postnummer -potet -praksis -prat -premie -presentasjon -presse -prest -pris -produksjon -prærieulv -prøve -pub -puddel -pukkel -pumpe -purre -pus -pusekatt -pute -pyjamas -pyjamasbukse -pyramide -pytt -pære -påfunn -påkjenning -påpakning -påske -påskeegg -radiostasjon -ramme -regel -region -regle -regnskog -reise -reke -rekkefølge -rekord -reserve -ressurs -restaurant -retningslinje -retorikk -revebjelle -ribbe -ridebukse -ringdue -ripe -rist -robåt -rose -rosin -rubin -rulletrapp -rygg -rynke -rype -rytme -rødfotsule -Rødkløver -rødstrupe -røyskatt -råvare -sak -saks -salamander -salt -salve -samboer -sanddyne -sandkasse -sans -sarkofag -sarv -satellitt -satire -sau -saudabu -saus -savanne -scene -sebra -seidel -seigmann -seilbåt -sekk -sekretær -sekretær -sel -Selje -sen -senat -senator -Señor -sentrum -separasjon -september -seremoni -service -serviett -servise -servitrise -servitør -sete -sild -silhuett -sitron -Sitronmelisse -sitronsyre -sjakal -sjeselong -sjiraff -sjokoladekake -sjø -sjøsetting -skatoll -skive -skjorte -sko -Skogfiol -Skogkløver -Skogmarihand -Skogstjerne -skole -skorpion -skrivemaskin -sky -skytte -skyvedør -skål -slektning -smaragd -snegle -snøball -Snøklokke -sofa -sokk -sol -solbær -solkrem -soloppgang -solsikke -sommerferie -sovepose -spasertur -spenne -spesialist -stafett -stamfar -stammor -stasjon -stasjonsvogn -statist -Stemorsblomst -stilling -stjerne -stokk -stol -storskjerm -struktur -struts -strømpebukse -stund -støtte -støvel -støvlett -sum -suppe -supporter -sure -svale -svamp -svane -sverm -svigerdatter -svigerinne -svigersønn -svoger -sydvest -sykkel -syl -synd -syndebukk -synonym -synsing -syre -system -systrending -sysvort -Sølvakasie -søndag -søndag -sønnavind -søster -søyle -såpe -takke -takras -tallerken -talltegn -tangent -tanke -tann -tannbørste -telefonkatalog -telefonkiosk -telefonnummer -Teléfono -telegram -teleskopord -terskel -test -tevling -tiger -time -timebu -timeplan -tirsdag -tiur -tja -tomat -tommel -tomt -tone -toppskarv -toppvinkel -tordivel -torn -torsdag -torsk -tournure -township -tradisjon -trafikkork -tragedie -trakt -traktkantarell -traktoregg -trane -trapp -tre -treff -tregrense -trekkfugl -trenchcoat -trikk -trombone -trommis -trompet -trost -träd -tunfisk -tunge -tunnel -turbin -turistby -tusenfryd -Tusenfryd -tusj -tyggis -tyr -tyttebær -tøffel -tøffelhelt -tørketrommel -undulat -ungdom -unge -universitet -unnselig -vaffel -vaktel -valmue -vals -vandrefalk -vane -vannmann -varde -vare -varedeklarasjon -varetekt -variasjon -vaskemaskin -vegg -veps -veranda -veske -vest -vestibyle -veterinær -vevstol -vifte -villa -vits -vogge -voks -volleyball -vott -vulkan -vurdering -våghals -Vårkrokus -Ägare -Ägg -Äggula -Äktenskap -æresdoktor -æresgjest -æresmedlem -ærfugl -Ödemark -Ödla -Ög -Ögonblick -Öra -ørn -østers -øvelse -øy -åker -årbok -årsak -årsplan -årstid diff --git a/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java b/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java deleted file mode 100644 index 165037712e0..00000000000 --- a/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/FileReaderTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; - -import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; -import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; - -import org.junit.jupiter.api.Test; - -import java.io.IOException; - -class FileReaderTest { - - @Test - void testThatContentsAreCorrectlyRead() { - var contents = FileReader.readLinesFromResources("static/test.csv"); - assertThat(contents) - .hasSize(3) - .containsExactly( - "one", - "two", - "three" - ); - } - - @Test - void testThatNonexistingResourceCausesException() { - assertThatThrownBy(() -> FileReader.readLinesFromResources("static/does-not-exist.csv")) - .isInstanceOf(IOException.class) - .hasMessage("Unable to find file static/does-not-exist.csv"); - } - -} diff --git a/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java b/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java deleted file mode 100644 index e3d98846906..00000000000 --- a/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/GenerateNavnServiceTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; - -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; - -class GenerateNavnServiceTest { - - private final GenerateNavnService service = new GenerateNavnService(); - - @Test - void noSeedShouldGiveDifferentListsOfNames() { - var names1 = service.getRandomNavn(null, 100); - var names2 = service.getRandomNavn(null, 100); - assertThat(names1) - .isNotEqualTo(names2); - } - - @Test - void sameSeedShouldGiveSameListOfNames() { - var names1 = service.getRandomNavn(1000L, 100); - var names2 = service.getRandomNavn(1000L, 100); - assertThat(names1) - .isEqualTo(names2); - } - -} diff --git a/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java b/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java deleted file mode 100644 index 31078501c25..00000000000 --- a/apps/levende-arbeidsforhold-service/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/service/VerifyNavnServiceTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; - -import no.nav.testnav.libs.dto.generernavnservice.v1.NavnDTO; -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; - -class VerifyNavnServiceTest { - - private final static String GYLDIG_ADJEKTIV = "Lojal Avansert"; - private final static String GYLDIG_ADVERB = "Reflekterende"; - private final static String GYLDIG_SUBSTANTIV = "Reise Løveflokk Tragedie"; - - private final static String IKKE_ADJEKTIV = "Aaaaaa Bbbbbbb Cccccccc"; - private final static String IKKE_ADVERB = "Ddddddddd"; - private final static String IKKE_SUBSTANTIV = "Eeeeeeee Fffffffff Ggggggggg Hhhhhhhhh"; - - @Test - void testVerifyNavn() { - var service = new VerifyNavnService(); - var gyldigNavnResult = service.verifyNavn( - NavnDTO.builder() - .adjektiv(GYLDIG_ADJEKTIV) - .adverb(GYLDIG_ADVERB) - .substantiv(GYLDIG_SUBSTANTIV) - .build() - ); - var gyldigNavnMedTomtMellomnavnResult = service.verifyNavn( - NavnDTO.builder() - .adjektiv(GYLDIG_ADJEKTIV) - .adverb(null) - .substantiv(GYLDIG_SUBSTANTIV) - .build() - ); - var ikkeGyldigNavnResult = service.verifyNavn( - NavnDTO.builder() - .adjektiv(IKKE_ADJEKTIV) - .adverb(IKKE_ADVERB) - .substantiv(IKKE_SUBSTANTIV) - .build() - ); - assertThat(gyldigNavnResult).isTrue(); - assertThat(gyldigNavnMedTomtMellomnavnResult).isTrue(); - assertThat(ikkeGyldigNavnResult).isFalse(); - } -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/test/resources/static/test.csv b/apps/levende-arbeidsforhold-service/src/test/resources/static/test.csv deleted file mode 100644 index 54d55bf0bb5..00000000000 --- a/apps/levende-arbeidsforhold-service/src/test/resources/static/test.csv +++ /dev/null @@ -1,3 +0,0 @@ -one -two -three \ No newline at end of file From 80dfbbfacbf29ce300deceaaa3e090094ff6a81a Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 27 Jun 2024 10:29:56 +0200 Subject: [PATCH 024/161] Spring module method helloworld --- ...beidsforholdServiceApplicationStarter.java | 7 ++++ .../config/KafkaConfig.java | 4 +-- .../listener/DoedsfallListener.java | 36 ++++++++++++------- 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java index 80ecdce682f..318e5fec869 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java @@ -2,9 +2,16 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + + +import no.nav.registre.testnorge.levendearbeidsforhold.listener.DoedsfallListener; + @SpringBootApplication public class LevendeArbeidsforholdServiceApplicationStarter { + public static void main(String[] args) { SpringApplication.run(LevendeArbeidsforholdServiceApplicationStarter.class, args); } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java index 2d2dffed095..04806642b1a 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java @@ -26,8 +26,8 @@ import java.util.Map; @Slf4j -@EnableKafka -@Component +//@EnableKafka +//@Configuration @Profile("dev") public class KafkaConfig { diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index e01276b98d3..dc0533d7f88 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -10,28 +10,40 @@ import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; import no.nav.registre.testnorge.levendearbeidsforhold.config.KafkaConfig; +import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.context.ApplicationListener; + import java.util.List; import java.util.function.Supplier; import java.util.stream.Collectors; + @Slf4j @Profile("dev") @Component @RequiredArgsConstructor -public class DoedsfallListener { +public class DoedsfallListener implements ApplicationListener { private static final String doedsfallTopic = "pdl.leesah-v1"; - @KafkaListener(topics = doedsfallTopic) - public void getHendelser(List> records) { - System.out.println(records.stream().collect().toList()); - - /* - records.stream().collect(Collectors.groupingBy(value -> value.value().getMetadata().getMiljo())).forEach((miljo, list) -> { - var organisasjoner = list.stream().map(value -> value.value().getOrganisasjon()).collect(Collectors.toList()); - var ids = list.stream().map(ConsumerRecord::key).collect(Collectors.toSet()); - save(organisasjoner, miljo, false, ids); - }); - */ + public static void helloworld(){ + System.out.println("Hello wooorld"); } + + @Override + public void onApplicationEvent(ContextRefreshedEvent event) { + log.info("Hello World"); + } + // @KafkaListener(topics = doedsfallTopic) + // public void getHendelser(List> records) { + // log.info(records.stream().toList().toString()); + + // /* + // records.stream().collect(Collectors.groupingBy(value -> value.value().getMetadata().getMiljo())).forEach((miljo, list) -> { + // var organisasjoner = list.stream().map(value -> value.value().getOrganisasjon()).collect(Collectors.toList()); + // var ids = list.stream().map(ConsumerRecord::key).collect(Collectors.toSet()); + // save(organisasjoner, miljo, false, ids); + // }); + // */ + // } } From 2fa7a0a40b7fc31dc192cec26ed7971234e84557 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Thu, 27 Jun 2024 10:37:56 +0200 Subject: [PATCH 025/161] La til annotation i DoedsfallListener.java --- .../levendearbeidsforhold/listener/DoedsfallListener.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index dc0533d7f88..2eb7104bb43 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactoryFriend; import org.springframework.context.annotation.Profile; +import org.springframework.context.event.EventListener; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; import no.nav.registre.testnorge.levendearbeidsforhold.config.KafkaConfig; @@ -23,15 +24,15 @@ @Profile("dev") @Component @RequiredArgsConstructor -public class DoedsfallListener implements ApplicationListener { +public class DoedsfallListener { private static final String doedsfallTopic = "pdl.leesah-v1"; public static void helloworld(){ System.out.println("Hello wooorld"); } - @Override - public void onApplicationEvent(ContextRefreshedEvent event) { + @EventListener(ContextRefreshedEvent.class) + public void onApplicationEvent() { log.info("Hello World"); } // @KafkaListener(topics = doedsfallTopic) From 5eaa84a70f8935179d3c1b15a3a24cceb72f4dd3 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Thu, 27 Jun 2024 11:52:09 +0200 Subject: [PATCH 026/161] La til kafka group id i application.yaml og eventlistener --- .../listener/DoedsfallListener.java | 17 +++++------------ .../src/main/resources/application.yml | 4 +++- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 2eb7104bb43..7f2817f1547 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -35,16 +35,9 @@ public static void helloworld(){ public void onApplicationEvent() { log.info("Hello World"); } - // @KafkaListener(topics = doedsfallTopic) - // public void getHendelser(List> records) { - // log.info(records.stream().toList().toString()); - - // /* - // records.stream().collect(Collectors.groupingBy(value -> value.value().getMetadata().getMiljo())).forEach((miljo, list) -> { - // var organisasjoner = list.stream().map(value -> value.value().getOrganisasjon()).collect(Collectors.toList()); - // var ids = list.stream().map(ConsumerRecord::key).collect(Collectors.toSet()); - // save(organisasjoner, miljo, false, ids); - // }); - // */ - // } + @KafkaListener(topics = doedsfallTopic) + public void getHendelser(List> records) { + log.info(records.stream().toList().toString()); + + } } diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 476e865beb7..da3b3e5ec82 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -17,7 +17,9 @@ spring: cloud: vault: enabled: false - + kafka: + consumer: + group-id: testnav-levende-arbeidsforhold-service springdoc: swagger-ui: disable-swagger-default-url: true From 174f3115fe0f3335b6b523917f3d4c75d886be4e Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 27 Jun 2024 12:58:37 +0200 Subject: [PATCH 027/161] Add dev .yml file and changes to KafkaConfig.java #deploy-levende-arbeidsforhold-service --- apps/levende-arbeidsforhold-service/settings.gradle | 1 + .../levendearbeidsforhold/config/KafkaConfig.java | 7 +++---- .../src/main/resources/application-dev.yml | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 apps/levende-arbeidsforhold-service/src/main/resources/application-dev.yml diff --git a/apps/levende-arbeidsforhold-service/settings.gradle b/apps/levende-arbeidsforhold-service/settings.gradle index 86447219874..b5f94f80eea 100644 --- a/apps/levende-arbeidsforhold-service/settings.gradle +++ b/apps/levende-arbeidsforhold-service/settings.gradle @@ -12,6 +12,7 @@ includeBuild '../../libs/commands' includeBuild '../../libs/data-transfer-objects' includeBuild '../../libs/servlet-security' includeBuild '../../libs/testing' +includeBuild '../../.github/workflows' develocity { buildScan { diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java index 04806642b1a..5557cb6b024 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java @@ -5,7 +5,6 @@ import io.confluent.kafka.serializers.KafkaAvroDeserializer; import io.confluent.kafka.serializers.KafkaAvroDeserializerConfig; import lombok.extern.slf4j.Slf4j; -//import no.nav.registre.testnorge.organisasjonmottak.service.ShutdownService; import org.apache.kafka.clients.CommonClientConfigs; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerConfig; @@ -13,21 +12,21 @@ import org.apache.kafka.common.serialization.StringDeserializer; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.kafka.annotation.EnableKafka; import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; import org.springframework.kafka.core.ConsumerFactory; import org.springframework.kafka.core.DefaultKafkaConsumerFactory; import org.springframework.kafka.listener.CommonLoggingErrorHandler; -import org.springframework.stereotype.Component; import java.net.InetSocketAddress; import java.util.HashMap; import java.util.Map; @Slf4j -//@EnableKafka -//@Configuration +@EnableKafka +@Configuration @Profile("dev") public class KafkaConfig { diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application-dev.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application-dev.yml new file mode 100644 index 00000000000..7df314e0e54 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application-dev.yml @@ -0,0 +1,2 @@ +kafka: + group-id: testnav-levende-arbeidsforhold-service From 3effcf34bc94f14bc68c0a5483c693eece058ccb Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 27 Jun 2024 13:19:50 +0200 Subject: [PATCH 028/161] Endret typo for KafkaConfig group-id #deploy-levende-arbeidsforhold-service --- apps/levende-arbeidsforhold-service/config.yml | 2 +- .../testnorge/levendearbeidsforhold/config/KafkaConfig.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/config.yml b/apps/levende-arbeidsforhold-service/config.yml index 22743892dfd..976510aacf2 100644 --- a/apps/levende-arbeidsforhold-service/config.yml +++ b/apps/levende-arbeidsforhold-service/config.yml @@ -45,4 +45,4 @@ spec: kafka: pool: nav-dev ingresses: - - "https://levende-arbeidsforhold-service.intern.dev.nav.no" + - "https://testnav-levende-arbeidsforhold-service.intern.dev.nav.no" diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java index 5557cb6b024..acef55d5a28 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java @@ -33,7 +33,7 @@ public class KafkaConfig { private final String groupId; //private final ShutdownService shutdownService; - public KafkaConfig(@Value("${kafka.groupid}") String groupId) {//, ShutdownService shutdownService + public KafkaConfig(@Value("${spring.kafka.consumer.group-id}") String groupId) {//, ShutdownService shutdownService this.groupId = groupId; //this.shutdownService = shutdownService; } From 028d7a25b1e6b81013a5c78aec248ec572225fe6 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 27 Jun 2024 13:48:06 +0200 Subject: [PATCH 029/161] Troubleshooting fikse logger, endre til =dev i Dockerfile #deploy-levende-arbeidsforhold-service --- .../workflows/app.levende-arbeidsforhold-service.yml | 10 +++++----- apps/levende-arbeidsforhold-service/Dockerfile | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/app.levende-arbeidsforhold-service.yml b/.github/workflows/app.levende-arbeidsforhold-service.yml index edeb307b167..c1bc5e923c8 100644 --- a/.github/workflows/app.levende-arbeidsforhold-service.yml +++ b/.github/workflows/app.levende-arbeidsforhold-service.yml @@ -3,11 +3,11 @@ name: levende-arbeidsforhold-service on: push: paths: - - libs/commands - - libs/data-transfer-objects - - libs/security-core - - libs/servlet-core - - libs/servlet-security + - libs/commands/** + - libs/data-transfer-objects/** + - libs/security-core/** + - libs/servlet-core/** + - libs/servlet-security/** - apps/levende-arbeidsforhold-service/** - .github/workflows/app.levende-arbeidsforhold-service.yml diff --git a/apps/levende-arbeidsforhold-service/Dockerfile b/apps/levende-arbeidsforhold-service/Dockerfile index 4a36f93546f..ab29f6f38c0 100644 --- a/apps/levende-arbeidsforhold-service/Dockerfile +++ b/apps/levende-arbeidsforhold-service/Dockerfile @@ -1,7 +1,7 @@ FROM ghcr.io/navikt/baseimages/temurin:21 LABEL maintainer="Team Dolly" -ENV JAVA_OPTS="-Dspring.profiles.active=prod" +ENV JAVA_OPTS="-Dspring.profiles.active=dev" ADD /build/libs/app.jar /app/app.jar From 42d09efb624ab67c9a3ee0c9312745bf02598a6b Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 27 Jun 2024 13:55:49 +0200 Subject: [PATCH 030/161] Troubleshooting fikse logger, endre til =prod i Dockerfile #deploy-levende-arbeidsforhold-service --- apps/levende-arbeidsforhold-service/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/Dockerfile b/apps/levende-arbeidsforhold-service/Dockerfile index ab29f6f38c0..4a36f93546f 100644 --- a/apps/levende-arbeidsforhold-service/Dockerfile +++ b/apps/levende-arbeidsforhold-service/Dockerfile @@ -1,7 +1,7 @@ FROM ghcr.io/navikt/baseimages/temurin:21 LABEL maintainer="Team Dolly" -ENV JAVA_OPTS="-Dspring.profiles.active=dev" +ENV JAVA_OPTS="-Dspring.profiles.active=prod" ADD /build/libs/app.jar /app/app.jar From 11045039b5c71352a92b8f032e493ef668333206 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 27 Jun 2024 14:39:20 +0200 Subject: [PATCH 031/161] Fjernet Profile("dev") i listener filen #deploy-levende-arbeidsforhold-service --- .../levendearbeidsforhold/listener/DoedsfallListener.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 7f2817f1547..daea3b792ea 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -21,20 +21,16 @@ @Slf4j -@Profile("dev") @Component @RequiredArgsConstructor public class DoedsfallListener { private static final String doedsfallTopic = "pdl.leesah-v1"; - public static void helloworld(){ - System.out.println("Hello wooorld"); - } - @EventListener(ContextRefreshedEvent.class) public void onApplicationEvent() { log.info("Hello World"); } + @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { log.info(records.stream().toList().toString()); From f114ede0dad954b6038fedb3941b788eb6a72178 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 27 Jun 2024 15:48:27 +0200 Subject: [PATCH 032/161] Fjernet Profile("dev") i KafkaConfig.java filen #deploy-levende-arbeidsforhold-service --- .../levendearbeidsforhold/config/KafkaConfig.java | 1 - .../listener/DoedsfallListener.java | 11 +---------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java index acef55d5a28..b8e0a5ed355 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java @@ -27,7 +27,6 @@ @Slf4j @EnableKafka @Configuration -@Profile("dev") public class KafkaConfig { private final String groupId; diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index daea3b792ea..f84aba83a90 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -2,22 +2,13 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.testnav.libs.avro.organisasjon.v1.Opprettelsesdokument; import org.apache.kafka.clients.consumer.ConsumerRecord; -import org.slf4j.Logger; -import org.slf4j.LoggerFactoryFriend; -import org.springframework.context.annotation.Profile; +import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; -import no.nav.registre.testnorge.levendearbeidsforhold.config.KafkaConfig; -import org.springframework.context.event.ContextRefreshedEvent; -import org.springframework.context.ApplicationListener; - import java.util.List; -import java.util.function.Supplier; -import java.util.stream.Collectors; @Slf4j From b47bf6651ba0bcf4053fc01e5cb08fad3f59aa06 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 27 Jun 2024 15:54:55 +0200 Subject: [PATCH 033/161] Endret til Profile("dev", "prod") i KafkaConfig.java filen #deploy-levende-arbeidsforhold-service --- .../testnorge/levendearbeidsforhold/config/KafkaConfig.java | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java index b8e0a5ed355..66217fdab89 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java @@ -27,6 +27,7 @@ @Slf4j @EnableKafka @Configuration +@Profile({"dev", "prod"}) public class KafkaConfig { private final String groupId; From b5eb607f3d694e45e9fdd3ac21a0192d2ebfa6e2 Mon Sep 17 00:00:00 2001 From: stigus Date: Thu, 27 Jun 2024 16:47:08 +0200 Subject: [PATCH 034/161] Kommenterer ut logging som spammer elastic #deploy-levende-arbeidsforhold-service --- .../levendearbeidsforhold/listener/DoedsfallListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index f84aba83a90..3347634f991 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -24,7 +24,7 @@ public void onApplicationEvent() { @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { - log.info(records.stream().toList().toString()); +// log.info(records.stream().toList().toString()); } } From 4f62b0b9a6227c7abb0471345bb811d3e56a2520 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Fri, 28 Jun 2024 13:50:30 +0200 Subject: [PATCH 035/161] Init skrive ut records #deploy-levende-arbeidsforhold-service --- .../listener/DoedsfallListener.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 3347634f991..2e8f161ede4 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -2,11 +2,13 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; +import no.nav.testnav.libs.avro.hendelse.Hendelse; import java.util.List; @@ -24,7 +26,11 @@ public void onApplicationEvent() { @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { -// log.info(records.stream().toList().toString()); - + /* + for (ConsumerRecord record: records){ + log.info(record.value().toString()); + } + */ + log.info(records.getFirst().value().toString()); } } From 98635e7a8e59876d2eea5dd60a41d4be7160b370 Mon Sep 17 00:00:00 2001 From: Martineem Date: Mon, 1 Jul 2024 12:56:09 +0200 Subject: [PATCH 036/161] Kopier over .avdl-filer fra pdl-repoet --- .../src/main/avro/leesah/Personhendelse.avdl | 57 +++++++++++++++++++ .../Adressebeskyttelse.avdl | 14 +++++ .../leesah/bostedsadresse/Bostedsadresse.avdl | 19 +++++++ .../main/avro/leesah/common/Personnavn.avdl | 9 +++ .../leesah/common/adresse/Koordinater.avdl | 9 +++ .../common/adresse/Matrikkeladresse.avdl | 13 +++++ .../adresse/PostadresseIFrittFormat.avdl | 10 ++++ .../common/adresse/Postboksadresse.avdl | 9 +++ .../leesah/common/adresse/UkjentBosted.avdl | 7 +++ .../common/adresse/UtenlandskAdresse.avdl | 13 +++++ .../UtenlandskAdresseIFrittFormat.avdl | 12 ++++ .../leesah/common/adresse/Vegadresse.avdl | 17 ++++++ .../leesah/doedfoedtbarn/DoedfoedtBarn.avdl | 7 +++ .../main/avro/leesah/doedsfall/Doedsfall.avdl | 7 +++ .../familierelasjon/Familierelasjon.avdl | 9 +++ .../src/main/avro/leesah/foedsel/Foedsel.avdl | 11 ++++ .../Folkeregisteridentifikator.avdl | 9 +++ .../ForelderBarnRelasjon.avdl | 11 ++++ .../avro/leesah/innflytting/Innflytting.avdl | 8 +++ .../leesah/kontaktadresse/Kontaktadresse.avdl | 20 +++++++ .../src/main/avro/leesah/navn/Navn.avdl | 19 +++++++ .../sikkerhetstiltak/Sikkerhetstiltak.avdl | 16 ++++++ .../avro/leesah/sivilstand/Sivilstand.avdl | 10 ++++ .../statsborgerskap/Statsborgerskap.avdl | 13 +++++ .../leesah/telefonnummer/Telefonnummer.avdl | 9 +++ .../avro/leesah/utflytting/Utflytting.avdl | 9 +++ .../verge/VergemaalEllerFremtidsfullmakt.avdl | 17 ++++++ 27 files changed, 364 insertions(+) create mode 100644 libs/avro-schema/src/main/avro/leesah/Personhendelse.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/adressebeskyttelse/Adressebeskyttelse.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/bostedsadresse/Bostedsadresse.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/common/Personnavn.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/Koordinater.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/Matrikkeladresse.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/PostadresseIFrittFormat.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/Postboksadresse.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/UkjentBosted.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresse.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresseIFrittFormat.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/Vegadresse.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/doedfoedtbarn/DoedfoedtBarn.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/doedsfall/Doedsfall.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/familierelasjon/Familierelasjon.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/foedsel/Foedsel.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/folkeregisteridentifikator/Folkeregisteridentifikator.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/forelderbarnrelasjon/ForelderBarnRelasjon.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/innflytting/Innflytting.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/kontaktadresse/Kontaktadresse.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/navn/Navn.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/sikkerhetstiltak/Sikkerhetstiltak.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/sivilstand/Sivilstand.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/statsborgerskap/Statsborgerskap.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/telefonnummer/Telefonnummer.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/utflytting/Utflytting.avdl create mode 100644 libs/avro-schema/src/main/avro/leesah/verge/VergemaalEllerFremtidsfullmakt.avdl diff --git a/libs/avro-schema/src/main/avro/leesah/Personhendelse.avdl b/libs/avro-schema/src/main/avro/leesah/Personhendelse.avdl new file mode 100644 index 00000000000..083f42d5ff3 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/Personhendelse.avdl @@ -0,0 +1,57 @@ +@namespace("no.nav.libs.avro-schema.src.main.avro.leesah") +protocol PersonhendelseProto { + import idl "adressebeskyttelse/Adressebeskyttelse.avdl"; + import idl "doedfoedtbarn/DoedfoedtBarn.avdl"; + import idl "doedsfall/Doedsfall.avdl"; + import idl "foedsel/Foedsel.avdl"; + import idl "familierelasjon/Familierelasjon.avdl"; + import idl "verge/VergemaalEllerFremtidsfullmakt.avdl"; + import idl "forelderbarnrelasjon/ForelderBarnRelasjon.avdl"; + import idl "sivilstand/Sivilstand.avdl"; + import idl "utflytting/Utflytting.avdl"; + import idl "innflytting/Innflytting.avdl"; + import idl "folkeregisteridentifikator/Folkeregisteridentifikator.avdl"; + import idl "navn/Navn.avdl"; + import idl "sikkerhetstiltak/Sikkerhetstiltak.avdl"; + import idl "statsborgerskap/Statsborgerskap.avdl"; + import idl "telefonnummer/Telefonnummer.avdl"; + import idl "kontaktadresse/Kontaktadresse.avdl"; + import idl "bostedsadresse/Bostedsadresse.avdl"; + + enum Endringstype { + OPPRETTET, + KORRIGERT, + ANNULLERT, + OPPHOERT + } + + record Personhendelse { + string hendelseId; + array personidenter; + + string master; + timestamp_ms opprettet; + + string opplysningstype; + Endringstype endringstype; + union { null, string } tidligereHendelseId = null; // Peker til tidligere hendelse ved korrigering og annullering. + + union { null, no.nav.person.pdl.leesah.adressebeskyttelse.Adressebeskyttelse } adressebeskyttelse = null; + union { null, no.nav.person.pdl.leesah.doedfoedtbarn.DoedfoedtBarn } doedfoedtBarn = null; + union { null, no.nav.person.pdl.leesah.doedsfall.Doedsfall } doedsfall = null; + union { null, no.nav.person.pdl.leesah.foedsel.Foedsel } foedsel = null; + union { null, no.nav.person.pdl.leesah.forelderbarnrelasjon.ForelderBarnRelasjon } forelderBarnRelasjon = null; + union { null, no.nav.person.pdl.leesah.familierelasjon.Familierelasjon } familierelasjon = null; // Blir DEPRECATED i fremtiden. Erstattes av forelderBarnRelasjon. + union { null, no.nav.person.pdl.leesah.sivilstand.Sivilstand } sivilstand = null; + union { null, no.nav.person.pdl.leesah.verge.VergemaalEllerFremtidsfullmakt } vergemaalEllerFremtidsfullmakt = null; + union { null, no.nav.person.pdl.leesah.utflytting.UtflyttingFraNorge } utflyttingFraNorge = null; + union { null, no.nav.person.pdl.leesah.innflytting.InnflyttingTilNorge } InnflyttingTilNorge = null; + union { null, no.nav.person.pdl.leesah.folkeregisteridentifikator.Folkeregisteridentifikator } Folkeregisteridentifikator = null; + union { null, no.nav.person.pdl.leesah.navn.Navn } navn = null; + union { null, no.nav.person.pdl.leesah.sikkerhetstiltak.Sikkerhetstiltak } sikkerhetstiltak = null; + union { null, no.nav.person.pdl.leesah.statsborgerskap.Statsborgerskap } statsborgerskap = null; + union { null, no.nav.person.pdl.leesah.telefonnummer.Telefonnummer } telefonnummer = null; + union { null, no.nav.person.pdl.leesah.kontaktadresse.Kontaktadresse } kontaktadresse = null; + union { null, no.nav.person.pdl.leesah.bostedsadresse.Bostedsadresse } bostedsadresse = null; + } +} diff --git a/libs/avro-schema/src/main/avro/leesah/adressebeskyttelse/Adressebeskyttelse.avdl b/libs/avro-schema/src/main/avro/leesah/adressebeskyttelse/Adressebeskyttelse.avdl new file mode 100644 index 00000000000..6c0d162e020 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/adressebeskyttelse/Adressebeskyttelse.avdl @@ -0,0 +1,14 @@ +@namespace("no.nav.person.pdl.leesah.adressebeskyttelse") +protocol AdressebeskyttelseV1 { + + enum Gradering { + STRENGT_FORTROLIG_UTLAND, + STRENGT_FORTROLIG, + FORTROLIG, + UGRADERT + } + + record Adressebeskyttelse { + Gradering gradering; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/bostedsadresse/Bostedsadresse.avdl b/libs/avro-schema/src/main/avro/leesah/bostedsadresse/Bostedsadresse.avdl new file mode 100644 index 00000000000..ce80d0339a2 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/bostedsadresse/Bostedsadresse.avdl @@ -0,0 +1,19 @@ +@namespace("no.nav.person.pdl.leesah.bostedsadresse") +protocol BostedsadresseV1 { + import idl "../common/adresse/Vegadresse.avdl"; + import idl "../common/adresse/Matrikkeladresse.avdl"; + import idl "../common/adresse/UtenlandskAdresse.avdl"; + import idl "../common/adresse/UkjentBosted.avdl"; + + record Bostedsadresse { + union { null, date } angittFlyttedato = null; + union { null, date } gyldigFraOgMed = null; + union { null, date } gyldigTilOgMed = null; + + union { null, string } coAdressenavn = null; + union { null, no.nav.person.pdl.leesah.common.adresse.Vegadresse } vegadresse = null; + union { null, no.nav.person.pdl.leesah.common.adresse.Matrikkeladresse } matrikkeladresse = null; + union { null, no.nav.person.pdl.leesah.common.adresse.UtenlandskAdresse } utenlandskAdresse = null; + union { null, no.nav.person.pdl.leesah.common.adresse.UkjentBosted } ukjentBosted = null; + } +} diff --git a/libs/avro-schema/src/main/avro/leesah/common/Personnavn.avdl b/libs/avro-schema/src/main/avro/leesah/common/Personnavn.avdl new file mode 100644 index 00000000000..15575318021 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/common/Personnavn.avdl @@ -0,0 +1,9 @@ +@namespace("no.nav.person.pdl.leesah.common") +protocol PersonnavnV1 { + + record Personnavn { + string fornavn; + union { null, string } mellomnavn = null; + string etternavn; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/Koordinater.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/Koordinater.avdl new file mode 100644 index 00000000000..066307129bc --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/common/adresse/Koordinater.avdl @@ -0,0 +1,9 @@ +@namespace("no.nav.person.pdl.leesah.common.adresse") +protocol KoordinaterV1 { + + record Koordinater { + union { null, float } x = null; + union { null, float } y = null; + union { null, float } z = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/Matrikkeladresse.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/Matrikkeladresse.avdl new file mode 100644 index 00000000000..2e20ae3a28d --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/common/adresse/Matrikkeladresse.avdl @@ -0,0 +1,13 @@ +@namespace("no.nav.person.pdl.leesah.common.adresse") +protocol MatrikkeladresseV1 { + import idl "Koordinater.avdl"; + + record Matrikkeladresse { + union { null, string } matrikkelId = null; + union { null, string } bruksenhetsnummer = null; + union { null, string } tilleggsnavn = null; + union { null, string } postnummer = null; + union { null, string } kommunenummer = null; + union { null, no.nav.person.pdl.leesah.common.adresse.Koordinater } koordinater = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/PostadresseIFrittFormat.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/PostadresseIFrittFormat.avdl new file mode 100644 index 00000000000..646492edf7f --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/common/adresse/PostadresseIFrittFormat.avdl @@ -0,0 +1,10 @@ +@namespace("no.nav.person.pdl.leesah.common.adresse") +protocol PostadresseIFrittFormatV1 { + + record PostadresseIFrittFormat { + union { null, string } adresselinje1 = null; + union { null, string } adresselinje2 = null; + union { null, string } adresselinje3 = null; + union { null, string } postnummer = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/Postboksadresse.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/Postboksadresse.avdl new file mode 100644 index 00000000000..e828c1564f5 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/common/adresse/Postboksadresse.avdl @@ -0,0 +1,9 @@ +@namespace("no.nav.person.pdl.leesah.common.adresse") +protocol PostboksadresseV1 { + + record Postboksadresse { + union { null, string } postbokseier = null; + string postboks; + union { null, string } postnummer = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/UkjentBosted.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/UkjentBosted.avdl new file mode 100644 index 00000000000..2e570bc05a5 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/common/adresse/UkjentBosted.avdl @@ -0,0 +1,7 @@ +@namespace("no.nav.person.pdl.leesah.common.adresse") +protocol UkjentBostedV1 { + + record UkjentBosted { + union { null, string } bostedskommune = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresse.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresse.avdl new file mode 100644 index 00000000000..f38b0a12076 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresse.avdl @@ -0,0 +1,13 @@ +@namespace("no.nav.person.pdl.leesah.common.adresse") +protocol UtenlandskAdresseV1 { + + record UtenlandskAdresse { + union { null, string } adressenavnNummer = null; + union { null, string } bygningEtasjeLeilighet = null; + union { null, string } postboksNummerNavn = null; + union { null, string } postkode = null; + union { null, string } bySted = null; + union { null, string } regionDistriktOmraade = null; + string landkode; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresseIFrittFormat.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresseIFrittFormat.avdl new file mode 100644 index 00000000000..d0aa73be54e --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresseIFrittFormat.avdl @@ -0,0 +1,12 @@ +@namespace("no.nav.person.pdl.leesah.common.adresse") +protocol UtenlandskAdresseIFrittFormatV1 { + + record UtenlandskAdresseIFrittFormat { + union { null, string } adresselinje1 = null; + union { null, string } adresselinje2 = null; + union { null, string } adresselinje3 = null; + union { null, string } postkode = null; + union { null, string } byEllerStedsnavn = null; + string landkode; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/Vegadresse.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/Vegadresse.avdl new file mode 100644 index 00000000000..657549f1341 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/common/adresse/Vegadresse.avdl @@ -0,0 +1,17 @@ +@namespace("no.nav.person.pdl.leesah.common.adresse") +protocol VegadresseV1 { + import idl "Koordinater.avdl"; + + record Vegadresse { + union { null, string } matrikkelId = null; + union { null, string } husnummer = null; + union { null, string } husbokstav = null; + union { null, string } bruksenhetsnummer = null; + union { null, string } adressenavn = null; + union { null, string } kommunenummer = null; + union { null, string } bydelsnummer = null; + union { null, string } tilleggsnavn = null; + union { null, string } postnummer = null; + union { null, no.nav.person.pdl.leesah.common.adresse.Koordinater } koordinater = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/doedfoedtbarn/DoedfoedtBarn.avdl b/libs/avro-schema/src/main/avro/leesah/doedfoedtbarn/DoedfoedtBarn.avdl new file mode 100644 index 00000000000..2a8d9254662 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/doedfoedtbarn/DoedfoedtBarn.avdl @@ -0,0 +1,7 @@ +@namespace("no.nav.person.pdl.leesah.doedfoedtbarn") +protocol DoedfoedtBarnV1 { + + record DoedfoedtBarn { + union { null, date } dato = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/doedsfall/Doedsfall.avdl b/libs/avro-schema/src/main/avro/leesah/doedsfall/Doedsfall.avdl new file mode 100644 index 00000000000..df89a6b409f --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/doedsfall/Doedsfall.avdl @@ -0,0 +1,7 @@ +@namespace("no.nav.person.pdl.leesah.doedsfall") +protocol DoedsfallV1 { + + record Doedsfall { + union { null, date } doedsdato = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/familierelasjon/Familierelasjon.avdl b/libs/avro-schema/src/main/avro/leesah/familierelasjon/Familierelasjon.avdl new file mode 100644 index 00000000000..c4fdf07545f --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/familierelasjon/Familierelasjon.avdl @@ -0,0 +1,9 @@ +@namespace("no.nav.person.pdl.leesah.familierelasjon") +protocol FamilierelasjonV1 { + + record Familierelasjon { + string relatertPersonsIdent; + string relatertPersonsRolle; + union { null, string } minRolleForPerson = null; + } +} diff --git a/libs/avro-schema/src/main/avro/leesah/foedsel/Foedsel.avdl b/libs/avro-schema/src/main/avro/leesah/foedsel/Foedsel.avdl new file mode 100644 index 00000000000..4cbb2b473f8 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/foedsel/Foedsel.avdl @@ -0,0 +1,11 @@ +@namespace("no.nav.person.pdl.leesah.foedsel") +protocol FoedselV1 { + + record Foedsel { + union { null, int } foedselsaar = null; + union { null, date } foedselsdato = null; + union { null, string } foedeland = null; + union { null, string } foedested = null; + union { null, string } foedekommune = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/folkeregisteridentifikator/Folkeregisteridentifikator.avdl b/libs/avro-schema/src/main/avro/leesah/folkeregisteridentifikator/Folkeregisteridentifikator.avdl new file mode 100644 index 00000000000..32e21ba65da --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/folkeregisteridentifikator/Folkeregisteridentifikator.avdl @@ -0,0 +1,9 @@ +@namespace("no.nav.person.pdl.leesah.folkeregisteridentifikator") +protocol FolkeregisteridentifikatorV1 { + + record Folkeregisteridentifikator { + string identifikasjonsnummer; + string type; + string status; + } +} diff --git a/libs/avro-schema/src/main/avro/leesah/forelderbarnrelasjon/ForelderBarnRelasjon.avdl b/libs/avro-schema/src/main/avro/leesah/forelderbarnrelasjon/ForelderBarnRelasjon.avdl new file mode 100644 index 00000000000..aa8103de23f --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/forelderbarnrelasjon/ForelderBarnRelasjon.avdl @@ -0,0 +1,11 @@ +@namespace("no.nav.person.pdl.leesah.forelderbarnrelasjon") +protocol ForelderBarnRelasjonV1 { + import idl "../../../identhendelse/v1/common/RelatertBiPerson.avdl"; + + record ForelderBarnRelasjon { + union { null, string } relatertPersonsIdent = null; + string relatertPersonsRolle; + union { null, string } minRolleForPerson = null; + union { null, no.nav.person.identhendelse.v1.common.RelatertBiPerson } relatertPersonUtenFolkeregisteridentifikator = null; + } +} diff --git a/libs/avro-schema/src/main/avro/leesah/innflytting/Innflytting.avdl b/libs/avro-schema/src/main/avro/leesah/innflytting/Innflytting.avdl new file mode 100644 index 00000000000..321ae6bad70 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/innflytting/Innflytting.avdl @@ -0,0 +1,8 @@ +@namespace("no.nav.person.pdl.leesah.innflytting") +protocol InnflyttingV1 { + + record InnflyttingTilNorge { + union { null, string } fraflyttingsland = null; + union { null, string } fraflyttingsstedIUtlandet = null; + } +} diff --git a/libs/avro-schema/src/main/avro/leesah/kontaktadresse/Kontaktadresse.avdl b/libs/avro-schema/src/main/avro/leesah/kontaktadresse/Kontaktadresse.avdl new file mode 100644 index 00000000000..9d53ab29a76 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/kontaktadresse/Kontaktadresse.avdl @@ -0,0 +1,20 @@ +@namespace("no.nav.person.pdl.leesah.kontaktadresse") +protocol KontaktadresseV1 { + import idl "../common/adresse/Postboksadresse.avdl"; + import idl "../common/adresse/Vegadresse.avdl"; + import idl "../common/adresse/PostadresseIFrittFormat.avdl"; + import idl "../common/adresse/UtenlandskAdresse.avdl"; + import idl "../common/adresse/UtenlandskAdresseIFrittFormat.avdl"; + + record Kontaktadresse { + union { null, date } gyldigFraOgMed = null; + union { null, date } gyldigTilOgMed = null; + string type; + union { null, string } coAdressenavn = null; + union { null, no.nav.person.pdl.leesah.common.adresse.Postboksadresse } postboksadresse = null; + union { null, no.nav.person.pdl.leesah.common.adresse.Vegadresse } vegadresse = null; + union { null, no.nav.person.pdl.leesah.common.adresse.PostadresseIFrittFormat } postadresseIFrittFormat = null; + union { null, no.nav.person.pdl.leesah.common.adresse.UtenlandskAdresse } utenlandskAdresse = null; + union { null, no.nav.person.pdl.leesah.common.adresse.UtenlandskAdresseIFrittFormat } utenlandskAdresseIFrittFormat = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/navn/Navn.avdl b/libs/avro-schema/src/main/avro/leesah/navn/Navn.avdl new file mode 100644 index 00000000000..8ff064e8bae --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/navn/Navn.avdl @@ -0,0 +1,19 @@ +@namespace("no.nav.person.pdl.leesah.navn") +protocol NavnV1 { + +// Kan ikke bruke den samme som felles fordi den har påkrevd fornavn og etternavn. + record OriginaltNavn { + union { null, string } fornavn = null; + union { null, string } mellomnavn = null; + union { null, string } etternavn = null; + } + + record Navn { + string fornavn; + union { null, string } mellomnavn = null; + string etternavn; + union { null, string } forkortetNavn = null; + union { null, OriginaltNavn } originaltNavn = null; + union { null, date } gyldigFraOgMed = null; + } +} diff --git a/libs/avro-schema/src/main/avro/leesah/sikkerhetstiltak/Sikkerhetstiltak.avdl b/libs/avro-schema/src/main/avro/leesah/sikkerhetstiltak/Sikkerhetstiltak.avdl new file mode 100644 index 00000000000..349908cdcd2 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/sikkerhetstiltak/Sikkerhetstiltak.avdl @@ -0,0 +1,16 @@ +@namespace("no.nav.person.pdl.leesah.sikkerhetstiltak") +protocol SikkerhetstiltakV1 { + + record Kontaktperson { + union { null, string } personident = null; + union { null, string } norgEnhet = null; + } + + record Sikkerhetstiltak { + union { null, Kontaktperson } kontaktperson = null; + string type; + string beskrivelse; + date gyldigFom; + date gyldigTom; + } +} diff --git a/libs/avro-schema/src/main/avro/leesah/sivilstand/Sivilstand.avdl b/libs/avro-schema/src/main/avro/leesah/sivilstand/Sivilstand.avdl new file mode 100644 index 00000000000..0c9ca116e66 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/sivilstand/Sivilstand.avdl @@ -0,0 +1,10 @@ +@namespace("no.nav.person.pdl.leesah.sivilstand") +protocol SivilstandV1 { + + record Sivilstand { + string type; + union { null, date } gyldigFraOgMed = null; + union { null, string } relatertVedSivilstand = null; + union { null, date } bekreftelsesdato = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/statsborgerskap/Statsborgerskap.avdl b/libs/avro-schema/src/main/avro/leesah/statsborgerskap/Statsborgerskap.avdl new file mode 100644 index 00000000000..fd0f8e9651e --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/statsborgerskap/Statsborgerskap.avdl @@ -0,0 +1,13 @@ +@namespace("no.nav.person.pdl.leesah.statsborgerskap") +protocol StatsborgerskapV1 { + record Statsborgerskap { + + // FELLES + string land; + union { null, date } gyldigFom = null; + + // PDL + union { null, date } gyldigTom = null; + union { null, date } bekreftelsesdato = null; + } +} diff --git a/libs/avro-schema/src/main/avro/leesah/telefonnummer/Telefonnummer.avdl b/libs/avro-schema/src/main/avro/leesah/telefonnummer/Telefonnummer.avdl new file mode 100644 index 00000000000..4f0c152356c --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/telefonnummer/Telefonnummer.avdl @@ -0,0 +1,9 @@ +@namespace("no.nav.person.pdl.leesah.telefonnummer") +protocol TelefonnummerV1 { + + record Telefonnummer { + union { null, string } landskode = null; + union { null, string } nummer = null; + union { null, int } prioritet = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/utflytting/Utflytting.avdl b/libs/avro-schema/src/main/avro/leesah/utflytting/Utflytting.avdl new file mode 100644 index 00000000000..82616258aad --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/utflytting/Utflytting.avdl @@ -0,0 +1,9 @@ +@namespace("no.nav.person.pdl.leesah.utflytting") +protocol UtflyttingV1 { + + record UtflyttingFraNorge { + union { null, string } tilflyttingsland = null; + union { null, string } tilflyttingsstedIUtlandet = null; + union { null, date } utflyttingsdato = null; + } +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/verge/VergemaalEllerFremtidsfullmakt.avdl b/libs/avro-schema/src/main/avro/leesah/verge/VergemaalEllerFremtidsfullmakt.avdl new file mode 100644 index 00000000000..bd5daa856b0 --- /dev/null +++ b/libs/avro-schema/src/main/avro/leesah/verge/VergemaalEllerFremtidsfullmakt.avdl @@ -0,0 +1,17 @@ +@namespace("no.nav.person.pdl.leesah.verge") +protocol VergeV1 { + import idl "../common/Personnavn.avdl"; + + record VergeEllerFullmektig { + union { null, no.nav.person.pdl.leesah.common.Personnavn } navn = null; + union { null, string } motpartsPersonident = null; + union { null, string } omfang = null; + union{null, boolean} omfangetErInnenPersonligOmraade = null; + } + + record VergemaalEllerFremtidsfullmakt { + union { null, string } type = null; + union { null, string } embete = null; + VergeEllerFullmektig vergeEllerFullmektig; + } +} From 98e29b78de77f87b20e13945f4c4130a8d695c2f Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Mon, 1 Jul 2024 14:13:28 +0200 Subject: [PATCH 037/161] Slettet .avdl-filer, la til .avsc-filer --- .../src/main/avro/Personhendelse.avsc | 81 +++++++++++++++++++ .../src/main/avro/leesah/Personhendelse.avdl | 57 ------------- .../Adressebeskyttelse.avdl | 14 ---- .../leesah/bostedsadresse/Bostedsadresse.avdl | 19 ----- .../main/avro/leesah/common/Personnavn.avdl | 9 --- .../leesah/common/adresse/Koordinater.avdl | 9 --- .../common/adresse/Matrikkeladresse.avdl | 13 --- .../adresse/PostadresseIFrittFormat.avdl | 10 --- .../common/adresse/Postboksadresse.avdl | 9 --- .../leesah/common/adresse/UkjentBosted.avdl | 7 -- .../common/adresse/UtenlandskAdresse.avdl | 13 --- .../UtenlandskAdresseIFrittFormat.avdl | 12 --- .../leesah/common/adresse/Vegadresse.avdl | 17 ---- .../leesah/doedfoedtbarn/DoedfoedtBarn.avdl | 7 -- .../main/avro/leesah/doedsfall/Doedsfall.avdl | 7 -- .../familierelasjon/Familierelasjon.avdl | 9 --- .../src/main/avro/leesah/foedsel/Foedsel.avdl | 11 --- .../Folkeregisteridentifikator.avdl | 9 --- .../ForelderBarnRelasjon.avdl | 11 --- .../avro/leesah/innflytting/Innflytting.avdl | 8 -- .../leesah/kontaktadresse/Kontaktadresse.avdl | 20 ----- .../src/main/avro/leesah/navn/Navn.avdl | 19 ----- .../sikkerhetstiltak/Sikkerhetstiltak.avdl | 16 ---- .../avro/leesah/sivilstand/Sivilstand.avdl | 10 --- .../statsborgerskap/Statsborgerskap.avdl | 13 --- .../leesah/telefonnummer/Telefonnummer.avdl | 9 --- .../avro/leesah/utflytting/Utflytting.avdl | 9 --- .../verge/VergemaalEllerFremtidsfullmakt.avdl | 17 ---- 28 files changed, 81 insertions(+), 364 deletions(-) create mode 100644 libs/avro-schema/src/main/avro/Personhendelse.avsc delete mode 100644 libs/avro-schema/src/main/avro/leesah/Personhendelse.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/adressebeskyttelse/Adressebeskyttelse.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/bostedsadresse/Bostedsadresse.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/common/Personnavn.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/Koordinater.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/Matrikkeladresse.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/PostadresseIFrittFormat.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/Postboksadresse.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/UkjentBosted.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresse.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresseIFrittFormat.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/common/adresse/Vegadresse.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/doedfoedtbarn/DoedfoedtBarn.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/doedsfall/Doedsfall.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/familierelasjon/Familierelasjon.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/foedsel/Foedsel.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/folkeregisteridentifikator/Folkeregisteridentifikator.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/forelderbarnrelasjon/ForelderBarnRelasjon.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/innflytting/Innflytting.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/kontaktadresse/Kontaktadresse.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/navn/Navn.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/sikkerhetstiltak/Sikkerhetstiltak.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/sivilstand/Sivilstand.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/statsborgerskap/Statsborgerskap.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/telefonnummer/Telefonnummer.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/utflytting/Utflytting.avdl delete mode 100644 libs/avro-schema/src/main/avro/leesah/verge/VergemaalEllerFremtidsfullmakt.avdl diff --git a/libs/avro-schema/src/main/avro/Personhendelse.avsc b/libs/avro-schema/src/main/avro/Personhendelse.avsc new file mode 100644 index 00000000000..24c9a2cd292 --- /dev/null +++ b/libs/avro-schema/src/main/avro/Personhendelse.avsc @@ -0,0 +1,81 @@ +{ + "type" : "record", + "name" : "Personhendelse", + "namespace" : "no.nav.person.pdl.leesah", + "fields" : [ { + "name" : "hendelseId", + "type" : "string" + }, { + "name" : "personidenter", + "type" : { + "type" : "array", + "items" : "string" + } + }, { + "name" : "master", + "type" : "string" + }, { + "name" : "opprettet", + "type" : { + "type" : "long", + "logicalType" : "timestamp-millis" + } + }, { + "name" : "opplysningstype", + "type" : "string" + }, { + "name" : "endringstype", + "type" : { + "type" : "enum", + "name" : "Endringstype", + "symbols" : [ "OPPRETTET", "KORRIGERT", "ANNULLERT", "OPPHOERT" ] + } + }, { + "name" : "tidligereHendelseId", + "type" : [ "null", "string" ], + "default" : null + }, { + "name" : "navn", + "type" : [ "null", { + "type" : "record", + "name" : "Navn", + "namespace" : "no.nav.person.pdl.leesah.navn", + "fields" : [ { + "name" : "fornavn", + "type" : "string" + }, { + "name" : "mellomnavn", + "type" : [ "null", "string" ], + "default" : null + }, { + "name" : "etternavn", + "type" : "string" + }, { + "name" : "forkortetNavn", + "type" : [ "null", "string" ], + "default" : null + }, { + "name" : "originaltNavn", + "type" : [ "null", { + "type" : "record", + "name" : "OriginaltNavn", + "fields" : [ { + "name" : "fornavn", + "type" : [ "null", "string" ], + "default" : null + }, { + "name" : "mellomnavn", + "type" : [ "null", "string" ], + "default" : null + }, { + "name" : "etternavn", + "type" : [ "null", "string" ], + "default" : null + } ] + } ], + "default" : null + } ] + } ], + "default" : null + } ] +} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/Personhendelse.avdl b/libs/avro-schema/src/main/avro/leesah/Personhendelse.avdl deleted file mode 100644 index 083f42d5ff3..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/Personhendelse.avdl +++ /dev/null @@ -1,57 +0,0 @@ -@namespace("no.nav.libs.avro-schema.src.main.avro.leesah") -protocol PersonhendelseProto { - import idl "adressebeskyttelse/Adressebeskyttelse.avdl"; - import idl "doedfoedtbarn/DoedfoedtBarn.avdl"; - import idl "doedsfall/Doedsfall.avdl"; - import idl "foedsel/Foedsel.avdl"; - import idl "familierelasjon/Familierelasjon.avdl"; - import idl "verge/VergemaalEllerFremtidsfullmakt.avdl"; - import idl "forelderbarnrelasjon/ForelderBarnRelasjon.avdl"; - import idl "sivilstand/Sivilstand.avdl"; - import idl "utflytting/Utflytting.avdl"; - import idl "innflytting/Innflytting.avdl"; - import idl "folkeregisteridentifikator/Folkeregisteridentifikator.avdl"; - import idl "navn/Navn.avdl"; - import idl "sikkerhetstiltak/Sikkerhetstiltak.avdl"; - import idl "statsborgerskap/Statsborgerskap.avdl"; - import idl "telefonnummer/Telefonnummer.avdl"; - import idl "kontaktadresse/Kontaktadresse.avdl"; - import idl "bostedsadresse/Bostedsadresse.avdl"; - - enum Endringstype { - OPPRETTET, - KORRIGERT, - ANNULLERT, - OPPHOERT - } - - record Personhendelse { - string hendelseId; - array personidenter; - - string master; - timestamp_ms opprettet; - - string opplysningstype; - Endringstype endringstype; - union { null, string } tidligereHendelseId = null; // Peker til tidligere hendelse ved korrigering og annullering. - - union { null, no.nav.person.pdl.leesah.adressebeskyttelse.Adressebeskyttelse } adressebeskyttelse = null; - union { null, no.nav.person.pdl.leesah.doedfoedtbarn.DoedfoedtBarn } doedfoedtBarn = null; - union { null, no.nav.person.pdl.leesah.doedsfall.Doedsfall } doedsfall = null; - union { null, no.nav.person.pdl.leesah.foedsel.Foedsel } foedsel = null; - union { null, no.nav.person.pdl.leesah.forelderbarnrelasjon.ForelderBarnRelasjon } forelderBarnRelasjon = null; - union { null, no.nav.person.pdl.leesah.familierelasjon.Familierelasjon } familierelasjon = null; // Blir DEPRECATED i fremtiden. Erstattes av forelderBarnRelasjon. - union { null, no.nav.person.pdl.leesah.sivilstand.Sivilstand } sivilstand = null; - union { null, no.nav.person.pdl.leesah.verge.VergemaalEllerFremtidsfullmakt } vergemaalEllerFremtidsfullmakt = null; - union { null, no.nav.person.pdl.leesah.utflytting.UtflyttingFraNorge } utflyttingFraNorge = null; - union { null, no.nav.person.pdl.leesah.innflytting.InnflyttingTilNorge } InnflyttingTilNorge = null; - union { null, no.nav.person.pdl.leesah.folkeregisteridentifikator.Folkeregisteridentifikator } Folkeregisteridentifikator = null; - union { null, no.nav.person.pdl.leesah.navn.Navn } navn = null; - union { null, no.nav.person.pdl.leesah.sikkerhetstiltak.Sikkerhetstiltak } sikkerhetstiltak = null; - union { null, no.nav.person.pdl.leesah.statsborgerskap.Statsborgerskap } statsborgerskap = null; - union { null, no.nav.person.pdl.leesah.telefonnummer.Telefonnummer } telefonnummer = null; - union { null, no.nav.person.pdl.leesah.kontaktadresse.Kontaktadresse } kontaktadresse = null; - union { null, no.nav.person.pdl.leesah.bostedsadresse.Bostedsadresse } bostedsadresse = null; - } -} diff --git a/libs/avro-schema/src/main/avro/leesah/adressebeskyttelse/Adressebeskyttelse.avdl b/libs/avro-schema/src/main/avro/leesah/adressebeskyttelse/Adressebeskyttelse.avdl deleted file mode 100644 index 6c0d162e020..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/adressebeskyttelse/Adressebeskyttelse.avdl +++ /dev/null @@ -1,14 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.adressebeskyttelse") -protocol AdressebeskyttelseV1 { - - enum Gradering { - STRENGT_FORTROLIG_UTLAND, - STRENGT_FORTROLIG, - FORTROLIG, - UGRADERT - } - - record Adressebeskyttelse { - Gradering gradering; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/bostedsadresse/Bostedsadresse.avdl b/libs/avro-schema/src/main/avro/leesah/bostedsadresse/Bostedsadresse.avdl deleted file mode 100644 index ce80d0339a2..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/bostedsadresse/Bostedsadresse.avdl +++ /dev/null @@ -1,19 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.bostedsadresse") -protocol BostedsadresseV1 { - import idl "../common/adresse/Vegadresse.avdl"; - import idl "../common/adresse/Matrikkeladresse.avdl"; - import idl "../common/adresse/UtenlandskAdresse.avdl"; - import idl "../common/adresse/UkjentBosted.avdl"; - - record Bostedsadresse { - union { null, date } angittFlyttedato = null; - union { null, date } gyldigFraOgMed = null; - union { null, date } gyldigTilOgMed = null; - - union { null, string } coAdressenavn = null; - union { null, no.nav.person.pdl.leesah.common.adresse.Vegadresse } vegadresse = null; - union { null, no.nav.person.pdl.leesah.common.adresse.Matrikkeladresse } matrikkeladresse = null; - union { null, no.nav.person.pdl.leesah.common.adresse.UtenlandskAdresse } utenlandskAdresse = null; - union { null, no.nav.person.pdl.leesah.common.adresse.UkjentBosted } ukjentBosted = null; - } -} diff --git a/libs/avro-schema/src/main/avro/leesah/common/Personnavn.avdl b/libs/avro-schema/src/main/avro/leesah/common/Personnavn.avdl deleted file mode 100644 index 15575318021..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/common/Personnavn.avdl +++ /dev/null @@ -1,9 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.common") -protocol PersonnavnV1 { - - record Personnavn { - string fornavn; - union { null, string } mellomnavn = null; - string etternavn; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/Koordinater.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/Koordinater.avdl deleted file mode 100644 index 066307129bc..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/common/adresse/Koordinater.avdl +++ /dev/null @@ -1,9 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.common.adresse") -protocol KoordinaterV1 { - - record Koordinater { - union { null, float } x = null; - union { null, float } y = null; - union { null, float } z = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/Matrikkeladresse.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/Matrikkeladresse.avdl deleted file mode 100644 index 2e20ae3a28d..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/common/adresse/Matrikkeladresse.avdl +++ /dev/null @@ -1,13 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.common.adresse") -protocol MatrikkeladresseV1 { - import idl "Koordinater.avdl"; - - record Matrikkeladresse { - union { null, string } matrikkelId = null; - union { null, string } bruksenhetsnummer = null; - union { null, string } tilleggsnavn = null; - union { null, string } postnummer = null; - union { null, string } kommunenummer = null; - union { null, no.nav.person.pdl.leesah.common.adresse.Koordinater } koordinater = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/PostadresseIFrittFormat.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/PostadresseIFrittFormat.avdl deleted file mode 100644 index 646492edf7f..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/common/adresse/PostadresseIFrittFormat.avdl +++ /dev/null @@ -1,10 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.common.adresse") -protocol PostadresseIFrittFormatV1 { - - record PostadresseIFrittFormat { - union { null, string } adresselinje1 = null; - union { null, string } adresselinje2 = null; - union { null, string } adresselinje3 = null; - union { null, string } postnummer = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/Postboksadresse.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/Postboksadresse.avdl deleted file mode 100644 index e828c1564f5..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/common/adresse/Postboksadresse.avdl +++ /dev/null @@ -1,9 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.common.adresse") -protocol PostboksadresseV1 { - - record Postboksadresse { - union { null, string } postbokseier = null; - string postboks; - union { null, string } postnummer = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/UkjentBosted.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/UkjentBosted.avdl deleted file mode 100644 index 2e570bc05a5..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/common/adresse/UkjentBosted.avdl +++ /dev/null @@ -1,7 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.common.adresse") -protocol UkjentBostedV1 { - - record UkjentBosted { - union { null, string } bostedskommune = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresse.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresse.avdl deleted file mode 100644 index f38b0a12076..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresse.avdl +++ /dev/null @@ -1,13 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.common.adresse") -protocol UtenlandskAdresseV1 { - - record UtenlandskAdresse { - union { null, string } adressenavnNummer = null; - union { null, string } bygningEtasjeLeilighet = null; - union { null, string } postboksNummerNavn = null; - union { null, string } postkode = null; - union { null, string } bySted = null; - union { null, string } regionDistriktOmraade = null; - string landkode; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresseIFrittFormat.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresseIFrittFormat.avdl deleted file mode 100644 index d0aa73be54e..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/common/adresse/UtenlandskAdresseIFrittFormat.avdl +++ /dev/null @@ -1,12 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.common.adresse") -protocol UtenlandskAdresseIFrittFormatV1 { - - record UtenlandskAdresseIFrittFormat { - union { null, string } adresselinje1 = null; - union { null, string } adresselinje2 = null; - union { null, string } adresselinje3 = null; - union { null, string } postkode = null; - union { null, string } byEllerStedsnavn = null; - string landkode; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/common/adresse/Vegadresse.avdl b/libs/avro-schema/src/main/avro/leesah/common/adresse/Vegadresse.avdl deleted file mode 100644 index 657549f1341..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/common/adresse/Vegadresse.avdl +++ /dev/null @@ -1,17 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.common.adresse") -protocol VegadresseV1 { - import idl "Koordinater.avdl"; - - record Vegadresse { - union { null, string } matrikkelId = null; - union { null, string } husnummer = null; - union { null, string } husbokstav = null; - union { null, string } bruksenhetsnummer = null; - union { null, string } adressenavn = null; - union { null, string } kommunenummer = null; - union { null, string } bydelsnummer = null; - union { null, string } tilleggsnavn = null; - union { null, string } postnummer = null; - union { null, no.nav.person.pdl.leesah.common.adresse.Koordinater } koordinater = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/doedfoedtbarn/DoedfoedtBarn.avdl b/libs/avro-schema/src/main/avro/leesah/doedfoedtbarn/DoedfoedtBarn.avdl deleted file mode 100644 index 2a8d9254662..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/doedfoedtbarn/DoedfoedtBarn.avdl +++ /dev/null @@ -1,7 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.doedfoedtbarn") -protocol DoedfoedtBarnV1 { - - record DoedfoedtBarn { - union { null, date } dato = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/doedsfall/Doedsfall.avdl b/libs/avro-schema/src/main/avro/leesah/doedsfall/Doedsfall.avdl deleted file mode 100644 index df89a6b409f..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/doedsfall/Doedsfall.avdl +++ /dev/null @@ -1,7 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.doedsfall") -protocol DoedsfallV1 { - - record Doedsfall { - union { null, date } doedsdato = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/familierelasjon/Familierelasjon.avdl b/libs/avro-schema/src/main/avro/leesah/familierelasjon/Familierelasjon.avdl deleted file mode 100644 index c4fdf07545f..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/familierelasjon/Familierelasjon.avdl +++ /dev/null @@ -1,9 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.familierelasjon") -protocol FamilierelasjonV1 { - - record Familierelasjon { - string relatertPersonsIdent; - string relatertPersonsRolle; - union { null, string } minRolleForPerson = null; - } -} diff --git a/libs/avro-schema/src/main/avro/leesah/foedsel/Foedsel.avdl b/libs/avro-schema/src/main/avro/leesah/foedsel/Foedsel.avdl deleted file mode 100644 index 4cbb2b473f8..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/foedsel/Foedsel.avdl +++ /dev/null @@ -1,11 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.foedsel") -protocol FoedselV1 { - - record Foedsel { - union { null, int } foedselsaar = null; - union { null, date } foedselsdato = null; - union { null, string } foedeland = null; - union { null, string } foedested = null; - union { null, string } foedekommune = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/folkeregisteridentifikator/Folkeregisteridentifikator.avdl b/libs/avro-schema/src/main/avro/leesah/folkeregisteridentifikator/Folkeregisteridentifikator.avdl deleted file mode 100644 index 32e21ba65da..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/folkeregisteridentifikator/Folkeregisteridentifikator.avdl +++ /dev/null @@ -1,9 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.folkeregisteridentifikator") -protocol FolkeregisteridentifikatorV1 { - - record Folkeregisteridentifikator { - string identifikasjonsnummer; - string type; - string status; - } -} diff --git a/libs/avro-schema/src/main/avro/leesah/forelderbarnrelasjon/ForelderBarnRelasjon.avdl b/libs/avro-schema/src/main/avro/leesah/forelderbarnrelasjon/ForelderBarnRelasjon.avdl deleted file mode 100644 index aa8103de23f..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/forelderbarnrelasjon/ForelderBarnRelasjon.avdl +++ /dev/null @@ -1,11 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.forelderbarnrelasjon") -protocol ForelderBarnRelasjonV1 { - import idl "../../../identhendelse/v1/common/RelatertBiPerson.avdl"; - - record ForelderBarnRelasjon { - union { null, string } relatertPersonsIdent = null; - string relatertPersonsRolle; - union { null, string } minRolleForPerson = null; - union { null, no.nav.person.identhendelse.v1.common.RelatertBiPerson } relatertPersonUtenFolkeregisteridentifikator = null; - } -} diff --git a/libs/avro-schema/src/main/avro/leesah/innflytting/Innflytting.avdl b/libs/avro-schema/src/main/avro/leesah/innflytting/Innflytting.avdl deleted file mode 100644 index 321ae6bad70..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/innflytting/Innflytting.avdl +++ /dev/null @@ -1,8 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.innflytting") -protocol InnflyttingV1 { - - record InnflyttingTilNorge { - union { null, string } fraflyttingsland = null; - union { null, string } fraflyttingsstedIUtlandet = null; - } -} diff --git a/libs/avro-schema/src/main/avro/leesah/kontaktadresse/Kontaktadresse.avdl b/libs/avro-schema/src/main/avro/leesah/kontaktadresse/Kontaktadresse.avdl deleted file mode 100644 index 9d53ab29a76..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/kontaktadresse/Kontaktadresse.avdl +++ /dev/null @@ -1,20 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.kontaktadresse") -protocol KontaktadresseV1 { - import idl "../common/adresse/Postboksadresse.avdl"; - import idl "../common/adresse/Vegadresse.avdl"; - import idl "../common/adresse/PostadresseIFrittFormat.avdl"; - import idl "../common/adresse/UtenlandskAdresse.avdl"; - import idl "../common/adresse/UtenlandskAdresseIFrittFormat.avdl"; - - record Kontaktadresse { - union { null, date } gyldigFraOgMed = null; - union { null, date } gyldigTilOgMed = null; - string type; - union { null, string } coAdressenavn = null; - union { null, no.nav.person.pdl.leesah.common.adresse.Postboksadresse } postboksadresse = null; - union { null, no.nav.person.pdl.leesah.common.adresse.Vegadresse } vegadresse = null; - union { null, no.nav.person.pdl.leesah.common.adresse.PostadresseIFrittFormat } postadresseIFrittFormat = null; - union { null, no.nav.person.pdl.leesah.common.adresse.UtenlandskAdresse } utenlandskAdresse = null; - union { null, no.nav.person.pdl.leesah.common.adresse.UtenlandskAdresseIFrittFormat } utenlandskAdresseIFrittFormat = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/navn/Navn.avdl b/libs/avro-schema/src/main/avro/leesah/navn/Navn.avdl deleted file mode 100644 index 8ff064e8bae..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/navn/Navn.avdl +++ /dev/null @@ -1,19 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.navn") -protocol NavnV1 { - -// Kan ikke bruke den samme som felles fordi den har påkrevd fornavn og etternavn. - record OriginaltNavn { - union { null, string } fornavn = null; - union { null, string } mellomnavn = null; - union { null, string } etternavn = null; - } - - record Navn { - string fornavn; - union { null, string } mellomnavn = null; - string etternavn; - union { null, string } forkortetNavn = null; - union { null, OriginaltNavn } originaltNavn = null; - union { null, date } gyldigFraOgMed = null; - } -} diff --git a/libs/avro-schema/src/main/avro/leesah/sikkerhetstiltak/Sikkerhetstiltak.avdl b/libs/avro-schema/src/main/avro/leesah/sikkerhetstiltak/Sikkerhetstiltak.avdl deleted file mode 100644 index 349908cdcd2..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/sikkerhetstiltak/Sikkerhetstiltak.avdl +++ /dev/null @@ -1,16 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.sikkerhetstiltak") -protocol SikkerhetstiltakV1 { - - record Kontaktperson { - union { null, string } personident = null; - union { null, string } norgEnhet = null; - } - - record Sikkerhetstiltak { - union { null, Kontaktperson } kontaktperson = null; - string type; - string beskrivelse; - date gyldigFom; - date gyldigTom; - } -} diff --git a/libs/avro-schema/src/main/avro/leesah/sivilstand/Sivilstand.avdl b/libs/avro-schema/src/main/avro/leesah/sivilstand/Sivilstand.avdl deleted file mode 100644 index 0c9ca116e66..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/sivilstand/Sivilstand.avdl +++ /dev/null @@ -1,10 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.sivilstand") -protocol SivilstandV1 { - - record Sivilstand { - string type; - union { null, date } gyldigFraOgMed = null; - union { null, string } relatertVedSivilstand = null; - union { null, date } bekreftelsesdato = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/statsborgerskap/Statsborgerskap.avdl b/libs/avro-schema/src/main/avro/leesah/statsborgerskap/Statsborgerskap.avdl deleted file mode 100644 index fd0f8e9651e..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/statsborgerskap/Statsborgerskap.avdl +++ /dev/null @@ -1,13 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.statsborgerskap") -protocol StatsborgerskapV1 { - record Statsborgerskap { - - // FELLES - string land; - union { null, date } gyldigFom = null; - - // PDL - union { null, date } gyldigTom = null; - union { null, date } bekreftelsesdato = null; - } -} diff --git a/libs/avro-schema/src/main/avro/leesah/telefonnummer/Telefonnummer.avdl b/libs/avro-schema/src/main/avro/leesah/telefonnummer/Telefonnummer.avdl deleted file mode 100644 index 4f0c152356c..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/telefonnummer/Telefonnummer.avdl +++ /dev/null @@ -1,9 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.telefonnummer") -protocol TelefonnummerV1 { - - record Telefonnummer { - union { null, string } landskode = null; - union { null, string } nummer = null; - union { null, int } prioritet = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/utflytting/Utflytting.avdl b/libs/avro-schema/src/main/avro/leesah/utflytting/Utflytting.avdl deleted file mode 100644 index 82616258aad..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/utflytting/Utflytting.avdl +++ /dev/null @@ -1,9 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.utflytting") -protocol UtflyttingV1 { - - record UtflyttingFraNorge { - union { null, string } tilflyttingsland = null; - union { null, string } tilflyttingsstedIUtlandet = null; - union { null, date } utflyttingsdato = null; - } -} \ No newline at end of file diff --git a/libs/avro-schema/src/main/avro/leesah/verge/VergemaalEllerFremtidsfullmakt.avdl b/libs/avro-schema/src/main/avro/leesah/verge/VergemaalEllerFremtidsfullmakt.avdl deleted file mode 100644 index bd5daa856b0..00000000000 --- a/libs/avro-schema/src/main/avro/leesah/verge/VergemaalEllerFremtidsfullmakt.avdl +++ /dev/null @@ -1,17 +0,0 @@ -@namespace("no.nav.person.pdl.leesah.verge") -protocol VergeV1 { - import idl "../common/Personnavn.avdl"; - - record VergeEllerFullmektig { - union { null, no.nav.person.pdl.leesah.common.Personnavn } navn = null; - union { null, string } motpartsPersonident = null; - union { null, string } omfang = null; - union{null, boolean} omfangetErInnenPersonligOmraade = null; - } - - record VergemaalEllerFremtidsfullmakt { - union { null, string } type = null; - union { null, string } embete = null; - VergeEllerFullmektig vergeEllerFullmektig; - } -} From d6d4572af1e3bfe27f20a9476281d2e712ba92a3 Mon Sep 17 00:00:00 2001 From: Martineem Date: Mon, 1 Jul 2024 14:31:52 +0200 Subject: [PATCH 038/161] Endre objekt-type til records --- .../listener/DoedsfallListener.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 2e8f161ede4..a7ced11e1d7 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -2,6 +2,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import no.nav.person.pdl.leesah.Personhendelse; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.context.event.ContextRefreshedEvent; @@ -25,12 +26,10 @@ public void onApplicationEvent() { } @KafkaListener(topics = doedsfallTopic) - public void getHendelser(List> records) { - /* - for (ConsumerRecord record: records){ - log.info(record.value().toString()); + public void getHendelser(List> records) { + for (ConsumerRecord record: records){ + log.info(record.key()); } - */ log.info(records.getFirst().value().toString()); } } From acf2108d48855efaad457888525f54acec5c3a50 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Mon, 1 Jul 2024 15:03:23 +0200 Subject: [PATCH 039/161] Skriver ut records --- .../levendearbeidsforhold/listener/DoedsfallListener.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index a7ced11e1d7..bb7ad32ff68 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -28,7 +28,8 @@ public void onApplicationEvent() { @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { for (ConsumerRecord record: records){ - log.info(record.key()); + log.info("Record key:" + record.key()); + log.info("Record value:" + record.value().toString()); } log.info(records.getFirst().value().toString()); } From 3ae58b33b0c487366bf14a1fa469658ffad009f6 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Mon, 1 Jul 2024 15:16:36 +0200 Subject: [PATCH 040/161] Skriver ut records #deploy-levende-arbeidsforhold-service --- .../levendearbeidsforhold/listener/DoedsfallListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index bb7ad32ff68..d6d9f4be646 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -31,6 +31,6 @@ public void getHendelser(List> records) { log.info("Record key:" + record.key()); log.info("Record value:" + record.value().toString()); } - log.info(records.getFirst().value().toString()); + } } From c3e3afb9c33943834809820115204199c95ed43e Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 14:07:14 +0200 Subject: [PATCH 041/161] Lagt til Consumers.java --- .../config/Consumers.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java new file mode 100644 index 00000000000..e4884fe4dcc --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java @@ -0,0 +1,29 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.config; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import static lombok.AccessLevel.PACKAGE; + +/** + * Samler alle placeholders for ulike {@code consumers.*}-konfigurasjon her, dvs. subklasser av {@code ServerProperties}. + *

+ * Husk at Spring Boot bruker
relaxed binding + * mellom configuration properties og field names. + * + * @see ServerProperties + */ +@Configuration +@ConfigurationProperties(prefix = "consumers") +@NoArgsConstructor(access = PACKAGE) +@Getter +@Setter(PACKAGE) +public class Consumers { + + private ServerProperties levendeArbeidsforholdService; + +} \ No newline at end of file From 12ac7959b1a1a43a2f75d40a5088e67bbb88e614 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 14:10:14 +0200 Subject: [PATCH 042/161] Lagt til HentArbeidsforholdCommand.java --- .../command/HentArbeidsforholdCommand.java | 89 +++++++++++++++++++ .../dto/HentArbeidsforholdConsumer.java | 4 + 2 files changed, 93 insertions(+) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/dto/HentArbeidsforholdConsumer.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java new file mode 100644 index 00000000000..5f37fc2d6ac --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -0,0 +1,89 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.consumers.command; + +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import no.nav.testnav.libs.commands.utils.WebClientFilter; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import org.springframework.http.HttpHeaders; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import reactor.util.retry.Retry; + +import java.time.Duration; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.stream.Collectors; + +import static java.lang.String.format; + +/** + * Command for å hente arbeidsforhold fra Aareg. + * Brukt for å hente arbeidsforhold for en arbeidstaker. + * WebClient er konfigurert med en base url som er satt i konfigurasjonen. + * Token er en jwt token som brukes for å autentisere mot Aareg. + * Id er identen til arbeidstakeren som skal hentes arbeidsforhold for. + * Hvis det ikke finnes arbeidsforhold for identen vil en WebClientResponseException.NotFound bli kastet. + * Hvis det er en annen feil vil en WebClientResponseException bli kastet. + * Hvis det er en 5xx feil vil den prøve å hente på nytt 3 ganger med 5 sekunders intervall. + * Hvis det fortsatt feiler vil en WebClientResponseException bli kastet. + * Hvis alt går bra vil en liste med ArbeidsforholdDTO bli returnert. + */ +@Slf4j +@RequiredArgsConstructor +public class HentArbeidsforholdCommand implements Callable> { + private final WebClient webClient; + private final String token; + private final String id; + private static final String NAV_PERSON_IDENT = "Nav-Personident"; + private static final String CONSUMER = "Dolly"; + + + private static String getNavCallId() { + return format("%s %s", CONSUMER, UUID.randomUUID()); + } + + @SneakyThrows + @Override + public List call(){ + //Dette er metoden som er krevet når man implementerer Callable + log.info("Henter arbeidsforhold for ident {}.", id); + try { + //Bygger request URL og henter arneidsforhold fra Aareg med path = /api/v1/arbeidstaker/arbeidsforhold + var arbeidsforhold = webClient + .get() + .uri(builder -> builder + .path("/api/v1/arbeidstaker/arbeidsforhold") + .build(id) + ) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .header(NAV_PERSON_IDENT, id) + .header("Nav-Call-Id", getNavCallId()) + .header("Nav-Consumer-Id", CONSUMER) + .retrieve() + .bodyToMono(ArbeidsforholdDTO[].class) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .block(); + log.info("Hentet arbeidsforhold fra Aareg: " + Arrays.toString(arbeidsforhold)); + //Returnerer en liste med ArbeidsforholdDTO + return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); + } catch (WebClientResponseException.NotFound e) { + //Hvis det ikke finnes arbeidsforhold for identen vil en WebClientResponseException.NotFound bli kastet. + log.warn("Fant ikke arbeidsforhold for ident {}. Feilmelding {}", + id, + e.getResponseBodyAsString()); + return List.of(); + } catch (WebClientResponseException e) { + //Hvis det er en annen feil vil en WebClientResponseException bli kastet. + log.error( + "Klarer ikke å hente arbeidsforhold for ident: {}. Feilmelding: {}.", + id, + e.getResponseBodyAsString() + ); + throw e; + } + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/dto/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/dto/HentArbeidsforholdConsumer.java new file mode 100644 index 00000000000..74517ce97f7 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/dto/HentArbeidsforholdConsumer.java @@ -0,0 +1,4 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.consumers.dto; + +public class HentArbeidsforholdConsumer { +} From cc5e7c553e784cf8023040eb1a85d1896e0f0370 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 14:12:05 +0200 Subject: [PATCH 043/161] Lagt til HentArbeidsforholdConsumer.java --- .../consumers/HentArbeidsforholdConsumer.java | 79 +++++++++++++++++++ .../dto/HentArbeidsforholdConsumer.java | 4 - 2 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java delete mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/dto/HentArbeidsforholdConsumer.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java new file mode 100644 index 00000000000..a72aee02860 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -0,0 +1,79 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.consumers; + +import com.fasterxml.jackson.databind.ObjectMapper; +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; +import org.springframework.http.MediaType; +import org.springframework.http.codec.json.Jackson2JsonDecoder; +import org.springframework.http.codec.json.Jackson2JsonEncoder; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.ExchangeStrategies; +import org.springframework.web.reactive.function.client.WebClient; +import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; + +import java.util.ArrayList; +import java.util.List; + +import static java.util.Objects.nonNull; + +/** + * Consumer for å hente arbeidsforhold fra AAREG + * WebClient for å hente data fra AAREG + * TokenExchange for å hente token fra STS + * ObjectMapper for å mappe json til objekter + */ +@Component +public class HentArbeidsforholdConsumer { + private final WebClient webClient; + private final ServerProperties serverProperties; + private final TokenExchange tokenExchange; + + /** + * Konstruktør + * @param consumers er ett objekt som inneholder serverProperties som finnes i application.yml + * @param tokenExchange er ett objekt som henter token fra STS + * @param objectMapper er ett objekt som mapper json til objekter + */ + public HentArbeidsforholdConsumer( + Consumers consumers, + TokenExchange tokenExchange, + ObjectMapper objectMapper) { + // Henter serverProperties fra consumers + serverProperties = consumers.getLevendeArbeidsforholdService(); + this.tokenExchange = tokenExchange; + //Bygger en ExchangeStratefies for å mappe json til objekter + ExchangeStrategies exchangeStrategies = ExchangeStrategies + .builder() + .codecs(configurer -> { + configurer.defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + configurer.defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + }) + .build(); + //Bygger en WebClient for å hente data fra AAREG + //Legger inn echangestrategies og baseurl + this.webClient = WebClient + .builder() + .exchangeStrategies(exchangeStrategies) + .baseUrl("serverProperties.getUrl()") //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no + .build(); + } + + /** + * Henter arbeidsforhold for en arbeidstaker + * @param ident FNR/DNR/aktør id til arbeidstakeren + * @return Hvis arbeidsforhold finnes for identen vil en liste med ArbeidsforholdDTO bli returnert, ellers en tom liste + */ + public List getArbeidsforhold(String ident) { + var token = tokenExchange.exchange(serverProperties).block(); + if(nonNull(token)) { + return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); + } + return new ArrayList<>(); + } + +} + diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/dto/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/dto/HentArbeidsforholdConsumer.java deleted file mode 100644 index 74517ce97f7..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/dto/HentArbeidsforholdConsumer.java +++ /dev/null @@ -1,4 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.consumers.dto; - -public class HentArbeidsforholdConsumer { -} From 8aadf9c14e455f87bb6b9a71380f9006fd175bf3 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 14:14:21 +0200 Subject: [PATCH 044/161] Lagt service mappe og laget en tom service klasse --- .../levendearbeidsforhold/service/ArbeidsforholdService.java | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java new file mode 100644 index 00000000000..c0bf8748fa9 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -0,0 +1,2 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.service; + From 150412bed0d0fe1728fe63ccb4656c104708506a Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 14:18:43 +0200 Subject: [PATCH 045/161] =?UTF-8?q?Se=20om=20consumer=20fungerer=20n=C3=A5?= =?UTF-8?q?t=20deployet=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ArbeidsforholdService.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index c0bf8748fa9..783415bfcf4 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -1,2 +1,36 @@ package no.nav.registre.testnorge.levendearbeidsforhold.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Service for å sjekke arbeidsforhold. + * Henter arbeidsforhold fra Aareg og logger informasjonen. + * @see no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ArbeidsforholdService { + private final HentArbeidsforholdConsumer aaregArbeidsforholdConsumer; + @EventListener(ApplicationReadyEvent.class) + public void sjekkArbeidsforhold(String id) { + id = "30447515845"; + List arbeidsforhold = aaregArbeidsforholdConsumer.getArbeidsforhold(id); + if (arbeidsforhold != null) { + log.info("Arbeidsforhold funnet: {}", arbeidsforhold); + } else { + log.warn("Fant ikke arbeidsforhold med id: {}", id); + } + } + +} +//Les i appen ArbeidsforholdService \ No newline at end of file From 5b3f4485c1e927870e4a7645c527aa20c2cdf465 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 14:28:47 +0200 Subject: [PATCH 046/161] =?UTF-8?q?Se=20om=20consumer=20fungerer=20n=C3=A5?= =?UTF-8?q?t=20deployet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ArbeidsforholdService.java | 1 - .../levendearbeidsforhold/service/Test.java | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 783415bfcf4..34df072115c 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -23,7 +23,6 @@ public class ArbeidsforholdService { private final HentArbeidsforholdConsumer aaregArbeidsforholdConsumer; @EventListener(ApplicationReadyEvent.class) public void sjekkArbeidsforhold(String id) { - id = "30447515845"; List arbeidsforhold = aaregArbeidsforholdConsumer.getArbeidsforhold(id); if (arbeidsforhold != null) { log.info("Arbeidsforhold funnet: {}", arbeidsforhold); diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java new file mode 100644 index 00000000000..f02885e662e --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java @@ -0,0 +1,19 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.service; + +import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +@Service +public class Test { + private final String id = "30447515845"; + + @EventListener(ApplicationReadyEvent.class) + public void sjekkArbeidsforhold() { + ArbeidsforholdService arbeidsforholdService = new ArbeidsforholdService(new HentArbeidsforholdConsumer( + new Consumers().getAaregConsumer() + )); + } +} From 98b0ce17b7ea37fdf24f454d323649cfa21dd892 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 15:36:48 +0200 Subject: [PATCH 047/161] =?UTF-8?q?Se=20om=20jeg=20f=C3=A5r=20kj=C3=B8rt?= =?UTF-8?q?=20consumer=20#deploy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/Consumers.java | 2 +- .../consumers/HentArbeidsforholdConsumer.java | 2 +- .../service/ArbeidsforholdService.java | 32 +++++++++++++++++-- .../levendearbeidsforhold/service/Test.java | 8 +++-- .../src/main/resources/application.yml | 4 +++ 5 files changed, 40 insertions(+), 8 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java index e4884fe4dcc..c5654aff14d 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java @@ -24,6 +24,6 @@ @Setter(PACKAGE) public class Consumers { - private ServerProperties levendeArbeidsforholdService; + private ServerProperties testnavAaregProxy; } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index a72aee02860..1da7f1f757b 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -41,7 +41,7 @@ public HentArbeidsforholdConsumer( TokenExchange tokenExchange, ObjectMapper objectMapper) { // Henter serverProperties fra consumers - serverProperties = consumers.getLevendeArbeidsforholdService(); + serverProperties = consumers.getTestnavAaregProxy(); this.tokenExchange = tokenExchange; //Bygger en ExchangeStratefies for å mappe json til objekter ExchangeStrategies exchangeStrategies = ExchangeStrategies diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 34df072115c..165292954ae 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -1,14 +1,26 @@ package no.nav.registre.testnorge.levendearbeidsforhold.service; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.securitycore.domain.ResourceServerType; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.servletsecurity.action.GetAuthenticatedResourceServerType; +import no.nav.testnav.libs.servletsecurity.exchange.ExchangeToken; +import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; +import no.nav.testnav.libs.servletsecurity.properties.ResourceServerProperties; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; +import org.springframework.vault.authentication.JwtAuthentication; +import org.springframework.web.reactive.function.client.WebClient; +import java.util.ArrayList; import java.util.List; /** @@ -20,10 +32,24 @@ @Service @RequiredArgsConstructor public class ArbeidsforholdService { - private final HentArbeidsforholdConsumer aaregArbeidsforholdConsumer; + private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; + private final GetAuthenticatedResourceServerType getAuthenticatedResourceServerType; + private final Consumers consumers; + private String issuerUri; + private String jwkSetUri; + private String id; + private List acceptedAudience; @EventListener(ApplicationReadyEvent.class) - public void sjekkArbeidsforhold(String id) { - List arbeidsforhold = aaregArbeidsforholdConsumer.getArbeidsforhold(id); + public void sjekkArbeidsforhold() { + WebClient webClient = WebClient.create(); + ResourceServerType resourceServerType = getAuthenticatedResourceServerType.call(); + ServerProperties serverProperties = ServerProperties.of("dev-gcp", "dolly", "aareg", "https://aareg-services-q2.intern.dev.nav.no"); + + TokenExchange tokenExchange = new TokenExchange(getAuthenticatedResourceServerType, new ArrayList<>(), new ObjectMapper()); + + HentArbeidsforholdConsumer arbeid = new HentArbeidsforholdConsumer(consumers, tokenExchange, new ObjectMapper()); + id = "30447515845"; + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); if (arbeidsforhold != null) { log.info("Arbeidsforhold funnet: {}", arbeidsforhold); } else { diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java index f02885e662e..11aa96138bc 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java @@ -2,9 +2,11 @@ import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; @Service public class Test { @@ -12,8 +14,8 @@ public class Test { @EventListener(ApplicationReadyEvent.class) public void sjekkArbeidsforhold() { - ArbeidsforholdService arbeidsforholdService = new ArbeidsforholdService(new HentArbeidsforholdConsumer( - new Consumers().getAaregConsumer() - )); + WebClient webClient = WebClient.create(); + + } } diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index da3b3e5ec82..4cb68258a0e 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -14,6 +14,10 @@ spring: issuer-uri: ${AAD_ISSUER_URI}/v2.0 jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} + tokenx: + issuer-uri: ${TOKEN_X_ISSUER} + jwk-set-uri: ${TOKEN_X_JWKS_URI} + accepted-audience: ${TOKEN_X_CLIENT_ID} cloud: vault: enabled: false From db7a74086fc23882e0420646991f2289cb0ab9eb Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 15:47:58 +0200 Subject: [PATCH 048/161] =?UTF-8?q?Se=20om=20jeg=20f=C3=A5r=20kj=C3=B8rt?= =?UTF-8?q?=20consumer=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...LevendeArbeidsforholdServiceApplicationStarter.java | 5 ----- .../service/ArbeidsforholdService.java | 5 ----- .../testnorge/levendearbeidsforhold/service/Test.java | 10 ---------- .../src/main/resources/application.yml | 5 +---- 4 files changed, 1 insertion(+), 24 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java index 318e5fec869..ee0127a953c 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java @@ -2,11 +2,6 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; - - -import no.nav.registre.testnorge.levendearbeidsforhold.listener.DoedsfallListener; @SpringBootApplication diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 165292954ae..20075c758ac 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -10,14 +10,10 @@ import no.nav.testnav.libs.securitycore.domain.ResourceServerType; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.servletsecurity.action.GetAuthenticatedResourceServerType; -import no.nav.testnav.libs.servletsecurity.exchange.ExchangeToken; import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; -import no.nav.testnav.libs.servletsecurity.properties.ResourceServerProperties; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; -import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; -import org.springframework.vault.authentication.JwtAuthentication; import org.springframework.web.reactive.function.client.WebClient; import java.util.ArrayList; @@ -42,7 +38,6 @@ public class ArbeidsforholdService { @EventListener(ApplicationReadyEvent.class) public void sjekkArbeidsforhold() { WebClient webClient = WebClient.create(); - ResourceServerType resourceServerType = getAuthenticatedResourceServerType.call(); ServerProperties serverProperties = ServerProperties.of("dev-gcp", "dolly", "aareg", "https://aareg-services-q2.intern.dev.nav.no"); TokenExchange tokenExchange = new TokenExchange(getAuthenticatedResourceServerType, new ArrayList<>(), new ObjectMapper()); diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java index 11aa96138bc..ceda73d3198 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java @@ -1,8 +1,5 @@ package no.nav.registre.testnorge.levendearbeidsforhold.service; -import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; -import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; -import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; @@ -10,12 +7,5 @@ @Service public class Test { - private final String id = "30447515845"; - @EventListener(ApplicationReadyEvent.class) - public void sjekkArbeidsforhold() { - WebClient webClient = WebClient.create(); - - - } } diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 4cb68258a0e..ea229e04420 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -14,10 +14,7 @@ spring: issuer-uri: ${AAD_ISSUER_URI}/v2.0 jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} - tokenx: - issuer-uri: ${TOKEN_X_ISSUER} - jwk-set-uri: ${TOKEN_X_JWKS_URI} - accepted-audience: ${TOKEN_X_CLIENT_ID} + cloud: vault: enabled: false From 441bb74dc442096edd8bfdda39d5220d7db4cefc Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 23:04:27 +0200 Subject: [PATCH 049/161] =?UTF-8?q?Se=20om=20jeg=20f=C3=A5r=20kj=C3=B8rt?= =?UTF-8?q?=20consumer=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../levende-arbeidsforhold-service/config.yml | 4 +++ .../config/Consumers.java | 2 +- .../consumers/HentArbeidsforholdConsumer.java | 23 +++++++++++----- .../command/HentArbeidsforholdCommand.java | 6 ++--- .../listener/DoedsfallListener.java | 4 ++- .../service/ArbeidsforholdService.java | 26 ++++++++++++++++--- .../src/main/resources/application.yml | 18 +++++++++++-- 7 files changed, 66 insertions(+), 17 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/config.yml b/apps/levende-arbeidsforhold-service/config.yml index 976510aacf2..d15c1248921 100644 --- a/apps/levende-arbeidsforhold-service/config.yml +++ b/apps/levende-arbeidsforhold-service/config.yml @@ -15,6 +15,10 @@ spec: cluster: dev-gcp - application: testnav-oversikt-frontend cluster: dev-gcp + outbound: + rules: + - application: testnav-levende-arbeidsforhold-service + cluster: dev-gcp azure: application: allowAllUsers: true diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java index c5654aff14d..0a3ae25a891 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java @@ -24,6 +24,6 @@ @Setter(PACKAGE) public class Consumers { - private ServerProperties testnavAaregProxy; + private ServerProperties testnavLevendeArbeidsforholdService; } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index 1da7f1f757b..12adcd455ce 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -1,10 +1,13 @@ package no.nav.registre.testnorge.levendearbeidsforhold.consumers; import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.securitycore.domain.Token; import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.codec.json.Jackson2JsonDecoder; import org.springframework.http.codec.json.Jackson2JsonEncoder; @@ -24,12 +27,14 @@ * TokenExchange for å hente token fra STS * ObjectMapper for å mappe json til objekter */ +@Slf4j @Component public class HentArbeidsforholdConsumer { private final WebClient webClient; private final ServerProperties serverProperties; private final TokenExchange tokenExchange; + /** * Konstruktør * @param consumers er ett objekt som inneholder serverProperties som finnes i application.yml @@ -37,12 +42,15 @@ public class HentArbeidsforholdConsumer { * @param objectMapper er ett objekt som mapper json til objekter */ public HentArbeidsforholdConsumer( - Consumers consumers, + Consumers consumers, //TokenExchange tokenExchange TokenExchange tokenExchange, ObjectMapper objectMapper) { - // Henter serverProperties fra consumers - serverProperties = consumers.getTestnavAaregProxy(); this.tokenExchange = tokenExchange; + // Henter serverProperties fra consumers + + serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); + log.info("ServerProperties: {}", serverProperties.toString()); + //this.tokenExchange = tokenExchange; //Bygger en ExchangeStratefies for å mappe json til objekter ExchangeStrategies exchangeStrategies = ExchangeStrategies .builder() @@ -58,8 +66,9 @@ public HentArbeidsforholdConsumer( this.webClient = WebClient .builder() .exchangeStrategies(exchangeStrategies) - .baseUrl("serverProperties.getUrl()") //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no + .baseUrl("https://aareg-services-q2.intern.dev.nav.no") //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no .build(); + log.info("WebClient: {}", webClient.toString()); } /** @@ -67,10 +76,10 @@ public HentArbeidsforholdConsumer( * @param ident FNR/DNR/aktør id til arbeidstakeren * @return Hvis arbeidsforhold finnes for identen vil en liste med ArbeidsforholdDTO bli returnert, ellers en tom liste */ - public List getArbeidsforhold(String ident) { - var token = tokenExchange.exchange(serverProperties).block(); + public List getArbeidsforhold(String ident, Token token) { + var tokenX = tokenExchange.exchange(serverProperties).block(); if(nonNull(token)) { - return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); + return new HentArbeidsforholdCommand(webClient, tokenX.getTokenValue(), ident).call(); } return new ArrayList<>(); } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 5f37fc2d6ac..bfa6445d152 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -55,9 +55,9 @@ public List call(){ var arbeidsforhold = webClient .get() .uri(builder -> builder - .path("/api/v1/arbeidstaker/arbeidsforhold") - .build(id) - ) + .path("/q2/api/v1/arbeidstaker/arbeidsforhold") + .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") + .build()) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) .header(NAV_PERSON_IDENT, id) .header("Nav-Call-Id", getNavCallId()) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index d6d9f4be646..e999239bcf4 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -24,7 +24,7 @@ public class DoedsfallListener { public void onApplicationEvent() { log.info("Hello World"); } - +/* @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { for (ConsumerRecord record: records){ @@ -33,4 +33,6 @@ public void getHendelser(List> records) { } } + + */ } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 20075c758ac..b60457a7e87 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -7,18 +7,26 @@ import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.securitycore.domain.AccessToken; import no.nav.testnav.libs.securitycore.domain.ResourceServerType; import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.securitycore.domain.Token; import no.nav.testnav.libs.servletsecurity.action.GetAuthenticatedResourceServerType; import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; +import no.nav.testnav.libs.servletsecurity.exchange.TokenService; +import no.nav.testnav.libs.servletsecurity.exchange.TokenXService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; +import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; import org.springframework.web.reactive.function.client.WebClient; import java.util.ArrayList; import java.util.List; +import static no.nav.testnav.libs.securitycore.domain.ResourceServerType.TOKEN_X; + /** * Service for å sjekke arbeidsforhold. * Henter arbeidsforhold fra Aareg og logger informasjonen. @@ -31,20 +39,32 @@ public class ArbeidsforholdService { private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; private final GetAuthenticatedResourceServerType getAuthenticatedResourceServerType; private final Consumers consumers; + @Autowired + Environment env; private String issuerUri; private String jwkSetUri; private String id; private List acceptedAudience; + + @EventListener(ApplicationReadyEvent.class) public void sjekkArbeidsforhold() { WebClient webClient = WebClient.create(); ServerProperties serverProperties = ServerProperties.of("dev-gcp", "dolly", "aareg", "https://aareg-services-q2.intern.dev.nav.no"); TokenExchange tokenExchange = new TokenExchange(getAuthenticatedResourceServerType, new ArrayList<>(), new ObjectMapper()); - - HentArbeidsforholdConsumer arbeid = new HentArbeidsforholdConsumer(consumers, tokenExchange, new ObjectMapper()); + Token token = Token.builder().accessTokenValue(env.getProperty("VAULT_TOKEN")).build(); + log.info("Token: {}", token.getAccessTokenValue()); + List tokenServices = new ArrayList<>(); + HentArbeidsforholdConsumer arbeid = new HentArbeidsforholdConsumer( + consumers, + new TokenExchange( + getAuthenticatedResourceServerType, + tokenServices, + new ObjectMapper()) , + new ObjectMapper());//tokenExchange id = "30447515845"; - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id, token); if (arbeidsforhold != null) { log.info("Arbeidsforhold funnet: {}", arbeidsforhold); } else { diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index ea229e04420..6baea15a5e4 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -8,12 +8,17 @@ spring: version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle description: App for å hente PDL personer. security: - oauth2: + oauth2: + client: resourceserver: aad: issuer-uri: ${AAD_ISSUER_URI}/v2.0 jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} + tokenx: + issuer-uri: ${TOKEN_X_ISSUER} + jwk-set-uri: ${TOKEN_X_JWKS_URI} + accepted-audience: ${TOKEN_X_CLIENT_ID} cloud: vault: @@ -21,6 +26,9 @@ spring: kafka: consumer: group-id: testnav-levende-arbeidsforhold-service + jms: + cache: + consumers: springdoc: swagger-ui: disable-swagger-default-url: true @@ -46,4 +54,10 @@ server: encoding: charset: UTF-8 error: - include-message: always \ No newline at end of file + include-message: always +consumers: + testnav-levende-arbeidsforhold-service: + name: testnav-levende-arbeidsforhold-service + namespace: dolly + url: https://testnav-levende-arbeidsforhold-service.dev-fss-pub.nais.io + cluster: dev-gcp \ No newline at end of file From 1a62bd9547070fd409fc0420f82b3c354a3aa3e4 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 23:33:56 +0200 Subject: [PATCH 050/161] =?UTF-8?q?Se=20om=20jeg=20f=C3=A5r=20kj=C3=B8rt?= =?UTF-8?q?=20consumer=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/HentArbeidsforholdConsumer.java | 4 ++-- .../service/ArbeidsforholdService.java | 17 +++-------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index 12adcd455ce..d4eef4321f5 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -77,9 +77,9 @@ public HentArbeidsforholdConsumer( * @return Hvis arbeidsforhold finnes for identen vil en liste med ArbeidsforholdDTO bli returnert, ellers en tom liste */ public List getArbeidsforhold(String ident, Token token) { - var tokenX = tokenExchange.exchange(serverProperties).block(); + //var tokenX = tokenExchange.exchange(serverProperties).block(); if(nonNull(token)) { - return new HentArbeidsforholdCommand(webClient, tokenX.getTokenValue(), ident).call(); + return new HentArbeidsforholdCommand(webClient, token.getAccessTokenValue(), ident).call(); } return new ArrayList<>(); } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index b60457a7e87..08275fc8e1b 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -41,28 +41,17 @@ public class ArbeidsforholdService { private final Consumers consumers; @Autowired Environment env; - private String issuerUri; - private String jwkSetUri; private String id; - private List acceptedAudience; @EventListener(ApplicationReadyEvent.class) public void sjekkArbeidsforhold() { WebClient webClient = WebClient.create(); - ServerProperties serverProperties = ServerProperties.of("dev-gcp", "dolly", "aareg", "https://aareg-services-q2.intern.dev.nav.no"); + ServerProperties serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); - TokenExchange tokenExchange = new TokenExchange(getAuthenticatedResourceServerType, new ArrayList<>(), new ObjectMapper()); - Token token = Token.builder().accessTokenValue(env.getProperty("VAULT_TOKEN")).build(); + Token token = Token.builder().accessTokenValue(env.getProperty("MAGIC_TOKEN")).build(); log.info("Token: {}", token.getAccessTokenValue()); - List tokenServices = new ArrayList<>(); - HentArbeidsforholdConsumer arbeid = new HentArbeidsforholdConsumer( - consumers, - new TokenExchange( - getAuthenticatedResourceServerType, - tokenServices, - new ObjectMapper()) , - new ObjectMapper());//tokenExchange + id = "30447515845"; List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id, token); if (arbeidsforhold != null) { From 22a088bb29ac369fdc03a13f8e05936fcec309b7 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 23:37:33 +0200 Subject: [PATCH 051/161] =?UTF-8?q?Se=20om=20jeg=20f=C3=A5r=20kj=C3=B8rt?= =?UTF-8?q?=20consumer=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/HentArbeidsforholdConsumer.java | 6 +++--- .../service/ArbeidsforholdService.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index d4eef4321f5..fb85f847de9 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -76,10 +76,10 @@ public HentArbeidsforholdConsumer( * @param ident FNR/DNR/aktør id til arbeidstakeren * @return Hvis arbeidsforhold finnes for identen vil en liste med ArbeidsforholdDTO bli returnert, ellers en tom liste */ - public List getArbeidsforhold(String ident, Token token) { - //var tokenX = tokenExchange.exchange(serverProperties).block(); + public List getArbeidsforhold(String ident) { + var token = tokenExchange.exchange(serverProperties).block(); if(nonNull(token)) { - return new HentArbeidsforholdCommand(webClient, token.getAccessTokenValue(), ident).call(); + return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); } return new ArrayList<>(); } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 08275fc8e1b..5d90c243ea9 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -53,7 +53,7 @@ public void sjekkArbeidsforhold() { log.info("Token: {}", token.getAccessTokenValue()); id = "30447515845"; - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id, token); + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); if (arbeidsforhold != null) { log.info("Arbeidsforhold funnet: {}", arbeidsforhold); } else { From 273e88f6f560fc92ce5f2bd5debefded3f711da0 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 10:11:16 +0200 Subject: [PATCH 052/161] =?UTF-8?q?Forandret=20fra=20=C3=A5=20logge=20toke?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ArbeidsforholdService.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 5d90c243ea9..b6b6c2178b6 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -46,12 +46,10 @@ public class ArbeidsforholdService { @EventListener(ApplicationReadyEvent.class) public void sjekkArbeidsforhold() { + WebClient webClient = WebClient.create(); ServerProperties serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); - - Token token = Token.builder().accessTokenValue(env.getProperty("MAGIC_TOKEN")).build(); - log.info("Token: {}", token.getAccessTokenValue()); - + log.info("ServerProperties: {}", serverProperties.toString()); id = "30447515845"; List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); if (arbeidsforhold != null) { From b0023ccc255b0b8e2f7d041d4b428eb7fc518f29 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 10:27:22 +0200 Subject: [PATCH 053/161] =?UTF-8?q?Forandret=20fra=20=C3=A5=20logge=20toke?= =?UTF-8?q?n=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/HentArbeidsforholdConsumer.java | 15 +-------------- .../command/HentArbeidsforholdCommand.java | 17 ++--------------- .../listener/DoedsfallListener.java | 6 +++++- .../service/ArbeidsforholdService.java | 6 ------ .../levendearbeidsforhold/service/Test.java | 11 ----------- .../src/main/resources/application.yml | 2 +- 6 files changed, 9 insertions(+), 48 deletions(-) delete mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index fb85f847de9..89a83988da4 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -21,12 +21,6 @@ import static java.util.Objects.nonNull; -/** - * Consumer for å hente arbeidsforhold fra AAREG - * WebClient for å hente data fra AAREG - * TokenExchange for å hente token fra STS - * ObjectMapper for å mappe json til objekter - */ @Slf4j @Component public class HentArbeidsforholdConsumer { @@ -34,13 +28,6 @@ public class HentArbeidsforholdConsumer { private final ServerProperties serverProperties; private final TokenExchange tokenExchange; - - /** - * Konstruktør - * @param consumers er ett objekt som inneholder serverProperties som finnes i application.yml - * @param tokenExchange er ett objekt som henter token fra STS - * @param objectMapper er ett objekt som mapper json til objekter - */ public HentArbeidsforholdConsumer( Consumers consumers, //TokenExchange tokenExchange TokenExchange tokenExchange, @@ -66,7 +53,7 @@ public HentArbeidsforholdConsumer( this.webClient = WebClient .builder() .exchangeStrategies(exchangeStrategies) - .baseUrl("https://aareg-services-q2.intern.dev.nav.no") //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no + .baseUrl(serverProperties.getUrl()) //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no .build(); log.info("WebClient: {}", webClient.toString()); } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index bfa6445d152..9d3b1222bdb 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -19,18 +19,7 @@ import static java.lang.String.format; -/** - * Command for å hente arbeidsforhold fra Aareg. - * Brukt for å hente arbeidsforhold for en arbeidstaker. - * WebClient er konfigurert med en base url som er satt i konfigurasjonen. - * Token er en jwt token som brukes for å autentisere mot Aareg. - * Id er identen til arbeidstakeren som skal hentes arbeidsforhold for. - * Hvis det ikke finnes arbeidsforhold for identen vil en WebClientResponseException.NotFound bli kastet. - * Hvis det er en annen feil vil en WebClientResponseException bli kastet. - * Hvis det er en 5xx feil vil den prøve å hente på nytt 3 ganger med 5 sekunders intervall. - * Hvis det fortsatt feiler vil en WebClientResponseException bli kastet. - * Hvis alt går bra vil en liste med ArbeidsforholdDTO bli returnert. - */ + @Slf4j @RequiredArgsConstructor public class HentArbeidsforholdCommand implements Callable> { @@ -55,7 +44,7 @@ public List call(){ var arbeidsforhold = webClient .get() .uri(builder -> builder - .path("/q2/api/v1/arbeidstaker/arbeidsforhold") + .path("/api/v1/arbeidstaker/arbeidsforhold") .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") .build()) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) @@ -71,13 +60,11 @@ public List call(){ //Returnerer en liste med ArbeidsforholdDTO return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); } catch (WebClientResponseException.NotFound e) { - //Hvis det ikke finnes arbeidsforhold for identen vil en WebClientResponseException.NotFound bli kastet. log.warn("Fant ikke arbeidsforhold for ident {}. Feilmelding {}", id, e.getResponseBodyAsString()); return List.of(); } catch (WebClientResponseException e) { - //Hvis det er en annen feil vil en WebClientResponseException bli kastet. log.error( "Klarer ikke å hente arbeidsforhold for ident: {}. Feilmelding: {}.", id, diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index e999239bcf4..1c47862a51e 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -3,8 +3,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.person.pdl.leesah.Personhendelse; +import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.kafka.annotation.KafkaListener; @@ -19,10 +21,12 @@ @RequiredArgsConstructor public class DoedsfallListener { private static final String doedsfallTopic = "pdl.leesah-v1"; - + @Autowired + private final ArbeidsforholdService arbeidsforholdsService; @EventListener(ContextRefreshedEvent.class) public void onApplicationEvent() { log.info("Hello World"); + arbeidsforholdsService.sjekkArbeidsforhold(); } /* @KafkaListener(topics = doedsfallTopic) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index b6b6c2178b6..6e9ca1a400a 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -37,19 +37,13 @@ @RequiredArgsConstructor public class ArbeidsforholdService { private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; - private final GetAuthenticatedResourceServerType getAuthenticatedResourceServerType; private final Consumers consumers; @Autowired Environment env; private String id; - - @EventListener(ApplicationReadyEvent.class) public void sjekkArbeidsforhold() { - WebClient webClient = WebClient.create(); - ServerProperties serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); - log.info("ServerProperties: {}", serverProperties.toString()); id = "30447515845"; List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); if (arbeidsforhold != null) { diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java deleted file mode 100644 index ceda73d3198..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java +++ /dev/null @@ -1,11 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; - -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Service; -import org.springframework.web.reactive.function.client.WebClient; - -@Service -public class Test { - -} diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 6baea15a5e4..45d24d971ea 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -59,5 +59,5 @@ consumers: testnav-levende-arbeidsforhold-service: name: testnav-levende-arbeidsforhold-service namespace: dolly - url: https://testnav-levende-arbeidsforhold-service.dev-fss-pub.nais.io + url: https://testnav-levende-arbeidsforhold-service.dev-gcp-pub.nais.io cluster: dev-gcp \ No newline at end of file From 9c7a07c0f0876f596842f960f5966b080395a468 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 11:54:54 +0200 Subject: [PATCH 054/161] Lagt til controller --- .../consumers/HentArbeidsforholdConsumer.java | 48 +++++------ .../command/HentArbeidsforholdCommand.java | 29 +++---- .../domain/Arbeidsforhold.java | 86 +++++++++++++++++++ .../listener/DoedsfallListener.java | 9 +- .../provider/v1/ArbeidsforholdController.java | 26 ++++++ .../service/ArbeidsforholdService.java | 26 ++---- .../src/main/resources/application.yml | 4 +- 7 files changed, 159 insertions(+), 69 deletions(-) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/Arbeidsforhold.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index 89a83988da4..57fc19b04ce 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -18,58 +18,50 @@ import java.util.ArrayList; import java.util.List; +import java.util.Objects; +import java.util.Optional; import static java.util.Objects.nonNull; @Slf4j @Component public class HentArbeidsforholdConsumer { + private final WebClient webClient; private final ServerProperties serverProperties; private final TokenExchange tokenExchange; public HentArbeidsforholdConsumer( - Consumers consumers, //TokenExchange tokenExchange + Consumers consumers, TokenExchange tokenExchange, ObjectMapper objectMapper) { - this.tokenExchange = tokenExchange; - // Henter serverProperties fra consumers - serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); - log.info("ServerProperties: {}", serverProperties.toString()); - //this.tokenExchange = tokenExchange; - //Bygger en ExchangeStratefies for å mappe json til objekter - ExchangeStrategies exchangeStrategies = ExchangeStrategies + this.tokenExchange = tokenExchange; + ExchangeStrategies jacksonStrategy = ExchangeStrategies .builder() - .codecs(configurer -> { - configurer.defaultCodecs() - .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); - configurer.defaultCodecs() - .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); - }) + .codecs( + config -> { + config + .defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + config + .defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + }) .build(); - //Bygger en WebClient for å hente data fra AAREG - //Legger inn echangestrategies og baseurl this.webClient = WebClient .builder() - .exchangeStrategies(exchangeStrategies) - .baseUrl(serverProperties.getUrl()) //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no + .exchangeStrategies(jacksonStrategy) + .baseUrl(serverProperties.getUrl()) .build(); - log.info("WebClient: {}", webClient.toString()); } - /** - * Henter arbeidsforhold for en arbeidstaker - * @param ident FNR/DNR/aktør id til arbeidstakeren - * @return Hvis arbeidsforhold finnes for identen vil en liste med ArbeidsforholdDTO bli returnert, ellers en tom liste - */ - public List getArbeidsforhold(String ident) { + public List getArbeidsforholds(String ident, String miljo) { var token = tokenExchange.exchange(serverProperties).block(); - if(nonNull(token)) { + if (nonNull(token)) { return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); } return new ArrayList<>(); } -} - +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 9d3b1222bdb..7b3da14067f 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j; import no.nav.testnav.libs.commands.utils.WebClientFilter; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.servletcore.headers.NavHeaders; import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClientResponseException; @@ -12,6 +13,7 @@ import java.time.Duration; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.UUID; import java.util.concurrent.Callable; @@ -25,7 +27,8 @@ public class HentArbeidsforholdCommand implements Callable> { private final WebClient webClient; private final String token; - private final String id; + private final String ident; + private final String miljo = "Q2"; private static final String NAV_PERSON_IDENT = "Nav-Personident"; private static final String CONSUMER = "Dolly"; @@ -38,36 +41,32 @@ private static String getNavCallId() { @Override public List call(){ //Dette er metoden som er krevet når man implementerer Callable - log.info("Henter arbeidsforhold for ident {}.", id); try { - //Bygger request URL og henter arneidsforhold fra Aareg med path = /api/v1/arbeidstaker/arbeidsforhold var arbeidsforhold = webClient .get() .uri(builder -> builder - .path("/api/v1/arbeidstaker/arbeidsforhold") + .path("/{miljoe}/api/v1/arbeidstaker/arbeidsforhold") .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") - .build()) + .build(miljo)) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .header(NAV_PERSON_IDENT, id) - .header("Nav-Call-Id", getNavCallId()) - .header("Nav-Consumer-Id", CONSUMER) + .header(NAV_PERSON_IDENT, ident) + .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) + .header(NavHeaders.NAV_CALL_ID, getNavCallId()) .retrieve() .bodyToMono(ArbeidsforholdDTO[].class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)) - .block(); + .block(); + log.info("Hentet arbeidsforhold fra Aareg: " + Arrays.toString(arbeidsforhold)); - //Returnerer en liste med ArbeidsforholdDTO return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); } catch (WebClientResponseException.NotFound e) { - log.warn("Fant ikke arbeidsforhold for ident {}. Feilmelding {}", - id, - e.getResponseBodyAsString()); - return List.of(); + log.warn("Fant ikke arbeidsforhold for ident {} i miljø {}", ident, miljo); + return Collections.emptyList(); } catch (WebClientResponseException e) { log.error( "Klarer ikke å hente arbeidsforhold for ident: {}. Feilmelding: {}.", - id, + ident, e.getResponseBodyAsString() ); throw e; diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/Arbeidsforhold.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/Arbeidsforhold.java new file mode 100644 index 00000000000..b812655feab --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/Arbeidsforhold.java @@ -0,0 +1,86 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain; + +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +/* +@Slf4j +@AllArgsConstructor +public class Arbeidsforhold { + + private final ArbeidsforholdDTO dto; + + public no.nav.testnav.libs.dto.oppsummeringsdokumentservice.v1.ArbeidsforholdDTO toV1DTO() { + + if (dto.getArbeidsavtaler().isEmpty()) { + throw new ArbeidsforholdNotFoundException("Finner ikke arbeidsforhold"); + } + + if (dto.getArbeidsavtaler().size() > 1) { + log.warn("Fant flere arbeidsavtaler. Velger den første i listen"); + } + + + var arbeidsavtale = dto.getArbeidsavtaler().get(0); + + return no.nav.testnav.libs.dto.oppsummeringsdokumentservice.v1.ArbeidsforholdDTO + .builder() + .arbeidsforholdId(dto.getArbeidsforholdId()) + .stillingsprosent(arbeidsavtale.getStillingsprosent()) + .yrke(arbeidsavtale.getYrke()) + .arbeidstidsordning(arbeidsavtale.getArbeidstidsordning()) + .antallTimerPrUke(arbeidsavtale.getAntallTimerPrUke()) + .sistLoennsendring(arbeidsavtale.getSistLoennsendring()) + .fom(dto.getAnsettelsesperiode().getPeriode().getFom()) + .tom(dto.getAnsettelsesperiode().getPeriode().getTom()) + .ident(dto.getArbeidstaker().getOffentligIdent()) + .type(dto.getType()) + .build(); + } + + + public no.nav.registre.testnorge.arbeidsforholdservice.provider.v2.dto.ArbeidsforholdDTO toV2DTO() { + + var antallImerForTimeloennetList = dto.getAntallTimerForTimeloennet() == null ? + null : + dto.getAntallTimerForTimeloennet() + .stream() + .map(AntallTimerForTimeloennet::new) + .map(AntallTimerForTimeloennet::toDTO) + .toList(); + + var utenlandsopphold = dto.getUtenlandsopphold() == null ? + null : + dto.getUtenlandsopphold() + .stream() + .map(Utenlandsopphold::new) + .map(Utenlandsopphold::toDTO) + .toList(); + + var permisjoner = dto.getPermisjonPermitteringer() == null ? + null : + dto.getPermisjonPermitteringer() + .stream() + .map(Permisjon::new) + .map(Permisjon::toDTO) + .toList(); + + return no.nav.registre.testnorge.arbeidsforholdservice.provider.v2.dto.ArbeidsforholdDTO + .builder() + .type(dto.getType()) + .arbeidsforholdId(dto.getArbeidsforholdId()) + .antallTimerForTimeloennet(antallImerForTimeloennetList) + .arbeidsgiver(new Arbeidsgiver(dto.getArbeidsgiver()).toDTO()) + .ansettelsesperiode(new Ansettelsesperiode(dto.getAnsettelsesperiode()).toDTO()) + .arbeidsavtaler(dto.getArbeidsavtaler().stream().map(Arbeidsavtale::new).map(Arbeidsavtale::toDTO) + .toList()) + .fartoy(dto.getArbeidsavtaler().get(0).getSkipstype() == null ? null : new Fartoy(dto.getArbeidsavtaler().get(0)).toDTO()) + .arbeidstaker(new Arbeidstaker(dto.getArbeidstaker()).toDTO()) + .utenlandsopphold(utenlandsopphold) + .permisjonPermitteringer(permisjoner) + .build(); + } + +} + + */ diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 1c47862a51e..9d75350bce3 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -23,12 +23,13 @@ public class DoedsfallListener { private static final String doedsfallTopic = "pdl.leesah-v1"; @Autowired private final ArbeidsforholdService arbeidsforholdsService; - @EventListener(ContextRefreshedEvent.class) + //@EventListener(ContextRefreshedEvent.class) public void onApplicationEvent() { log.info("Hello World"); - arbeidsforholdsService.sjekkArbeidsforhold(); + String id = "30447515845"; + arbeidsforholdsService.getArbeidsforhold(id, "Q2"); } -/* + @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { for (ConsumerRecord record: records){ @@ -38,5 +39,5 @@ public void getHendelser(List> records) { } - */ + } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java new file mode 100644 index 00000000000..c8632d52e51 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java @@ -0,0 +1,26 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.provider.v1; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; +import no.nav.testnav.libs.dto.oppsummeringsdokumentservice.v1.ArbeidsforholdDTO; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@Slf4j +@RequestMapping("/api/v1/arbeidsforhold") +@RequiredArgsConstructor +public class ArbeidsforholdController { + private final ArbeidsforholdService arbeidsforholdService; + + @GetMapping("/{ident}/{orgnummer}/{arbeidsforholdId}") + public void getArbeidsforhold( + @PathVariable("ident") String ident + + ) { + var arbeidsforhold = arbeidsforholdService.getArbeidsforhold(ident, "Q2"); + log.info("Arbeidsforhold: " + arbeidsforhold.toString()); + + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 6e9ca1a400a..ff4851a8473 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; +import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import no.nav.testnav.libs.securitycore.domain.AccessToken; import no.nav.testnav.libs.securitycore.domain.ResourceServerType; @@ -24,33 +25,18 @@ import java.util.ArrayList; import java.util.List; +import java.util.Optional; -import static no.nav.testnav.libs.securitycore.domain.ResourceServerType.TOKEN_X; - -/** - * Service for å sjekke arbeidsforhold. - * Henter arbeidsforhold fra Aareg og logger informasjonen. - * @see no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer - */ @Slf4j @Service @RequiredArgsConstructor public class ArbeidsforholdService { - private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; - private final Consumers consumers; - @Autowired - Environment env; - private String id; - public void sjekkArbeidsforhold() { + private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; - id = "30447515845"; - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); - if (arbeidsforhold != null) { - log.info("Arbeidsforhold funnet: {}", arbeidsforhold); - } else { - log.warn("Fant ikke arbeidsforhold med id: {}", id); - } + public List getArbeidsforhold(String ident, String miljo) { + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident, miljo); + return arbeidsforhold; } } diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 45d24d971ea..e7b9f3a0c85 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -59,5 +59,5 @@ consumers: testnav-levende-arbeidsforhold-service: name: testnav-levende-arbeidsforhold-service namespace: dolly - url: https://testnav-levende-arbeidsforhold-service.dev-gcp-pub.nais.io - cluster: dev-gcp \ No newline at end of file + url: https://testnav-levende-arbeidsforhold-service.dev-fss-pub.nais.io + cluster: dev-fss \ No newline at end of file From 6673a4b5b002244e17cc22f03ac72f9ab47b300a Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Mon, 1 Jul 2024 16:05:43 +0200 Subject: [PATCH 055/161] Skriver ut kun doedsfall #deploy-levende-arbeidsforhold-service --- .../listener/DoedsfallListener.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index d6d9f4be646..0b47feea53e 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -5,6 +5,7 @@ import no.nav.person.pdl.leesah.Personhendelse; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.common.protocol.types.Field; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.kafka.annotation.KafkaListener; @@ -28,9 +29,26 @@ public void onApplicationEvent() { @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { for (ConsumerRecord record: records){ - log.info("Record key:" + record.key()); - log.info("Record value:" + record.value().toString()); + + String aktorID = record.key(); + + //Validerer om vi skal fortsette eller ignorere hendelsen + Boolean riktigHendelse = validerHendelse(record.value().get(4).toString()); + + if (riktigHendelse){ + log.info("DØDSFALL! Aktør-ID: {}", aktorID); + } + } } + + /** + * Validerer om hendelsen er dødsfall + * @param personhendelse - Hendelse/opplysningstype, f.eks: FOLKEREGISTERIDENTIFIKATOR_V1, NAVN_V1, SIVILSTAND_V1, etc. + * @return true dersom det er dødsfall, false hvis ikke + */ + private Boolean validerHendelse(String personhendelse) { + return personhendelse.equals("DOEDSFALL_V1"); + } } From bae2c1dc57c4d2b99f3e7ca3d839787bba1d5e3d Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Mon, 1 Jul 2024 16:18:20 +0200 Subject: [PATCH 056/161] =?UTF-8?q?Skriver=20ut=20til=20konsoll=20n=C3=A5r?= =?UTF-8?q?=20d=C3=B8dsfall-hendelser=20forekommer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../levendearbeidsforhold/listener/DoedsfallListener.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 0b47feea53e..7ca7d03031e 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -3,14 +3,11 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.person.pdl.leesah.Personhendelse; -import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerRecord; -import org.apache.kafka.common.protocol.types.Field; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; -import no.nav.testnav.libs.avro.hendelse.Hendelse; import java.util.List; @@ -35,8 +32,9 @@ public void getHendelser(List> records) { //Validerer om vi skal fortsette eller ignorere hendelsen Boolean riktigHendelse = validerHendelse(record.value().get(4).toString()); + //Flyt for doedsfall-hendelser if (riktigHendelse){ - log.info("DØDSFALL! Aktør-ID: {}", aktorID); + log.info("DØDSFALL. Aktør-ID: {} ", aktorID); } } From 5598b542c59302605ecf13f8bf3697cc58633a05 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 2 Jul 2024 11:53:56 +0200 Subject: [PATCH 057/161] =?UTF-8?q?La=20til=20en=20tilfeldig=20suffix=20fo?= =?UTF-8?q?r=20group-id=20s=C3=A5nn=20at=20vi=20ikke=20kun=20har=201=20kon?= =?UTF-8?q?sument?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../testnorge/levendearbeidsforhold/config/KafkaConfig.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java index 66217fdab89..362a1a7457e 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java @@ -39,6 +39,9 @@ public KafkaConfig(@Value("${spring.kafka.consumer.group-id}") String groupId) { } public ConsumerFactory consumerFactory() { + + String randomSuffixGroupID = String.valueOf((int)(Math.random() * 1000)); + InetSocketAddress inetSocketAddress = new InetSocketAddress(0); Map props = new HashMap<>(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, System.getenv("KAFKA_BROKERS")); @@ -56,7 +59,7 @@ public ConsumerFactory consumerFactory() { props.put(AbstractKafkaSchemaSerDeConfig.USER_INFO_CONFIG, username + ":" + password); props.put(AbstractKafkaSchemaSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, System.getenv("KAFKA_SCHEMA_REGISTRY")); - props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId); + props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId + randomSuffixGroupID); props.put(ConsumerConfig.CLIENT_ID_CONFIG, groupId + inetSocketAddress.getHostString()); props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, true); props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest"); From 0322a10f16414003d69255a9a3df8209b83568e3 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 12:09:35 +0200 Subject: [PATCH 058/161] =?UTF-8?q?F=C3=A5tt=20hjelp=20av=20Stian=20#deplo?= =?UTF-8?q?y-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../levende-arbeidsforhold-service/config.yml | 5 +++-- .../config/Consumers.java | 2 +- .../consumers/HentArbeidsforholdConsumer.java | 8 ++----- .../listener/DoedsfallListener.java | 12 +++++----- .../provider/v1/ArbeidsforholdController.java | 4 +--- .../service/ArbeidsforholdService.java | 22 ++----------------- .../src/main/resources/application.yml | 6 ++--- 7 files changed, 18 insertions(+), 41 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/config.yml b/apps/levende-arbeidsforhold-service/config.yml index d15c1248921..4a85907e78a 100644 --- a/apps/levende-arbeidsforhold-service/config.yml +++ b/apps/levende-arbeidsforhold-service/config.yml @@ -17,8 +17,9 @@ spec: cluster: dev-gcp outbound: rules: - - application: testnav-levende-arbeidsforhold-service - cluster: dev-gcp + - application: testnav-aareg-proxy + cluster: dev-fss + namespace: dolly azure: application: allowAllUsers: true diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java index 0a3ae25a891..c5654aff14d 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java @@ -24,6 +24,6 @@ @Setter(PACKAGE) public class Consumers { - private ServerProperties testnavLevendeArbeidsforholdService; + private ServerProperties testnavAaregProxy; } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index 57fc19b04ce..89e3b97ef26 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -5,9 +5,7 @@ import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import no.nav.testnav.libs.securitycore.domain.Token; import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.codec.json.Jackson2JsonDecoder; import org.springframework.http.codec.json.Jackson2JsonEncoder; @@ -18,8 +16,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Objects; -import java.util.Optional; import static java.util.Objects.nonNull; @@ -35,7 +31,7 @@ public HentArbeidsforholdConsumer( Consumers consumers, TokenExchange tokenExchange, ObjectMapper objectMapper) { - serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); + serverProperties = consumers.getTestnavAaregProxy(); this.tokenExchange = tokenExchange; ExchangeStrategies jacksonStrategy = ExchangeStrategies .builder() @@ -56,7 +52,7 @@ public HentArbeidsforholdConsumer( .build(); } - public List getArbeidsforholds(String ident, String miljo) { + public List getArbeidsforholds(String ident) { var token = tokenExchange.exchange(serverProperties).block(); if (nonNull(token)) { return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 9d75350bce3..c37775d2bf6 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -4,14 +4,12 @@ import lombok.extern.slf4j.Slf4j; import no.nav.person.pdl.leesah.Personhendelse; import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; -import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; -import no.nav.testnav.libs.avro.hendelse.Hendelse; import java.util.List; @@ -23,13 +21,13 @@ public class DoedsfallListener { private static final String doedsfallTopic = "pdl.leesah-v1"; @Autowired private final ArbeidsforholdService arbeidsforholdsService; - //@EventListener(ContextRefreshedEvent.class) + @EventListener(ApplicationReadyEvent.class) public void onApplicationEvent() { log.info("Hello World"); String id = "30447515845"; - arbeidsforholdsService.getArbeidsforhold(id, "Q2"); + arbeidsforholdsService.getArbeidsforhold(id); } - +/* @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { for (ConsumerRecord record: records){ @@ -40,4 +38,6 @@ public void getHendelser(List> records) { } + */ + } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java index c8632d52e51..319f5a63ffb 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java @@ -3,8 +3,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; -import no.nav.testnav.libs.dto.oppsummeringsdokumentservice.v1.ArbeidsforholdDTO; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController @@ -19,7 +17,7 @@ public void getArbeidsforhold( @PathVariable("ident") String ident ) { - var arbeidsforhold = arbeidsforholdService.getArbeidsforhold(ident, "Q2"); + var arbeidsforhold = arbeidsforholdService.getArbeidsforhold(ident); log.info("Arbeidsforhold: " + arbeidsforhold.toString()); } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index ff4851a8473..a3274c4c709 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -1,31 +1,13 @@ package no.nav.registre.testnorge.levendearbeidsforhold.service; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; -import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; -import no.nav.testnav.libs.securitycore.domain.AccessToken; -import no.nav.testnav.libs.securitycore.domain.ResourceServerType; -import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import no.nav.testnav.libs.securitycore.domain.Token; -import no.nav.testnav.libs.servletsecurity.action.GetAuthenticatedResourceServerType; -import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; -import no.nav.testnav.libs.servletsecurity.exchange.TokenService; -import no.nav.testnav.libs.servletsecurity.exchange.TokenXService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.event.EventListener; -import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; -import org.springframework.web.reactive.function.client.WebClient; -import java.util.ArrayList; import java.util.List; -import java.util.Optional; @Slf4j @Service @@ -34,8 +16,8 @@ public class ArbeidsforholdService { private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; - public List getArbeidsforhold(String ident, String miljo) { - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident, miljo); + public List getArbeidsforhold(String ident) { + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); return arbeidsforhold; } diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index e7b9f3a0c85..9f7d95dd344 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -56,8 +56,8 @@ server: error: include-message: always consumers: - testnav-levende-arbeidsforhold-service: - name: testnav-levende-arbeidsforhold-service + testnav-aareg-proxy: + name: testnav-aareg-proxy namespace: dolly - url: https://testnav-levende-arbeidsforhold-service.dev-fss-pub.nais.io + url: https://testnav-aareg-proxy.dev-fss-pub.nais.io cluster: dev-fss \ No newline at end of file From 0ea7d0b428c62ef568897f0c9cd6b2a7efa1ea67 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 12:44:31 +0200 Subject: [PATCH 059/161] =?UTF-8?q?F=C3=A5tt=20hjelp=20av=20Stian=20#deplo?= =?UTF-8?q?y-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 5 ++++- apps/levende-arbeidsforhold-service/build.gradle | 2 ++ apps/levende-arbeidsforhold-service/settings.gradle | 2 ++ .../levendearbeidsforhold/config/ApplicationConfig.java | 4 +++- .../src/main/resources/application.yml | 8 -------- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/apps/arbeidsforhold-service/src/main/resources/application.yml b/apps/arbeidsforhold-service/src/main/resources/application.yml index 0cebd9bc87e..1ede0997de3 100644 --- a/apps/arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/arbeidsforhold-service/src/main/resources/application.yml @@ -27,7 +27,10 @@ consumers: namespace: dolly url: https://testnav-aareg-proxy.dev-fss-pub.nais.io cluster: dev-fss - +spec: + azure: + application: + enabled: true management: endpoints: enabled-by-default: true diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle index 761bd0fb00d..bd66b0b1376 100644 --- a/apps/levende-arbeidsforhold-service/build.gradle +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -46,6 +46,7 @@ repositories { dependencies { implementation "no.nav.testnav.libs:kafka-config" implementation 'no.nav.testnav.libs:security-core' + implementation 'no.nav.testnav.libs:reactive-core' implementation 'no.nav.testnav.libs:servlet-core' implementation 'no.nav.testnav.libs:commands' implementation 'no.nav.testnav.libs:data-transfer-objects' @@ -83,6 +84,7 @@ dependencies { implementation 'no.nav.testnav.libs:data-transfer-objects' implementation 'no.nav.testnav.libs:kafka-config' implementation 'no.nav.testnav.libs:security-core' + implementation 'no.nav.testnav.libs:servlet-insecure-security' implementation 'no.nav.testnav.libs:servlet-core' } java { diff --git a/apps/levende-arbeidsforhold-service/settings.gradle b/apps/levende-arbeidsforhold-service/settings.gradle index b5f94f80eea..e7fe9f7600c 100644 --- a/apps/levende-arbeidsforhold-service/settings.gradle +++ b/apps/levende-arbeidsforhold-service/settings.gradle @@ -8,9 +8,11 @@ includeBuild "../../libs/kafka-config" includeBuild "../../libs/avro-schema" includeBuild '../../libs/security-core' includeBuild '../../libs/servlet-core' +includeBuild '../../libs/reactive-core' includeBuild '../../libs/commands' includeBuild '../../libs/data-transfer-objects' includeBuild '../../libs/servlet-security' +includeBuild '../../libs/servlet-insecure-security' includeBuild '../../libs/testing' includeBuild '../../.github/workflows' diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java index 5870fadc8b4..8c45c911192 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java @@ -1,5 +1,6 @@ package no.nav.registre.testnorge.levendearbeidsforhold.config; +import no.nav.testnav.libs.standalone.servletsecurity.config.InsecureJwtServerToServerConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -9,7 +10,8 @@ @Configuration @Import({ ApplicationCoreConfig.class, - SecureOAuth2ServerToServerConfiguration.class + InsecureJwtServerToServerConfiguration.class + // SecureOAuth2ServerToServerConfiguration.class }) public class ApplicationConfig { diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 9f7d95dd344..60ca83a3b5c 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -15,20 +15,12 @@ spring: issuer-uri: ${AAD_ISSUER_URI}/v2.0 jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} - tokenx: - issuer-uri: ${TOKEN_X_ISSUER} - jwk-set-uri: ${TOKEN_X_JWKS_URI} - accepted-audience: ${TOKEN_X_CLIENT_ID} - cloud: vault: enabled: false kafka: consumer: group-id: testnav-levende-arbeidsforhold-service - jms: - cache: - consumers: springdoc: swagger-ui: disable-swagger-default-url: true From 2c8516bb3a3cfc2438b003bcc10c82421e02f0bb Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 12:56:41 +0200 Subject: [PATCH 060/161] =?UTF-8?q?F=C3=A5tt=20hjelp=20av=20Stian=20#deplo?= =?UTF-8?q?y-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/HentArbeidsforholdConsumer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index 89e3b97ef26..9c2e000f7e2 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -5,7 +5,7 @@ import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; import org.springframework.http.MediaType; import org.springframework.http.codec.json.Jackson2JsonDecoder; import org.springframework.http.codec.json.Jackson2JsonEncoder; From 2bce5542945ab73aacb093b0fe8d13eeff056541 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 13:08:51 +0200 Subject: [PATCH 061/161] =?UTF-8?q?Tror=20at=20man=20f=C3=A5r=20hentet=20a?= =?UTF-8?q?rbeidsforhold?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../levendearbeidsforhold/config/ApplicationConfig.java | 2 -- .../consumers/HentArbeidsforholdConsumer.java | 2 ++ .../consumers/command/HentArbeidsforholdCommand.java | 3 ++- .../levendearbeidsforhold/listener/DoedsfallListener.java | 8 ++------ 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java index 8c45c911192..204d355ff85 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java @@ -5,13 +5,11 @@ import org.springframework.context.annotation.Import; import no.nav.testnav.libs.servletcore.config.ApplicationCoreConfig; -import no.nav.testnav.libs.servletsecurity.config.SecureOAuth2ServerToServerConfiguration; @Configuration @Import({ ApplicationCoreConfig.class, InsecureJwtServerToServerConfiguration.class - // SecureOAuth2ServerToServerConfiguration.class }) public class ApplicationConfig { diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index 9c2e000f7e2..d0d6b334c95 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -32,6 +32,7 @@ public HentArbeidsforholdConsumer( TokenExchange tokenExchange, ObjectMapper objectMapper) { serverProperties = consumers.getTestnavAaregProxy(); + log.info("ServerProperties: {}", serverProperties); this.tokenExchange = tokenExchange; ExchangeStrategies jacksonStrategy = ExchangeStrategies .builder() @@ -54,6 +55,7 @@ public HentArbeidsforholdConsumer( public List getArbeidsforholds(String ident) { var token = tokenExchange.exchange(serverProperties).block(); + log.info("Token: {}", token); if (nonNull(token)) { return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 7b3da14067f..47edd193716 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -28,7 +28,7 @@ public class HentArbeidsforholdCommand implements Callable call(){ return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); } catch (WebClientResponseException.NotFound e) { log.warn("Fant ikke arbeidsforhold for ident {} i miljø {}", ident, miljo); + log.info("Feilmelding: {}", e.getResponseBodyAsString()); return Collections.emptyList(); } catch (WebClientResponseException e) { log.error( diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index c37775d2bf6..9bc9e7f5b8a 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -21,13 +21,13 @@ public class DoedsfallListener { private static final String doedsfallTopic = "pdl.leesah-v1"; @Autowired private final ArbeidsforholdService arbeidsforholdsService; - @EventListener(ApplicationReadyEvent.class) + //@EventListener(ApplicationReadyEvent.class) public void onApplicationEvent() { log.info("Hello World"); String id = "30447515845"; arbeidsforholdsService.getArbeidsforhold(id); } -/* + @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { for (ConsumerRecord record: records){ @@ -36,8 +36,4 @@ public void getHendelser(List> records) { } } - - - */ - } From 61a66a71a7c84a250e4bea107ac70318f4b8dfce Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 14:00:32 +0200 Subject: [PATCH 062/161] Lagt til endre arbeidsforhold command og consumer --- .../EndreArbeidsforholdConsumer.java | 48 +++++++++++++++++++ .../command/EndreArbeidsforholdCommand.java | 35 ++++++++++++++ .../listener/DoedsfallListener.java | 4 +- 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/EndreArbeidsforholdConsumer.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/EndreArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/EndreArbeidsforholdConsumer.java new file mode 100644 index 00000000000..e4d6683029b --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/EndreArbeidsforholdConsumer.java @@ -0,0 +1,48 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.consumers; + +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; +import org.springframework.http.MediaType; +import org.springframework.http.codec.json.Jackson2JsonDecoder; +import org.springframework.http.codec.json.Jackson2JsonEncoder; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.ExchangeStrategies; +import org.springframework.web.reactive.function.client.WebClient; + +@Slf4j +@Component +public class EndreArbeidsforholdConsumer { + private final WebClient webClient; + private final ServerProperties serverProperties; + private final TokenExchange tokenExchange; + + public EndreArbeidsforholdConsumer( + Consumers consumers, + TokenExchange tokenExchange, + ObjectMapper objectMapper) { + + serverProperties = consumers.getTestnavAaregProxy(); + log.info("ServerProperties: {}", serverProperties); + this.tokenExchange = tokenExchange; + ExchangeStrategies jacksonStrategy = ExchangeStrategies + .builder() + .codecs( + config -> { + config + .defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + config + .defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + }) + .build(); + this.webClient = WebClient + .builder() + .exchangeStrategies(jacksonStrategy) + .baseUrl(serverProperties.getUrl()) + .build(); +} +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java new file mode 100644 index 00000000000..ae2d38a470e --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -0,0 +1,35 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.consumers.command; + +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import org.springframework.web.reactive.function.client.WebClient; + +import java.util.List; +import java.util.UUID; + +import static java.lang.String.format; +/* +@Slf4j +@RequiredArgsConstructor +public class EndreArbeidsforholdCommand { + private final WebClient webClient; + private final String token; + private final String ident; + private final String miljo = "q2"; + private static final String NAV_PERSON_IDENT = "Nav-Personident"; + private static final String CONSUMER = "Dolly"; + + private static String getNavCallId() { + return format("%s %s", CONSUMER, UUID.randomUUID()); + } + /* + @SneakyThrows + @Override + public List update(){ + return null; + } +} + + */ diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 9bc9e7f5b8a..94a0d0479b4 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -27,7 +27,7 @@ public void onApplicationEvent() { String id = "30447515845"; arbeidsforholdsService.getArbeidsforhold(id); } - +/* @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { for (ConsumerRecord record: records){ @@ -36,4 +36,6 @@ public void getHendelser(List> records) { } } + + */ } From 21f13285110a114738a0a1c00078f35e1dc1ce7d Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 14:08:50 +0200 Subject: [PATCH 063/161] Lagt til endre arbeidsforhold command og consumer --- apps/levende-arbeidsforhold-service/config.yml | 4 ++++ .../consumers/HentArbeidsforholdConsumer.java | 1 + .../command/HentArbeidsforholdCommand.java | 6 +++--- .../service/ArbeidsforholdService.java | 16 +++++++++++++--- .../src/main/resources/application.yml | 8 +++++++- 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/config.yml b/apps/levende-arbeidsforhold-service/config.yml index 976510aacf2..d15c1248921 100644 --- a/apps/levende-arbeidsforhold-service/config.yml +++ b/apps/levende-arbeidsforhold-service/config.yml @@ -15,6 +15,10 @@ spec: cluster: dev-gcp - application: testnav-oversikt-frontend cluster: dev-gcp + outbound: + rules: + - application: testnav-levende-arbeidsforhold-service + cluster: dev-gcp azure: application: allowAllUsers: true diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index 1da7f1f757b..ca31756b61d 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -60,6 +60,7 @@ public HentArbeidsforholdConsumer( .exchangeStrategies(exchangeStrategies) .baseUrl("serverProperties.getUrl()") //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no .build(); + log.info("WebClient: {}", webClient.toString()); } /** diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 5f37fc2d6ac..bfa6445d152 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -55,9 +55,9 @@ public List call(){ var arbeidsforhold = webClient .get() .uri(builder -> builder - .path("/api/v1/arbeidstaker/arbeidsforhold") - .build(id) - ) + .path("/q2/api/v1/arbeidstaker/arbeidsforhold") + .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") + .build()) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) .header(NAV_PERSON_IDENT, id) .header("Nav-Call-Id", getNavCallId()) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 20075c758ac..a682eb3aa16 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -35,16 +35,26 @@ public class ArbeidsforholdService { private String jwkSetUri; private String id; private List acceptedAudience; + + @EventListener(ApplicationReadyEvent.class) public void sjekkArbeidsforhold() { WebClient webClient = WebClient.create(); ServerProperties serverProperties = ServerProperties.of("dev-gcp", "dolly", "aareg", "https://aareg-services-q2.intern.dev.nav.no"); TokenExchange tokenExchange = new TokenExchange(getAuthenticatedResourceServerType, new ArrayList<>(), new ObjectMapper()); - - HentArbeidsforholdConsumer arbeid = new HentArbeidsforholdConsumer(consumers, tokenExchange, new ObjectMapper()); + Token token = Token.builder().accessTokenValue(env.getProperty("VAULT_TOKEN")).build(); + log.info("Token: {}", token.getAccessTokenValue()); + List tokenServices = new ArrayList<>(); + HentArbeidsforholdConsumer arbeid = new HentArbeidsforholdConsumer( + consumers, + new TokenExchange( + getAuthenticatedResourceServerType, + tokenServices, + new ObjectMapper()) , + new ObjectMapper());//tokenExchange id = "30447515845"; - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id, token); if (arbeidsforhold != null) { log.info("Arbeidsforhold funnet: {}", arbeidsforhold); } else { diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index ea229e04420..52cbb166447 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -46,4 +46,10 @@ server: encoding: charset: UTF-8 error: - include-message: always \ No newline at end of file + include-message: always +consumers: + testnav-levende-arbeidsforhold-service: + name: testnav-levende-arbeidsforhold-service + namespace: dolly + url: https://testnav-levende-arbeidsforhold-service.dev-fss-pub.nais.io + cluster: dev-gcp \ No newline at end of file From 1d96864d049d355b1d4d9376d21e9a646eda324d Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 14:09:30 +0200 Subject: [PATCH 064/161] Lagt til endre arbeidsforhold command og consumer --- .../consumers/HentArbeidsforholdConsumer.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index ca31756b61d..b96fc388314 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -24,12 +24,14 @@ * TokenExchange for å hente token fra STS * ObjectMapper for å mappe json til objekter */ +@Slf4j @Component public class HentArbeidsforholdConsumer { private final WebClient webClient; private final ServerProperties serverProperties; private final TokenExchange tokenExchange; + /** * Konstruktør * @param consumers er ett objekt som inneholder serverProperties som finnes i application.yml @@ -40,6 +42,7 @@ public HentArbeidsforholdConsumer( Consumers consumers, TokenExchange tokenExchange, ObjectMapper objectMapper) { + this.tokenExchange = tokenExchange; // Henter serverProperties fra consumers serverProperties = consumers.getTestnavAaregProxy(); this.tokenExchange = tokenExchange; From 87791b1baa2bfdeb0328a94d228258e430058e35 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 23:33:56 +0200 Subject: [PATCH 065/161] =?UTF-8?q?Se=20om=20jeg=20f=C3=A5r=20kj=C3=B8rt?= =?UTF-8?q?=20consumer=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/HentArbeidsforholdConsumer.java | 19 ++++++++++++------- .../service/ArbeidsforholdService.java | 15 ++++++++++++--- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index b96fc388314..12adcd455ce 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -1,10 +1,13 @@ package no.nav.registre.testnorge.levendearbeidsforhold.consumers; import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.securitycore.domain.Token; import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.codec.json.Jackson2JsonDecoder; import org.springframework.http.codec.json.Jackson2JsonEncoder; @@ -39,13 +42,15 @@ public class HentArbeidsforholdConsumer { * @param objectMapper er ett objekt som mapper json til objekter */ public HentArbeidsforholdConsumer( - Consumers consumers, + Consumers consumers, //TokenExchange tokenExchange TokenExchange tokenExchange, ObjectMapper objectMapper) { this.tokenExchange = tokenExchange; // Henter serverProperties fra consumers - serverProperties = consumers.getTestnavAaregProxy(); - this.tokenExchange = tokenExchange; + + serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); + log.info("ServerProperties: {}", serverProperties.toString()); + //this.tokenExchange = tokenExchange; //Bygger en ExchangeStratefies for å mappe json til objekter ExchangeStrategies exchangeStrategies = ExchangeStrategies .builder() @@ -61,7 +66,7 @@ public HentArbeidsforholdConsumer( this.webClient = WebClient .builder() .exchangeStrategies(exchangeStrategies) - .baseUrl("serverProperties.getUrl()") //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no + .baseUrl("https://aareg-services-q2.intern.dev.nav.no") //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no .build(); log.info("WebClient: {}", webClient.toString()); } @@ -71,10 +76,10 @@ public HentArbeidsforholdConsumer( * @param ident FNR/DNR/aktør id til arbeidstakeren * @return Hvis arbeidsforhold finnes for identen vil en liste med ArbeidsforholdDTO bli returnert, ellers en tom liste */ - public List getArbeidsforhold(String ident) { - var token = tokenExchange.exchange(serverProperties).block(); + public List getArbeidsforhold(String ident, Token token) { + var tokenX = tokenExchange.exchange(serverProperties).block(); if(nonNull(token)) { - return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); + return new HentArbeidsforholdCommand(webClient, tokenX.getTokenValue(), ident).call(); } return new ArrayList<>(); } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index a682eb3aa16..b4b59277412 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -7,18 +7,26 @@ import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.securitycore.domain.AccessToken; import no.nav.testnav.libs.securitycore.domain.ResourceServerType; import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.securitycore.domain.Token; import no.nav.testnav.libs.servletsecurity.action.GetAuthenticatedResourceServerType; import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; +import no.nav.testnav.libs.servletsecurity.exchange.TokenService; +import no.nav.testnav.libs.servletsecurity.exchange.TokenXService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; +import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; import org.springframework.web.reactive.function.client.WebClient; import java.util.ArrayList; import java.util.List; +import static no.nav.testnav.libs.securitycore.domain.ResourceServerType.TOKEN_X; + /** * Service for å sjekke arbeidsforhold. * Henter arbeidsforhold fra Aareg og logger informasjonen. @@ -31,6 +39,8 @@ public class ArbeidsforholdService { private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; private final GetAuthenticatedResourceServerType getAuthenticatedResourceServerType; private final Consumers consumers; + @Autowired + Environment env; private String issuerUri; private String jwkSetUri; private String id; @@ -40,10 +50,9 @@ public class ArbeidsforholdService { @EventListener(ApplicationReadyEvent.class) public void sjekkArbeidsforhold() { WebClient webClient = WebClient.create(); - ServerProperties serverProperties = ServerProperties.of("dev-gcp", "dolly", "aareg", "https://aareg-services-q2.intern.dev.nav.no"); + ServerProperties serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); - TokenExchange tokenExchange = new TokenExchange(getAuthenticatedResourceServerType, new ArrayList<>(), new ObjectMapper()); - Token token = Token.builder().accessTokenValue(env.getProperty("VAULT_TOKEN")).build(); + Token token = Token.builder().accessTokenValue(env.getProperty("MAGIC_TOKEN")).build(); log.info("Token: {}", token.getAccessTokenValue()); List tokenServices = new ArrayList<>(); HentArbeidsforholdConsumer arbeid = new HentArbeidsforholdConsumer( From 8f813f49f7b700967a91d63a07d415087a058385 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 1 Jul 2024 23:37:33 +0200 Subject: [PATCH 066/161] =?UTF-8?q?Se=20om=20jeg=20f=C3=A5r=20kj=C3=B8rt?= =?UTF-8?q?=20consumer=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/HentArbeidsforholdConsumer.java | 4 ++-- .../levendearbeidsforhold/service/ArbeidsforholdService.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index 12adcd455ce..d4eef4321f5 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -77,9 +77,9 @@ public HentArbeidsforholdConsumer( * @return Hvis arbeidsforhold finnes for identen vil en liste med ArbeidsforholdDTO bli returnert, ellers en tom liste */ public List getArbeidsforhold(String ident, Token token) { - var tokenX = tokenExchange.exchange(serverProperties).block(); + //var tokenX = tokenExchange.exchange(serverProperties).block(); if(nonNull(token)) { - return new HentArbeidsforholdCommand(webClient, tokenX.getTokenValue(), ident).call(); + return new HentArbeidsforholdCommand(webClient, token.getAccessTokenValue(), ident).call(); } return new ArrayList<>(); } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index b4b59277412..c41a57e7943 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -63,7 +63,7 @@ public void sjekkArbeidsforhold() { new ObjectMapper()) , new ObjectMapper());//tokenExchange id = "30447515845"; - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id, token); + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); if (arbeidsforhold != null) { log.info("Arbeidsforhold funnet: {}", arbeidsforhold); } else { From 3868d2bbcc4ed2c57166de1ca05ce342c9e3523c Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 10:11:16 +0200 Subject: [PATCH 067/161] =?UTF-8?q?Forandret=20fra=20=C3=A5=20logge=20toke?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ArbeidsforholdService.java | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index c41a57e7943..5d90c243ea9 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -41,10 +41,7 @@ public class ArbeidsforholdService { private final Consumers consumers; @Autowired Environment env; - private String issuerUri; - private String jwkSetUri; private String id; - private List acceptedAudience; @EventListener(ApplicationReadyEvent.class) @@ -54,14 +51,7 @@ public void sjekkArbeidsforhold() { Token token = Token.builder().accessTokenValue(env.getProperty("MAGIC_TOKEN")).build(); log.info("Token: {}", token.getAccessTokenValue()); - List tokenServices = new ArrayList<>(); - HentArbeidsforholdConsumer arbeid = new HentArbeidsforholdConsumer( - consumers, - new TokenExchange( - getAuthenticatedResourceServerType, - tokenServices, - new ObjectMapper()) , - new ObjectMapper());//tokenExchange + id = "30447515845"; List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); if (arbeidsforhold != null) { From fa7f060f6fe600025519711a87202e72db280c35 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 10:27:22 +0200 Subject: [PATCH 068/161] =?UTF-8?q?Forandret=20fra=20=C3=A5=20logge=20toke?= =?UTF-8?q?n=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/HentArbeidsforholdConsumer.java | 15 +---------- .../command/HentArbeidsforholdCommand.java | 17 ++---------- .../listener/DoedsfallListener.java | 26 +++++-------------- .../service/ArbeidsforholdService.java | 6 ++--- .../levendearbeidsforhold/service/Test.java | 11 -------- .../src/main/resources/application.yml | 2 +- 6 files changed, 12 insertions(+), 65 deletions(-) delete mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index d4eef4321f5..82276b5f1b2 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -21,12 +21,6 @@ import static java.util.Objects.nonNull; -/** - * Consumer for å hente arbeidsforhold fra AAREG - * WebClient for å hente data fra AAREG - * TokenExchange for å hente token fra STS - * ObjectMapper for å mappe json til objekter - */ @Slf4j @Component public class HentArbeidsforholdConsumer { @@ -34,13 +28,6 @@ public class HentArbeidsforholdConsumer { private final ServerProperties serverProperties; private final TokenExchange tokenExchange; - - /** - * Konstruktør - * @param consumers er ett objekt som inneholder serverProperties som finnes i application.yml - * @param tokenExchange er ett objekt som henter token fra STS - * @param objectMapper er ett objekt som mapper json til objekter - */ public HentArbeidsforholdConsumer( Consumers consumers, //TokenExchange tokenExchange TokenExchange tokenExchange, @@ -66,7 +53,7 @@ public HentArbeidsforholdConsumer( this.webClient = WebClient .builder() .exchangeStrategies(exchangeStrategies) - .baseUrl("https://aareg-services-q2.intern.dev.nav.no") //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no + .baseUrl(serverProperties.getUrl()) //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no .build(); log.info("WebClient: {}", webClient.toString()); } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index bfa6445d152..9d3b1222bdb 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -19,18 +19,7 @@ import static java.lang.String.format; -/** - * Command for å hente arbeidsforhold fra Aareg. - * Brukt for å hente arbeidsforhold for en arbeidstaker. - * WebClient er konfigurert med en base url som er satt i konfigurasjonen. - * Token er en jwt token som brukes for å autentisere mot Aareg. - * Id er identen til arbeidstakeren som skal hentes arbeidsforhold for. - * Hvis det ikke finnes arbeidsforhold for identen vil en WebClientResponseException.NotFound bli kastet. - * Hvis det er en annen feil vil en WebClientResponseException bli kastet. - * Hvis det er en 5xx feil vil den prøve å hente på nytt 3 ganger med 5 sekunders intervall. - * Hvis det fortsatt feiler vil en WebClientResponseException bli kastet. - * Hvis alt går bra vil en liste med ArbeidsforholdDTO bli returnert. - */ + @Slf4j @RequiredArgsConstructor public class HentArbeidsforholdCommand implements Callable> { @@ -55,7 +44,7 @@ public List call(){ var arbeidsforhold = webClient .get() .uri(builder -> builder - .path("/q2/api/v1/arbeidstaker/arbeidsforhold") + .path("/api/v1/arbeidstaker/arbeidsforhold") .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") .build()) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) @@ -71,13 +60,11 @@ public List call(){ //Returnerer en liste med ArbeidsforholdDTO return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); } catch (WebClientResponseException.NotFound e) { - //Hvis det ikke finnes arbeidsforhold for identen vil en WebClientResponseException.NotFound bli kastet. log.warn("Fant ikke arbeidsforhold for ident {}. Feilmelding {}", id, e.getResponseBodyAsString()); return List.of(); } catch (WebClientResponseException e) { - //Hvis det er en annen feil vil en WebClientResponseException bli kastet. log.error( "Klarer ikke å hente arbeidsforhold for ident: {}. Feilmelding: {}.", id, diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 7ca7d03031e..e999239bcf4 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -3,11 +3,13 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.person.pdl.leesah.Personhendelse; +import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; +import no.nav.testnav.libs.avro.hendelse.Hendelse; import java.util.List; @@ -22,31 +24,15 @@ public class DoedsfallListener { public void onApplicationEvent() { log.info("Hello World"); } - +/* @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { for (ConsumerRecord record: records){ - - String aktorID = record.key(); - - //Validerer om vi skal fortsette eller ignorere hendelsen - Boolean riktigHendelse = validerHendelse(record.value().get(4).toString()); - - //Flyt for doedsfall-hendelser - if (riktigHendelse){ - log.info("DØDSFALL. Aktør-ID: {} ", aktorID); - } - + log.info("Record key:" + record.key()); + log.info("Record value:" + record.value().toString()); } } - /** - * Validerer om hendelsen er dødsfall - * @param personhendelse - Hendelse/opplysningstype, f.eks: FOLKEREGISTERIDENTIFIKATOR_V1, NAVN_V1, SIVILSTAND_V1, etc. - * @return true dersom det er dødsfall, false hvis ikke - */ - private Boolean validerHendelse(String personhendelse) { - return personhendelse.equals("DOEDSFALL_V1"); - } + */ } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 5d90c243ea9..b6b6c2178b6 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -46,12 +46,10 @@ public class ArbeidsforholdService { @EventListener(ApplicationReadyEvent.class) public void sjekkArbeidsforhold() { + WebClient webClient = WebClient.create(); ServerProperties serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); - - Token token = Token.builder().accessTokenValue(env.getProperty("MAGIC_TOKEN")).build(); - log.info("Token: {}", token.getAccessTokenValue()); - + log.info("ServerProperties: {}", serverProperties.toString()); id = "30447515845"; List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); if (arbeidsforhold != null) { diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java deleted file mode 100644 index ceda73d3198..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/Test.java +++ /dev/null @@ -1,11 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; - -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Service; -import org.springframework.web.reactive.function.client.WebClient; - -@Service -public class Test { - -} diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 52cbb166447..7dab6942629 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -51,5 +51,5 @@ consumers: testnav-levende-arbeidsforhold-service: name: testnav-levende-arbeidsforhold-service namespace: dolly - url: https://testnav-levende-arbeidsforhold-service.dev-fss-pub.nais.io + url: https://testnav-levende-arbeidsforhold-service.dev-gcp-pub.nais.io cluster: dev-gcp \ No newline at end of file From a636b5dc4d2f81762ba58c08d437ac187ea84967 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 14:13:43 +0200 Subject: [PATCH 069/161] Rebaset forandringen --- .../command/HentArbeidsforholdCommand.java | 29 +++---- .../domain/Arbeidsforhold.java | 86 +++++++++++++++++++ .../provider/v1/ArbeidsforholdController.java | 26 ++++++ .../src/main/resources/application.yml | 4 +- 4 files changed, 128 insertions(+), 17 deletions(-) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/Arbeidsforhold.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 9d3b1222bdb..7b3da14067f 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j; import no.nav.testnav.libs.commands.utils.WebClientFilter; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.servletcore.headers.NavHeaders; import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClientResponseException; @@ -12,6 +13,7 @@ import java.time.Duration; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.UUID; import java.util.concurrent.Callable; @@ -25,7 +27,8 @@ public class HentArbeidsforholdCommand implements Callable> { private final WebClient webClient; private final String token; - private final String id; + private final String ident; + private final String miljo = "Q2"; private static final String NAV_PERSON_IDENT = "Nav-Personident"; private static final String CONSUMER = "Dolly"; @@ -38,36 +41,32 @@ private static String getNavCallId() { @Override public List call(){ //Dette er metoden som er krevet når man implementerer Callable - log.info("Henter arbeidsforhold for ident {}.", id); try { - //Bygger request URL og henter arneidsforhold fra Aareg med path = /api/v1/arbeidstaker/arbeidsforhold var arbeidsforhold = webClient .get() .uri(builder -> builder - .path("/api/v1/arbeidstaker/arbeidsforhold") + .path("/{miljoe}/api/v1/arbeidstaker/arbeidsforhold") .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") - .build()) + .build(miljo)) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .header(NAV_PERSON_IDENT, id) - .header("Nav-Call-Id", getNavCallId()) - .header("Nav-Consumer-Id", CONSUMER) + .header(NAV_PERSON_IDENT, ident) + .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) + .header(NavHeaders.NAV_CALL_ID, getNavCallId()) .retrieve() .bodyToMono(ArbeidsforholdDTO[].class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)) - .block(); + .block(); + log.info("Hentet arbeidsforhold fra Aareg: " + Arrays.toString(arbeidsforhold)); - //Returnerer en liste med ArbeidsforholdDTO return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); } catch (WebClientResponseException.NotFound e) { - log.warn("Fant ikke arbeidsforhold for ident {}. Feilmelding {}", - id, - e.getResponseBodyAsString()); - return List.of(); + log.warn("Fant ikke arbeidsforhold for ident {} i miljø {}", ident, miljo); + return Collections.emptyList(); } catch (WebClientResponseException e) { log.error( "Klarer ikke å hente arbeidsforhold for ident: {}. Feilmelding: {}.", - id, + ident, e.getResponseBodyAsString() ); throw e; diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/Arbeidsforhold.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/Arbeidsforhold.java new file mode 100644 index 00000000000..b812655feab --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/Arbeidsforhold.java @@ -0,0 +1,86 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain; + +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +/* +@Slf4j +@AllArgsConstructor +public class Arbeidsforhold { + + private final ArbeidsforholdDTO dto; + + public no.nav.testnav.libs.dto.oppsummeringsdokumentservice.v1.ArbeidsforholdDTO toV1DTO() { + + if (dto.getArbeidsavtaler().isEmpty()) { + throw new ArbeidsforholdNotFoundException("Finner ikke arbeidsforhold"); + } + + if (dto.getArbeidsavtaler().size() > 1) { + log.warn("Fant flere arbeidsavtaler. Velger den første i listen"); + } + + + var arbeidsavtale = dto.getArbeidsavtaler().get(0); + + return no.nav.testnav.libs.dto.oppsummeringsdokumentservice.v1.ArbeidsforholdDTO + .builder() + .arbeidsforholdId(dto.getArbeidsforholdId()) + .stillingsprosent(arbeidsavtale.getStillingsprosent()) + .yrke(arbeidsavtale.getYrke()) + .arbeidstidsordning(arbeidsavtale.getArbeidstidsordning()) + .antallTimerPrUke(arbeidsavtale.getAntallTimerPrUke()) + .sistLoennsendring(arbeidsavtale.getSistLoennsendring()) + .fom(dto.getAnsettelsesperiode().getPeriode().getFom()) + .tom(dto.getAnsettelsesperiode().getPeriode().getTom()) + .ident(dto.getArbeidstaker().getOffentligIdent()) + .type(dto.getType()) + .build(); + } + + + public no.nav.registre.testnorge.arbeidsforholdservice.provider.v2.dto.ArbeidsforholdDTO toV2DTO() { + + var antallImerForTimeloennetList = dto.getAntallTimerForTimeloennet() == null ? + null : + dto.getAntallTimerForTimeloennet() + .stream() + .map(AntallTimerForTimeloennet::new) + .map(AntallTimerForTimeloennet::toDTO) + .toList(); + + var utenlandsopphold = dto.getUtenlandsopphold() == null ? + null : + dto.getUtenlandsopphold() + .stream() + .map(Utenlandsopphold::new) + .map(Utenlandsopphold::toDTO) + .toList(); + + var permisjoner = dto.getPermisjonPermitteringer() == null ? + null : + dto.getPermisjonPermitteringer() + .stream() + .map(Permisjon::new) + .map(Permisjon::toDTO) + .toList(); + + return no.nav.registre.testnorge.arbeidsforholdservice.provider.v2.dto.ArbeidsforholdDTO + .builder() + .type(dto.getType()) + .arbeidsforholdId(dto.getArbeidsforholdId()) + .antallTimerForTimeloennet(antallImerForTimeloennetList) + .arbeidsgiver(new Arbeidsgiver(dto.getArbeidsgiver()).toDTO()) + .ansettelsesperiode(new Ansettelsesperiode(dto.getAnsettelsesperiode()).toDTO()) + .arbeidsavtaler(dto.getArbeidsavtaler().stream().map(Arbeidsavtale::new).map(Arbeidsavtale::toDTO) + .toList()) + .fartoy(dto.getArbeidsavtaler().get(0).getSkipstype() == null ? null : new Fartoy(dto.getArbeidsavtaler().get(0)).toDTO()) + .arbeidstaker(new Arbeidstaker(dto.getArbeidstaker()).toDTO()) + .utenlandsopphold(utenlandsopphold) + .permisjonPermitteringer(permisjoner) + .build(); + } + +} + + */ diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java new file mode 100644 index 00000000000..c8632d52e51 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java @@ -0,0 +1,26 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.provider.v1; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; +import no.nav.testnav.libs.dto.oppsummeringsdokumentservice.v1.ArbeidsforholdDTO; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@Slf4j +@RequestMapping("/api/v1/arbeidsforhold") +@RequiredArgsConstructor +public class ArbeidsforholdController { + private final ArbeidsforholdService arbeidsforholdService; + + @GetMapping("/{ident}/{orgnummer}/{arbeidsforholdId}") + public void getArbeidsforhold( + @PathVariable("ident") String ident + + ) { + var arbeidsforhold = arbeidsforholdService.getArbeidsforhold(ident, "Q2"); + log.info("Arbeidsforhold: " + arbeidsforhold.toString()); + + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 7dab6942629..044856bc63b 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -51,5 +51,5 @@ consumers: testnav-levende-arbeidsforhold-service: name: testnav-levende-arbeidsforhold-service namespace: dolly - url: https://testnav-levende-arbeidsforhold-service.dev-gcp-pub.nais.io - cluster: dev-gcp \ No newline at end of file + url: https://testnav-levende-arbeidsforhold-service.dev-fss-pub.nais.io + cluster: dev-fss \ No newline at end of file From b9b8da8867d48662e33ad81ad25d3b97df2929da Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 12:09:35 +0200 Subject: [PATCH 070/161] =?UTF-8?q?F=C3=A5tt=20hjelp=20av=20Stian=20#deplo?= =?UTF-8?q?y-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/levende-arbeidsforhold-service/config.yml | 5 +++-- .../provider/v1/ArbeidsforholdController.java | 4 +--- .../src/main/resources/application.yml | 6 +++--- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/config.yml b/apps/levende-arbeidsforhold-service/config.yml index d15c1248921..4a85907e78a 100644 --- a/apps/levende-arbeidsforhold-service/config.yml +++ b/apps/levende-arbeidsforhold-service/config.yml @@ -17,8 +17,9 @@ spec: cluster: dev-gcp outbound: rules: - - application: testnav-levende-arbeidsforhold-service - cluster: dev-gcp + - application: testnav-aareg-proxy + cluster: dev-fss + namespace: dolly azure: application: allowAllUsers: true diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java index c8632d52e51..319f5a63ffb 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java @@ -3,8 +3,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; -import no.nav.testnav.libs.dto.oppsummeringsdokumentservice.v1.ArbeidsforholdDTO; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController @@ -19,7 +17,7 @@ public void getArbeidsforhold( @PathVariable("ident") String ident ) { - var arbeidsforhold = arbeidsforholdService.getArbeidsforhold(ident, "Q2"); + var arbeidsforhold = arbeidsforholdService.getArbeidsforhold(ident); log.info("Arbeidsforhold: " + arbeidsforhold.toString()); } diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 044856bc63b..8fbea3c2fbc 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -48,8 +48,8 @@ server: error: include-message: always consumers: - testnav-levende-arbeidsforhold-service: - name: testnav-levende-arbeidsforhold-service + testnav-aareg-proxy: + name: testnav-aareg-proxy namespace: dolly - url: https://testnav-levende-arbeidsforhold-service.dev-fss-pub.nais.io + url: https://testnav-aareg-proxy.dev-fss-pub.nais.io cluster: dev-fss \ No newline at end of file From b9f4038e2a1e95f344f6bc8d8d1ddb4ed89affba Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 12:44:31 +0200 Subject: [PATCH 071/161] =?UTF-8?q?F=C3=A5tt=20hjelp=20av=20Stian=20#deplo?= =?UTF-8?q?y-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 5 ++++- apps/levende-arbeidsforhold-service/build.gradle | 2 ++ apps/levende-arbeidsforhold-service/settings.gradle | 2 ++ .../levendearbeidsforhold/config/ApplicationConfig.java | 4 +++- .../src/main/resources/application.yml | 4 ++-- 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/arbeidsforhold-service/src/main/resources/application.yml b/apps/arbeidsforhold-service/src/main/resources/application.yml index 0cebd9bc87e..1ede0997de3 100644 --- a/apps/arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/arbeidsforhold-service/src/main/resources/application.yml @@ -27,7 +27,10 @@ consumers: namespace: dolly url: https://testnav-aareg-proxy.dev-fss-pub.nais.io cluster: dev-fss - +spec: + azure: + application: + enabled: true management: endpoints: enabled-by-default: true diff --git a/apps/levende-arbeidsforhold-service/build.gradle b/apps/levende-arbeidsforhold-service/build.gradle index 761bd0fb00d..bd66b0b1376 100644 --- a/apps/levende-arbeidsforhold-service/build.gradle +++ b/apps/levende-arbeidsforhold-service/build.gradle @@ -46,6 +46,7 @@ repositories { dependencies { implementation "no.nav.testnav.libs:kafka-config" implementation 'no.nav.testnav.libs:security-core' + implementation 'no.nav.testnav.libs:reactive-core' implementation 'no.nav.testnav.libs:servlet-core' implementation 'no.nav.testnav.libs:commands' implementation 'no.nav.testnav.libs:data-transfer-objects' @@ -83,6 +84,7 @@ dependencies { implementation 'no.nav.testnav.libs:data-transfer-objects' implementation 'no.nav.testnav.libs:kafka-config' implementation 'no.nav.testnav.libs:security-core' + implementation 'no.nav.testnav.libs:servlet-insecure-security' implementation 'no.nav.testnav.libs:servlet-core' } java { diff --git a/apps/levende-arbeidsforhold-service/settings.gradle b/apps/levende-arbeidsforhold-service/settings.gradle index b5f94f80eea..e7fe9f7600c 100644 --- a/apps/levende-arbeidsforhold-service/settings.gradle +++ b/apps/levende-arbeidsforhold-service/settings.gradle @@ -8,9 +8,11 @@ includeBuild "../../libs/kafka-config" includeBuild "../../libs/avro-schema" includeBuild '../../libs/security-core' includeBuild '../../libs/servlet-core' +includeBuild '../../libs/reactive-core' includeBuild '../../libs/commands' includeBuild '../../libs/data-transfer-objects' includeBuild '../../libs/servlet-security' +includeBuild '../../libs/servlet-insecure-security' includeBuild '../../libs/testing' includeBuild '../../.github/workflows' diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java index 5870fadc8b4..8c45c911192 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java @@ -1,5 +1,6 @@ package no.nav.registre.testnorge.levendearbeidsforhold.config; +import no.nav.testnav.libs.standalone.servletsecurity.config.InsecureJwtServerToServerConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -9,7 +10,8 @@ @Configuration @Import({ ApplicationCoreConfig.class, - SecureOAuth2ServerToServerConfiguration.class + InsecureJwtServerToServerConfiguration.class + // SecureOAuth2ServerToServerConfiguration.class }) public class ApplicationConfig { diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 8fbea3c2fbc..60ca83a3b5c 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -8,13 +8,13 @@ spring: version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle description: App for å hente PDL personer. security: - oauth2: + oauth2: + client: resourceserver: aad: issuer-uri: ${AAD_ISSUER_URI}/v2.0 jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} - cloud: vault: enabled: false From 977c806dee1d07417d0a65170ec9293e404bfd0c Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 13:08:51 +0200 Subject: [PATCH 072/161] =?UTF-8?q?Tror=20at=20man=20f=C3=A5r=20hentet=20a?= =?UTF-8?q?rbeidsforhold?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../levendearbeidsforhold/config/ApplicationConfig.java | 2 -- .../consumers/command/HentArbeidsforholdCommand.java | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java index 8c45c911192..204d355ff85 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java @@ -5,13 +5,11 @@ import org.springframework.context.annotation.Import; import no.nav.testnav.libs.servletcore.config.ApplicationCoreConfig; -import no.nav.testnav.libs.servletsecurity.config.SecureOAuth2ServerToServerConfiguration; @Configuration @Import({ ApplicationCoreConfig.class, InsecureJwtServerToServerConfiguration.class - // SecureOAuth2ServerToServerConfiguration.class }) public class ApplicationConfig { diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 7b3da14067f..47edd193716 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -28,7 +28,7 @@ public class HentArbeidsforholdCommand implements Callable call(){ return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); } catch (WebClientResponseException.NotFound e) { log.warn("Fant ikke arbeidsforhold for ident {} i miljø {}", ident, miljo); + log.info("Feilmelding: {}", e.getResponseBodyAsString()); return Collections.emptyList(); } catch (WebClientResponseException e) { log.error( From ede4f72d813c0d841ca06c1ad555788662ddd92c Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 14:17:22 +0200 Subject: [PATCH 073/161] Limet fra endre-arbeidsforhold --- .../consumers/command/HentArbeidsforholdCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 47edd193716..eb7345d5e83 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -56,7 +56,7 @@ public List call(){ .bodyToMono(ArbeidsforholdDTO[].class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)) - .block(); + .block(); log.info("Hentet arbeidsforhold fra Aareg: " + Arrays.toString(arbeidsforhold)); return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); From 9c157efcef95f4c7f94bfa69b50159cfaa009820 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 14:18:46 +0200 Subject: [PATCH 074/161] Lagt inn standalone.insecure --- .../consumers/HentArbeidsforholdConsumer.java | 56 ++++++++----------- 1 file changed, 23 insertions(+), 33 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index 82276b5f1b2..d0d6b334c95 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -5,9 +5,7 @@ import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import no.nav.testnav.libs.securitycore.domain.Token; -import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; -import org.springframework.beans.factory.annotation.Autowired; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; import org.springframework.http.MediaType; import org.springframework.http.codec.json.Jackson2JsonDecoder; import org.springframework.http.codec.json.Jackson2JsonEncoder; @@ -24,52 +22,44 @@ @Slf4j @Component public class HentArbeidsforholdConsumer { + private final WebClient webClient; private final ServerProperties serverProperties; private final TokenExchange tokenExchange; public HentArbeidsforholdConsumer( - Consumers consumers, //TokenExchange tokenExchange + Consumers consumers, TokenExchange tokenExchange, ObjectMapper objectMapper) { + serverProperties = consumers.getTestnavAaregProxy(); + log.info("ServerProperties: {}", serverProperties); this.tokenExchange = tokenExchange; - // Henter serverProperties fra consumers - - serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); - log.info("ServerProperties: {}", serverProperties.toString()); - //this.tokenExchange = tokenExchange; - //Bygger en ExchangeStratefies for å mappe json til objekter - ExchangeStrategies exchangeStrategies = ExchangeStrategies + ExchangeStrategies jacksonStrategy = ExchangeStrategies .builder() - .codecs(configurer -> { - configurer.defaultCodecs() - .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); - configurer.defaultCodecs() - .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); - }) + .codecs( + config -> { + config + .defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + config + .defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + }) .build(); - //Bygger en WebClient for å hente data fra AAREG - //Legger inn echangestrategies og baseurl this.webClient = WebClient .builder() - .exchangeStrategies(exchangeStrategies) - .baseUrl(serverProperties.getUrl()) //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no + .exchangeStrategies(jacksonStrategy) + .baseUrl(serverProperties.getUrl()) .build(); - log.info("WebClient: {}", webClient.toString()); } - /** - * Henter arbeidsforhold for en arbeidstaker - * @param ident FNR/DNR/aktør id til arbeidstakeren - * @return Hvis arbeidsforhold finnes for identen vil en liste med ArbeidsforholdDTO bli returnert, ellers en tom liste - */ - public List getArbeidsforhold(String ident, Token token) { - //var tokenX = tokenExchange.exchange(serverProperties).block(); - if(nonNull(token)) { - return new HentArbeidsforholdCommand(webClient, token.getAccessTokenValue(), ident).call(); + public List getArbeidsforholds(String ident) { + var token = tokenExchange.exchange(serverProperties).block(); + log.info("Token: {}", token); + if (nonNull(token)) { + return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); } return new ArrayList<>(); } -} - +} \ No newline at end of file From 2f859594aa450c980896e4efad26e20aa3648372 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 14:19:48 +0200 Subject: [PATCH 075/161] Limt inn fra endre-arbeidsforhold --- .../service/ArbeidsforholdService.java | 48 ++----------------- 1 file changed, 5 insertions(+), 43 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index b6b6c2178b6..2cbf30cf225 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -1,63 +1,25 @@ package no.nav.registre.testnorge.levendearbeidsforhold.service; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; -import no.nav.testnav.libs.securitycore.domain.AccessToken; -import no.nav.testnav.libs.securitycore.domain.ResourceServerType; -import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import no.nav.testnav.libs.securitycore.domain.Token; -import no.nav.testnav.libs.servletsecurity.action.GetAuthenticatedResourceServerType; -import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; -import no.nav.testnav.libs.servletsecurity.exchange.TokenService; -import no.nav.testnav.libs.servletsecurity.exchange.TokenXService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.event.EventListener; -import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; -import org.springframework.web.reactive.function.client.WebClient; -import java.util.ArrayList; import java.util.List; -import static no.nav.testnav.libs.securitycore.domain.ResourceServerType.TOKEN_X; - -/** - * Service for å sjekke arbeidsforhold. - * Henter arbeidsforhold fra Aareg og logger informasjonen. - * @see no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer - */ @Slf4j @Service @RequiredArgsConstructor public class ArbeidsforholdService { - private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; - private final GetAuthenticatedResourceServerType getAuthenticatedResourceServerType; - private final Consumers consumers; - @Autowired - Environment env; - private String id; + private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; - @EventListener(ApplicationReadyEvent.class) - public void sjekkArbeidsforhold() { - - WebClient webClient = WebClient.create(); - ServerProperties serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); - log.info("ServerProperties: {}", serverProperties.toString()); - id = "30447515845"; - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); - if (arbeidsforhold != null) { - log.info("Arbeidsforhold funnet: {}", arbeidsforhold); - } else { - log.warn("Fant ikke arbeidsforhold med id: {}", id); - } + public List getArbeidsforhold(String ident) { + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); + return arbeidsforhold; } } -//Les i appen ArbeidsforholdService \ No newline at end of file +//Les i appen ArbeidsforholdService From b4f4862e6879ad018e0012f5f934352f4936ce3a Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 14:23:34 +0200 Subject: [PATCH 076/161] Limt inn fra endre-arbeidsforhold --- .../levendearbeidsforhold/listener/DoedsfallListener.java | 8 ++++++-- .../service/ArbeidsforholdService.java | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index e999239bcf4..d0ae81c696c 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -3,8 +3,11 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.person.pdl.leesah.Personhendelse; +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; +import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.kafka.annotation.KafkaListener; @@ -19,10 +22,11 @@ @RequiredArgsConstructor public class DoedsfallListener { private static final String doedsfallTopic = "pdl.leesah-v1"; - - @EventListener(ContextRefreshedEvent.class) + private HentArbeidsforholdConsumer hentArbeidsforholdConsumer; + @EventListener(ApplicationReadyEvent.class) public void onApplicationEvent() { log.info("Hello World"); + ArbeidsforholdService arbeidsforholdService = new ArbeidsforholdService(hentArbeidsforholdConsumer); } /* @KafkaListener(topics = doedsfallTopic) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 2cbf30cf225..09adb10afad 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -17,7 +17,9 @@ public class ArbeidsforholdService { private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; public List getArbeidsforhold(String ident) { + log.info("Henter arbeidsforhold for ident: {}", ident); List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); + arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); return arbeidsforhold; } From 56c2219b66e99cd12d870fd4ed84da6489146ec1 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 14:28:59 +0200 Subject: [PATCH 077/161] Limt inn fra endre-arbeidsforhold --- .../levendearbeidsforhold/listener/DoedsfallListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 94a0d0479b4..0238efc5aea 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -21,7 +21,7 @@ public class DoedsfallListener { private static final String doedsfallTopic = "pdl.leesah-v1"; @Autowired private final ArbeidsforholdService arbeidsforholdsService; - //@EventListener(ApplicationReadyEvent.class) + @EventListener(ApplicationReadyEvent.class) public void onApplicationEvent() { log.info("Hello World"); String id = "30447515845"; From 3d5c3273b427cc442443cadd01692b13418cdcc1 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 2 Jul 2024 14:54:09 +0200 Subject: [PATCH 078/161] Endret fra ArbeidsforholdDTO til Arbeidsforhold klassen --- .../consumers/HentArbeidsforholdConsumer.java | 4 ++-- .../consumers/command/HentArbeidsforholdCommand.java | 8 ++++---- .../levendearbeidsforhold/listener/DoedsfallListener.java | 2 +- .../service/ArbeidsforholdService.java | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index d0d6b334c95..83f518ad35b 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -3,7 +3,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; -import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; import org.springframework.http.MediaType; @@ -53,7 +53,7 @@ public HentArbeidsforholdConsumer( .build(); } - public List getArbeidsforholds(String ident) { + public List getArbeidsforholds(String ident) { var token = tokenExchange.exchange(serverProperties).block(); log.info("Token: {}", token); if (nonNull(token)) { diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index eb7345d5e83..9bde4b2a8c2 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -4,7 +4,7 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import no.nav.testnav.libs.commands.utils.WebClientFilter; -import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; import no.nav.testnav.libs.servletcore.headers.NavHeaders; import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; @@ -24,7 +24,7 @@ @Slf4j @RequiredArgsConstructor -public class HentArbeidsforholdCommand implements Callable> { +public class HentArbeidsforholdCommand implements Callable> { private final WebClient webClient; private final String token; private final String ident; @@ -39,7 +39,7 @@ private static String getNavCallId() { @SneakyThrows @Override - public List call(){ + public List call(){ //Dette er metoden som er krevet når man implementerer Callable try { var arbeidsforhold = webClient @@ -53,7 +53,7 @@ public List call(){ .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) .header(NavHeaders.NAV_CALL_ID, getNavCallId()) .retrieve() - .bodyToMono(ArbeidsforholdDTO[].class) + .bodyToMono(Arbeidsforhold[].class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)) .block(); diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 0238efc5aea..a97f259692b 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -24,7 +24,7 @@ public class DoedsfallListener { @EventListener(ApplicationReadyEvent.class) public void onApplicationEvent() { log.info("Hello World"); - String id = "30447515845"; + String id = "18426839454"; arbeidsforholdsService.getArbeidsforhold(id); } /* diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 09adb10afad..4fd50dc9d27 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -4,7 +4,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; -import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; import org.springframework.stereotype.Service; import java.util.List; @@ -16,9 +16,9 @@ public class ArbeidsforholdService { private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; - public List getArbeidsforhold(String ident) { + public List getArbeidsforhold(String ident) { log.info("Henter arbeidsforhold for ident: {}", ident); - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); return arbeidsforhold; } From b38723afd207ea5615e43e646e786f9dc9aab210 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 15:16:14 +0200 Subject: [PATCH 079/161] =?UTF-8?q?Pr=C3=B8vet=20=C3=A5=20lage=20en=20Endr?= =?UTF-8?q?eArbeidsforholdCommand?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../command/EndreArbeidsforholdCommand.java | 63 ++++++++++++++----- 1 file changed, 46 insertions(+), 17 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index ae2d38a470e..31ae8996816 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -1,35 +1,64 @@ package no.nav.registre.testnorge.levendearbeidsforhold.consumers.command; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.commands.utils.WebClientFilter; +import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; +import no.nav.testnav.libs.dto.syntrest.v1.ArbeidsforholdRequest; +import no.nav.testnav.libs.dto.syntrest.v1.ArbeidsforholdResponse; +import org.apache.kafka.common.protocol.types.Field; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.web.reactive.function.BodyInserters; import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; +import reactor.util.retry.Retry; +import java.time.Duration; +import java.util.Arrays; import java.util.List; -import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.stream.Collectors; -import static java.lang.String.format; -/* @Slf4j @RequiredArgsConstructor -public class EndreArbeidsforholdCommand { +public class EndreArbeidsforholdCommand implements Callable> { private final WebClient webClient; + private final Arbeidsforhold requests; private final String token; - private final String ident; - private final String miljo = "q2"; - private static final String NAV_PERSON_IDENT = "Nav-Personident"; - private static final String CONSUMER = "Dolly"; - - private static String getNavCallId() { - return format("%s %s", CONSUMER, UUID.randomUUID()); - } - /* + private final ObjectMapper objectMapper; + private final String navArbeidsforholdKilde = "Dolly-doedsfall-hendelse" ; @SneakyThrows @Override - public List update(){ - return null; + public List call() throws Exception { + + var arbeidsforhold = webClient + .put() + .uri("/api/v1/arbeidsforhold/{navArbeidsforholdId}", + requests.getNavArbeidsforholdId()) + .body(requests, Arbeidsforhold.class) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .header("Nav-Arbeidsforhold-Id", navArbeidsforholdKilde) + .header("Nav-Arbeidsforhold-Periode", requests.getAnsettelsesperiode().toString()) + .retrieve() + .bodyToMono(new ParameterizedTypeReference() { + }).retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .doOnError(error -> { + try { + log.error("Feil ved oppdatering av arbeidsforhold med body: {}.", objectMapper.writeValueAsString(requests), error); + } catch (JsonProcessingException e) { + log.error("Feil ved convertering av body til string.", e); + } + }).block(); + + return arbeidsforhold == null ? List.of() : List.of(arbeidsforhold); } } - */ + From 33c9beb66a35d9c8c019801eb495358507365af9 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Wed, 3 Jul 2024 08:29:13 +0200 Subject: [PATCH 080/161] La to EndreArbeidsforholdCommand i HentArbeidsforholdConsumer.java og endret navnet til AaregConsumer.java --- ...orholdConsumer.java => AaregConsumer.java} | 20 ++++++-- .../EndreArbeidsforholdConsumer.java | 48 ------------------- .../command/EndreArbeidsforholdCommand.java | 22 +++------ .../service/ArbeidsforholdService.java | 19 ++++---- 4 files changed, 31 insertions(+), 78 deletions(-) rename apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/{HentArbeidsforholdConsumer.java => AaregConsumer.java} (78%) delete mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/EndreArbeidsforholdConsumer.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java similarity index 78% rename from apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java rename to apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java index 83f518ad35b..fd47e5bc185 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java @@ -2,8 +2,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.EndreArbeidsforholdCommand; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; import org.springframework.http.MediaType; @@ -13,6 +15,7 @@ import org.springframework.web.reactive.function.client.ExchangeStrategies; import org.springframework.web.reactive.function.client.WebClient; import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; +import reactor.core.publisher.Mono; import java.util.ArrayList; import java.util.List; @@ -21,13 +24,13 @@ @Slf4j @Component -public class HentArbeidsforholdConsumer { +public class AaregConsumer { private final WebClient webClient; private final ServerProperties serverProperties; private final TokenExchange tokenExchange; - public HentArbeidsforholdConsumer( + public AaregConsumer( Consumers consumers, TokenExchange tokenExchange, ObjectMapper objectMapper) { @@ -53,13 +56,20 @@ public HentArbeidsforholdConsumer( .build(); } - public List getArbeidsforholds(String ident) { + public List getArbeidsforholds(String ident) { var token = tokenExchange.exchange(serverProperties).block(); - log.info("Token: {}", token); if (nonNull(token)) { return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); } return new ArrayList<>(); } -} \ No newline at end of file + public Mono endreArbeidsforhold(Arbeidsforhold requests) { + var token = tokenExchange.exchange(serverProperties).block(); + if (nonNull(token)) { + return new EndreArbeidsforholdCommand(webClient, requests, token.getTokenValue(), new ObjectMapper()).call(); + } + return null; + } +} + diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/EndreArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/EndreArbeidsforholdConsumer.java deleted file mode 100644 index e4d6683029b..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/EndreArbeidsforholdConsumer.java +++ /dev/null @@ -1,48 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.consumers; - -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; -import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; -import org.springframework.http.MediaType; -import org.springframework.http.codec.json.Jackson2JsonDecoder; -import org.springframework.http.codec.json.Jackson2JsonEncoder; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.function.client.ExchangeStrategies; -import org.springframework.web.reactive.function.client.WebClient; - -@Slf4j -@Component -public class EndreArbeidsforholdConsumer { - private final WebClient webClient; - private final ServerProperties serverProperties; - private final TokenExchange tokenExchange; - - public EndreArbeidsforholdConsumer( - Consumers consumers, - TokenExchange tokenExchange, - ObjectMapper objectMapper) { - - serverProperties = consumers.getTestnavAaregProxy(); - log.info("ServerProperties: {}", serverProperties); - this.tokenExchange = tokenExchange; - ExchangeStrategies jacksonStrategy = ExchangeStrategies - .builder() - .codecs( - config -> { - config - .defaultCodecs() - .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); - config - .defaultCodecs() - .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); - }) - .build(); - this.webClient = WebClient - .builder() - .exchangeStrategies(jacksonStrategy) - .baseUrl(serverProperties.getUrl()) - .build(); -} -} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index 31ae8996816..87bfa1582d8 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -7,26 +7,18 @@ import lombok.extern.slf4j.Slf4j; import no.nav.testnav.libs.commands.utils.WebClientFilter; import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; -import no.nav.testnav.libs.dto.syntrest.v1.ArbeidsforholdRequest; -import no.nav.testnav.libs.dto.syntrest.v1.ArbeidsforholdResponse; -import org.apache.kafka.common.protocol.types.Field; -import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; -import org.springframework.web.reactive.function.BodyInserters; import org.springframework.web.reactive.function.client.WebClient; import reactor.core.publisher.Mono; import reactor.util.retry.Retry; import java.time.Duration; -import java.util.Arrays; -import java.util.List; import java.util.concurrent.Callable; -import java.util.stream.Collectors; @Slf4j @RequiredArgsConstructor -public class EndreArbeidsforholdCommand implements Callable> { +public class EndreArbeidsforholdCommand implements Callable> { private final WebClient webClient; private final Arbeidsforhold requests; private final String token; @@ -34,9 +26,9 @@ public class EndreArbeidsforholdCommand implements Callable private final String navArbeidsforholdKilde = "Dolly-doedsfall-hendelse" ; @SneakyThrows @Override - public List call() throws Exception { + public Mono call() { - var arbeidsforhold = webClient + return webClient .put() .uri("/api/v1/arbeidsforhold/{navArbeidsforholdId}", requests.getNavArbeidsforholdId()) @@ -46,8 +38,8 @@ public List call() throws Exception { .header("Nav-Arbeidsforhold-Id", navArbeidsforholdKilde) .header("Nav-Arbeidsforhold-Periode", requests.getAnsettelsesperiode().toString()) .retrieve() - .bodyToMono(new ParameterizedTypeReference() { - }).retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .bodyToMono(Arbeidsforhold.class) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)) .doOnError(error -> { try { @@ -55,9 +47,7 @@ public List call() throws Exception { } catch (JsonProcessingException e) { log.error("Feil ved convertering av body til string.", e); } - }).block(); - - return arbeidsforhold == null ? List.of() : List.of(arbeidsforhold); + }); } } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 4fd50dc9d27..0e7f24f7a03 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -3,9 +3,11 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.AaregConsumer; import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import org.springframework.stereotype.Service; +import reactor.core.publisher.Mono; import java.util.List; @@ -14,14 +16,13 @@ @RequiredArgsConstructor public class ArbeidsforholdService { - private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; + private final AaregConsumer aaregConsumer; - public List getArbeidsforhold(String ident) { - log.info("Henter arbeidsforhold for ident: {}", ident); - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); - arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); - return arbeidsforhold; + public List getArbeidsforhold(String ident) { + return aaregConsumer.getArbeidsforholds(ident); + } + public Mono endreArbeidsforhold(Arbeidsforhold requests) { + return aaregConsumer.endreArbeidsforhold(requests); } - } -//Les i appen ArbeidsforholdService +//Les i appen ArbeidsforholdService \ No newline at end of file From 913bf3bf891da7115a100146c231af4e4db66d46 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 14:08:50 +0200 Subject: [PATCH 081/161] Lagt til endre arbeidsforhold command og consumer --- .../levende-arbeidsforhold-service/config.yml | 5 +- .../consumers/HentArbeidsforholdConsumer.java | 80 +++++++++++++++++++ .../command/HentArbeidsforholdCommand.java | 51 +++++++----- .../service/ArbeidsforholdService.java | 56 ++++++++++--- .../src/main/resources/application.yml | 12 +-- 5 files changed, 167 insertions(+), 37 deletions(-) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java diff --git a/apps/levende-arbeidsforhold-service/config.yml b/apps/levende-arbeidsforhold-service/config.yml index 4a85907e78a..d15c1248921 100644 --- a/apps/levende-arbeidsforhold-service/config.yml +++ b/apps/levende-arbeidsforhold-service/config.yml @@ -17,9 +17,8 @@ spec: cluster: dev-gcp outbound: rules: - - application: testnav-aareg-proxy - cluster: dev-fss - namespace: dolly + - application: testnav-levende-arbeidsforhold-service + cluster: dev-gcp azure: application: allowAllUsers: true diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java new file mode 100644 index 00000000000..ca31756b61d --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -0,0 +1,80 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.consumers; + +import com.fasterxml.jackson.databind.ObjectMapper; +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; +import org.springframework.http.MediaType; +import org.springframework.http.codec.json.Jackson2JsonDecoder; +import org.springframework.http.codec.json.Jackson2JsonEncoder; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.ExchangeStrategies; +import org.springframework.web.reactive.function.client.WebClient; +import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; + +import java.util.ArrayList; +import java.util.List; + +import static java.util.Objects.nonNull; + +/** + * Consumer for å hente arbeidsforhold fra AAREG + * WebClient for å hente data fra AAREG + * TokenExchange for å hente token fra STS + * ObjectMapper for å mappe json til objekter + */ +@Component +public class HentArbeidsforholdConsumer { + private final WebClient webClient; + private final ServerProperties serverProperties; + private final TokenExchange tokenExchange; + + /** + * Konstruktør + * @param consumers er ett objekt som inneholder serverProperties som finnes i application.yml + * @param tokenExchange er ett objekt som henter token fra STS + * @param objectMapper er ett objekt som mapper json til objekter + */ + public HentArbeidsforholdConsumer( + Consumers consumers, + TokenExchange tokenExchange, + ObjectMapper objectMapper) { + // Henter serverProperties fra consumers + serverProperties = consumers.getTestnavAaregProxy(); + this.tokenExchange = tokenExchange; + //Bygger en ExchangeStratefies for å mappe json til objekter + ExchangeStrategies exchangeStrategies = ExchangeStrategies + .builder() + .codecs(configurer -> { + configurer.defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + configurer.defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + }) + .build(); + //Bygger en WebClient for å hente data fra AAREG + //Legger inn echangestrategies og baseurl + this.webClient = WebClient + .builder() + .exchangeStrategies(exchangeStrategies) + .baseUrl("serverProperties.getUrl()") //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no + .build(); + log.info("WebClient: {}", webClient.toString()); + } + + /** + * Henter arbeidsforhold for en arbeidstaker + * @param ident FNR/DNR/aktør id til arbeidstakeren + * @return Hvis arbeidsforhold finnes for identen vil en liste med ArbeidsforholdDTO bli returnert, ellers en tom liste + */ + public List getArbeidsforhold(String ident) { + var token = tokenExchange.exchange(serverProperties).block(); + if(nonNull(token)) { + return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); + } + return new ArrayList<>(); + } + +} + diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 9bde4b2a8c2..bfa6445d152 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -4,8 +4,7 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import no.nav.testnav.libs.commands.utils.WebClientFilter; -import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; -import no.nav.testnav.libs.servletcore.headers.NavHeaders; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClientResponseException; @@ -13,7 +12,6 @@ import java.time.Duration; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.UUID; import java.util.concurrent.Callable; @@ -21,14 +19,24 @@ import static java.lang.String.format; - +/** + * Command for å hente arbeidsforhold fra Aareg. + * Brukt for å hente arbeidsforhold for en arbeidstaker. + * WebClient er konfigurert med en base url som er satt i konfigurasjonen. + * Token er en jwt token som brukes for å autentisere mot Aareg. + * Id er identen til arbeidstakeren som skal hentes arbeidsforhold for. + * Hvis det ikke finnes arbeidsforhold for identen vil en WebClientResponseException.NotFound bli kastet. + * Hvis det er en annen feil vil en WebClientResponseException bli kastet. + * Hvis det er en 5xx feil vil den prøve å hente på nytt 3 ganger med 5 sekunders intervall. + * Hvis det fortsatt feiler vil en WebClientResponseException bli kastet. + * Hvis alt går bra vil en liste med ArbeidsforholdDTO bli returnert. + */ @Slf4j @RequiredArgsConstructor -public class HentArbeidsforholdCommand implements Callable> { +public class HentArbeidsforholdCommand implements Callable> { private final WebClient webClient; private final String token; - private final String ident; - private final String miljo = "q2"; + private final String id; private static final String NAV_PERSON_IDENT = "Nav-Personident"; private static final String CONSUMER = "Dolly"; @@ -39,35 +47,40 @@ private static String getNavCallId() { @SneakyThrows @Override - public List call(){ + public List call(){ //Dette er metoden som er krevet når man implementerer Callable + log.info("Henter arbeidsforhold for ident {}.", id); try { + //Bygger request URL og henter arneidsforhold fra Aareg med path = /api/v1/arbeidstaker/arbeidsforhold var arbeidsforhold = webClient .get() .uri(builder -> builder - .path("/{miljoe}/api/v1/arbeidstaker/arbeidsforhold") + .path("/q2/api/v1/arbeidstaker/arbeidsforhold") .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") - .build(miljo)) + .build()) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .header(NAV_PERSON_IDENT, ident) - .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) - .header(NavHeaders.NAV_CALL_ID, getNavCallId()) + .header(NAV_PERSON_IDENT, id) + .header("Nav-Call-Id", getNavCallId()) + .header("Nav-Consumer-Id", CONSUMER) .retrieve() - .bodyToMono(Arbeidsforhold[].class) + .bodyToMono(ArbeidsforholdDTO[].class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)) .block(); - log.info("Hentet arbeidsforhold fra Aareg: " + Arrays.toString(arbeidsforhold)); + //Returnerer en liste med ArbeidsforholdDTO return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); } catch (WebClientResponseException.NotFound e) { - log.warn("Fant ikke arbeidsforhold for ident {} i miljø {}", ident, miljo); - log.info("Feilmelding: {}", e.getResponseBodyAsString()); - return Collections.emptyList(); + //Hvis det ikke finnes arbeidsforhold for identen vil en WebClientResponseException.NotFound bli kastet. + log.warn("Fant ikke arbeidsforhold for ident {}. Feilmelding {}", + id, + e.getResponseBodyAsString()); + return List.of(); } catch (WebClientResponseException e) { + //Hvis det er en annen feil vil en WebClientResponseException bli kastet. log.error( "Klarer ikke å hente arbeidsforhold for ident: {}. Feilmelding: {}.", - ident, + id, e.getResponseBodyAsString() ); throw e; diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 0e7f24f7a03..a682eb3aa16 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -1,28 +1,66 @@ package no.nav.registre.testnorge.levendearbeidsforhold.service; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.consumers.AaregConsumer; -import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; +import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.securitycore.domain.ResourceServerType; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.servletsecurity.action.GetAuthenticatedResourceServerType; +import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; -import reactor.core.publisher.Mono; +import org.springframework.web.reactive.function.client.WebClient; +import java.util.ArrayList; import java.util.List; +/** + * Service for å sjekke arbeidsforhold. + * Henter arbeidsforhold fra Aareg og logger informasjonen. + * @see no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer + */ @Slf4j @Service @RequiredArgsConstructor public class ArbeidsforholdService { + private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; + private final GetAuthenticatedResourceServerType getAuthenticatedResourceServerType; + private final Consumers consumers; + private String issuerUri; + private String jwkSetUri; + private String id; + private List acceptedAudience; - private final AaregConsumer aaregConsumer; - public List getArbeidsforhold(String ident) { - return aaregConsumer.getArbeidsforholds(ident); - } - public Mono endreArbeidsforhold(Arbeidsforhold requests) { - return aaregConsumer.endreArbeidsforhold(requests); + @EventListener(ApplicationReadyEvent.class) + public void sjekkArbeidsforhold() { + WebClient webClient = WebClient.create(); + ServerProperties serverProperties = ServerProperties.of("dev-gcp", "dolly", "aareg", "https://aareg-services-q2.intern.dev.nav.no"); + + TokenExchange tokenExchange = new TokenExchange(getAuthenticatedResourceServerType, new ArrayList<>(), new ObjectMapper()); + Token token = Token.builder().accessTokenValue(env.getProperty("VAULT_TOKEN")).build(); + log.info("Token: {}", token.getAccessTokenValue()); + List tokenServices = new ArrayList<>(); + HentArbeidsforholdConsumer arbeid = new HentArbeidsforholdConsumer( + consumers, + new TokenExchange( + getAuthenticatedResourceServerType, + tokenServices, + new ObjectMapper()) , + new ObjectMapper());//tokenExchange + id = "30447515845"; + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id, token); + if (arbeidsforhold != null) { + log.info("Arbeidsforhold funnet: {}", arbeidsforhold); + } else { + log.warn("Fant ikke arbeidsforhold med id: {}", id); + } } + } //Les i appen ArbeidsforholdService \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 60ca83a3b5c..52cbb166447 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -8,13 +8,13 @@ spring: version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle description: App for å hente PDL personer. security: - oauth2: - client: + oauth2: resourceserver: aad: issuer-uri: ${AAD_ISSUER_URI}/v2.0 jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} + cloud: vault: enabled: false @@ -48,8 +48,8 @@ server: error: include-message: always consumers: - testnav-aareg-proxy: - name: testnav-aareg-proxy + testnav-levende-arbeidsforhold-service: + name: testnav-levende-arbeidsforhold-service namespace: dolly - url: https://testnav-aareg-proxy.dev-fss-pub.nais.io - cluster: dev-fss \ No newline at end of file + url: https://testnav-levende-arbeidsforhold-service.dev-fss-pub.nais.io + cluster: dev-gcp \ No newline at end of file From eac246912637fe052779378b22a8f51b59544b80 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 10:27:22 +0200 Subject: [PATCH 082/161] =?UTF-8?q?Forandret=20fra=20=C3=A5=20logge=20toke?= =?UTF-8?q?n=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/HentArbeidsforholdConsumer.java | 33 ++++++++----------- .../command/HentArbeidsforholdCommand.java | 17 ++-------- .../service/ArbeidsforholdService.java | 31 ++++++++--------- .../src/main/resources/application.yml | 2 +- 4 files changed, 31 insertions(+), 52 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index ca31756b61d..82276b5f1b2 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -1,10 +1,13 @@ package no.nav.registre.testnorge.levendearbeidsforhold.consumers; import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.securitycore.domain.Token; import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.codec.json.Jackson2JsonDecoder; import org.springframework.http.codec.json.Jackson2JsonEncoder; @@ -18,31 +21,23 @@ import static java.util.Objects.nonNull; -/** - * Consumer for å hente arbeidsforhold fra AAREG - * WebClient for å hente data fra AAREG - * TokenExchange for å hente token fra STS - * ObjectMapper for å mappe json til objekter - */ +@Slf4j @Component public class HentArbeidsforholdConsumer { private final WebClient webClient; private final ServerProperties serverProperties; private final TokenExchange tokenExchange; - /** - * Konstruktør - * @param consumers er ett objekt som inneholder serverProperties som finnes i application.yml - * @param tokenExchange er ett objekt som henter token fra STS - * @param objectMapper er ett objekt som mapper json til objekter - */ public HentArbeidsforholdConsumer( - Consumers consumers, + Consumers consumers, //TokenExchange tokenExchange TokenExchange tokenExchange, ObjectMapper objectMapper) { - // Henter serverProperties fra consumers - serverProperties = consumers.getTestnavAaregProxy(); this.tokenExchange = tokenExchange; + // Henter serverProperties fra consumers + + serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); + log.info("ServerProperties: {}", serverProperties.toString()); + //this.tokenExchange = tokenExchange; //Bygger en ExchangeStratefies for å mappe json til objekter ExchangeStrategies exchangeStrategies = ExchangeStrategies .builder() @@ -58,7 +53,7 @@ public HentArbeidsforholdConsumer( this.webClient = WebClient .builder() .exchangeStrategies(exchangeStrategies) - .baseUrl("serverProperties.getUrl()") //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no + .baseUrl(serverProperties.getUrl()) //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no .build(); log.info("WebClient: {}", webClient.toString()); } @@ -68,10 +63,10 @@ public HentArbeidsforholdConsumer( * @param ident FNR/DNR/aktør id til arbeidstakeren * @return Hvis arbeidsforhold finnes for identen vil en liste med ArbeidsforholdDTO bli returnert, ellers en tom liste */ - public List getArbeidsforhold(String ident) { - var token = tokenExchange.exchange(serverProperties).block(); + public List getArbeidsforhold(String ident, Token token) { + //var tokenX = tokenExchange.exchange(serverProperties).block(); if(nonNull(token)) { - return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); + return new HentArbeidsforholdCommand(webClient, token.getAccessTokenValue(), ident).call(); } return new ArrayList<>(); } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index bfa6445d152..9d3b1222bdb 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -19,18 +19,7 @@ import static java.lang.String.format; -/** - * Command for å hente arbeidsforhold fra Aareg. - * Brukt for å hente arbeidsforhold for en arbeidstaker. - * WebClient er konfigurert med en base url som er satt i konfigurasjonen. - * Token er en jwt token som brukes for å autentisere mot Aareg. - * Id er identen til arbeidstakeren som skal hentes arbeidsforhold for. - * Hvis det ikke finnes arbeidsforhold for identen vil en WebClientResponseException.NotFound bli kastet. - * Hvis det er en annen feil vil en WebClientResponseException bli kastet. - * Hvis det er en 5xx feil vil den prøve å hente på nytt 3 ganger med 5 sekunders intervall. - * Hvis det fortsatt feiler vil en WebClientResponseException bli kastet. - * Hvis alt går bra vil en liste med ArbeidsforholdDTO bli returnert. - */ + @Slf4j @RequiredArgsConstructor public class HentArbeidsforholdCommand implements Callable> { @@ -55,7 +44,7 @@ public List call(){ var arbeidsforhold = webClient .get() .uri(builder -> builder - .path("/q2/api/v1/arbeidstaker/arbeidsforhold") + .path("/api/v1/arbeidstaker/arbeidsforhold") .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") .build()) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) @@ -71,13 +60,11 @@ public List call(){ //Returnerer en liste med ArbeidsforholdDTO return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); } catch (WebClientResponseException.NotFound e) { - //Hvis det ikke finnes arbeidsforhold for identen vil en WebClientResponseException.NotFound bli kastet. log.warn("Fant ikke arbeidsforhold for ident {}. Feilmelding {}", id, e.getResponseBodyAsString()); return List.of(); } catch (WebClientResponseException e) { - //Hvis det er en annen feil vil en WebClientResponseException bli kastet. log.error( "Klarer ikke å hente arbeidsforhold for ident: {}. Feilmelding: {}.", id, diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index a682eb3aa16..b6b6c2178b6 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -7,18 +7,26 @@ import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.securitycore.domain.AccessToken; import no.nav.testnav.libs.securitycore.domain.ResourceServerType; import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.securitycore.domain.Token; import no.nav.testnav.libs.servletsecurity.action.GetAuthenticatedResourceServerType; import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; +import no.nav.testnav.libs.servletsecurity.exchange.TokenService; +import no.nav.testnav.libs.servletsecurity.exchange.TokenXService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; +import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; import org.springframework.web.reactive.function.client.WebClient; import java.util.ArrayList; import java.util.List; +import static no.nav.testnav.libs.securitycore.domain.ResourceServerType.TOKEN_X; + /** * Service for å sjekke arbeidsforhold. * Henter arbeidsforhold fra Aareg og logger informasjonen. @@ -31,30 +39,19 @@ public class ArbeidsforholdService { private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; private final GetAuthenticatedResourceServerType getAuthenticatedResourceServerType; private final Consumers consumers; - private String issuerUri; - private String jwkSetUri; + @Autowired + Environment env; private String id; - private List acceptedAudience; @EventListener(ApplicationReadyEvent.class) public void sjekkArbeidsforhold() { - WebClient webClient = WebClient.create(); - ServerProperties serverProperties = ServerProperties.of("dev-gcp", "dolly", "aareg", "https://aareg-services-q2.intern.dev.nav.no"); - TokenExchange tokenExchange = new TokenExchange(getAuthenticatedResourceServerType, new ArrayList<>(), new ObjectMapper()); - Token token = Token.builder().accessTokenValue(env.getProperty("VAULT_TOKEN")).build(); - log.info("Token: {}", token.getAccessTokenValue()); - List tokenServices = new ArrayList<>(); - HentArbeidsforholdConsumer arbeid = new HentArbeidsforholdConsumer( - consumers, - new TokenExchange( - getAuthenticatedResourceServerType, - tokenServices, - new ObjectMapper()) , - new ObjectMapper());//tokenExchange + WebClient webClient = WebClient.create(); + ServerProperties serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); + log.info("ServerProperties: {}", serverProperties.toString()); id = "30447515845"; - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id, token); + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); if (arbeidsforhold != null) { log.info("Arbeidsforhold funnet: {}", arbeidsforhold); } else { diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 52cbb166447..7dab6942629 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -51,5 +51,5 @@ consumers: testnav-levende-arbeidsforhold-service: name: testnav-levende-arbeidsforhold-service namespace: dolly - url: https://testnav-levende-arbeidsforhold-service.dev-fss-pub.nais.io + url: https://testnav-levende-arbeidsforhold-service.dev-gcp-pub.nais.io cluster: dev-gcp \ No newline at end of file From 489feac9cd914c3c1aaaffe8c41868ec195a427e Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 14:13:43 +0200 Subject: [PATCH 083/161] Rebaset forandringen --- .../command/HentArbeidsforholdCommand.java | 29 +++++++++---------- .../provider/v1/ArbeidsforholdController.java | 4 ++- .../src/main/resources/application.yml | 4 +-- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 9d3b1222bdb..7b3da14067f 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j; import no.nav.testnav.libs.commands.utils.WebClientFilter; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.servletcore.headers.NavHeaders; import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClientResponseException; @@ -12,6 +13,7 @@ import java.time.Duration; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.UUID; import java.util.concurrent.Callable; @@ -25,7 +27,8 @@ public class HentArbeidsforholdCommand implements Callable> { private final WebClient webClient; private final String token; - private final String id; + private final String ident; + private final String miljo = "Q2"; private static final String NAV_PERSON_IDENT = "Nav-Personident"; private static final String CONSUMER = "Dolly"; @@ -38,36 +41,32 @@ private static String getNavCallId() { @Override public List call(){ //Dette er metoden som er krevet når man implementerer Callable - log.info("Henter arbeidsforhold for ident {}.", id); try { - //Bygger request URL og henter arneidsforhold fra Aareg med path = /api/v1/arbeidstaker/arbeidsforhold var arbeidsforhold = webClient .get() .uri(builder -> builder - .path("/api/v1/arbeidstaker/arbeidsforhold") + .path("/{miljoe}/api/v1/arbeidstaker/arbeidsforhold") .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") - .build()) + .build(miljo)) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .header(NAV_PERSON_IDENT, id) - .header("Nav-Call-Id", getNavCallId()) - .header("Nav-Consumer-Id", CONSUMER) + .header(NAV_PERSON_IDENT, ident) + .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) + .header(NavHeaders.NAV_CALL_ID, getNavCallId()) .retrieve() .bodyToMono(ArbeidsforholdDTO[].class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)) - .block(); + .block(); + log.info("Hentet arbeidsforhold fra Aareg: " + Arrays.toString(arbeidsforhold)); - //Returnerer en liste med ArbeidsforholdDTO return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); } catch (WebClientResponseException.NotFound e) { - log.warn("Fant ikke arbeidsforhold for ident {}. Feilmelding {}", - id, - e.getResponseBodyAsString()); - return List.of(); + log.warn("Fant ikke arbeidsforhold for ident {} i miljø {}", ident, miljo); + return Collections.emptyList(); } catch (WebClientResponseException e) { log.error( "Klarer ikke å hente arbeidsforhold for ident: {}. Feilmelding: {}.", - id, + ident, e.getResponseBodyAsString() ); throw e; diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java index 319f5a63ffb..c8632d52e51 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java @@ -3,6 +3,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; +import no.nav.testnav.libs.dto.oppsummeringsdokumentservice.v1.ArbeidsforholdDTO; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController @@ -17,7 +19,7 @@ public void getArbeidsforhold( @PathVariable("ident") String ident ) { - var arbeidsforhold = arbeidsforholdService.getArbeidsforhold(ident); + var arbeidsforhold = arbeidsforholdService.getArbeidsforhold(ident, "Q2"); log.info("Arbeidsforhold: " + arbeidsforhold.toString()); } diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 7dab6942629..044856bc63b 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -51,5 +51,5 @@ consumers: testnav-levende-arbeidsforhold-service: name: testnav-levende-arbeidsforhold-service namespace: dolly - url: https://testnav-levende-arbeidsforhold-service.dev-gcp-pub.nais.io - cluster: dev-gcp \ No newline at end of file + url: https://testnav-levende-arbeidsforhold-service.dev-fss-pub.nais.io + cluster: dev-fss \ No newline at end of file From 8f3ac44628993e01c294063aed21f0a6cf8c2d06 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 12:44:31 +0200 Subject: [PATCH 084/161] =?UTF-8?q?F=C3=A5tt=20hjelp=20av=20Stian=20#deplo?= =?UTF-8?q?y-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../levendearbeidsforhold/config/ApplicationConfig.java | 2 ++ .../src/main/resources/application.yml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java index 204d355ff85..8c45c911192 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java @@ -5,11 +5,13 @@ import org.springframework.context.annotation.Import; import no.nav.testnav.libs.servletcore.config.ApplicationCoreConfig; +import no.nav.testnav.libs.servletsecurity.config.SecureOAuth2ServerToServerConfiguration; @Configuration @Import({ ApplicationCoreConfig.class, InsecureJwtServerToServerConfiguration.class + // SecureOAuth2ServerToServerConfiguration.class }) public class ApplicationConfig { diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 044856bc63b..d0c0e99ebe2 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -8,13 +8,13 @@ spring: version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle description: App for å hente PDL personer. security: - oauth2: + oauth2: + client: resourceserver: aad: issuer-uri: ${AAD_ISSUER_URI}/v2.0 jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} - cloud: vault: enabled: false From 171bcb57a4eee608a5ae513de3baa58437e1579a Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 2 Jul 2024 14:23:34 +0200 Subject: [PATCH 085/161] Limt inn fra endre-arbeidsforhold --- .../service/ArbeidsforholdService.java | 50 +++---------------- 1 file changed, 7 insertions(+), 43 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index b6b6c2178b6..09adb10afad 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -1,63 +1,27 @@ package no.nav.registre.testnorge.levendearbeidsforhold.service; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; -import no.nav.testnav.libs.securitycore.domain.AccessToken; -import no.nav.testnav.libs.securitycore.domain.ResourceServerType; -import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import no.nav.testnav.libs.securitycore.domain.Token; -import no.nav.testnav.libs.servletsecurity.action.GetAuthenticatedResourceServerType; -import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; -import no.nav.testnav.libs.servletsecurity.exchange.TokenService; -import no.nav.testnav.libs.servletsecurity.exchange.TokenXService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.event.EventListener; -import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; -import org.springframework.web.reactive.function.client.WebClient; -import java.util.ArrayList; import java.util.List; -import static no.nav.testnav.libs.securitycore.domain.ResourceServerType.TOKEN_X; - -/** - * Service for å sjekke arbeidsforhold. - * Henter arbeidsforhold fra Aareg og logger informasjonen. - * @see no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer - */ @Slf4j @Service @RequiredArgsConstructor public class ArbeidsforholdService { - private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; - private final GetAuthenticatedResourceServerType getAuthenticatedResourceServerType; - private final Consumers consumers; - @Autowired - Environment env; - private String id; + private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; - @EventListener(ApplicationReadyEvent.class) - public void sjekkArbeidsforhold() { - - WebClient webClient = WebClient.create(); - ServerProperties serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); - log.info("ServerProperties: {}", serverProperties.toString()); - id = "30447515845"; - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforhold(id); - if (arbeidsforhold != null) { - log.info("Arbeidsforhold funnet: {}", arbeidsforhold); - } else { - log.warn("Fant ikke arbeidsforhold med id: {}", id); - } + public List getArbeidsforhold(String ident) { + log.info("Henter arbeidsforhold for ident: {}", ident); + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); + arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); + return arbeidsforhold; } } -//Les i appen ArbeidsforholdService \ No newline at end of file +//Les i appen ArbeidsforholdService From aed7f4f82c4f64769ee4c9979c305919f05d814e Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 2 Jul 2024 14:54:09 +0200 Subject: [PATCH 086/161] Endret fra ArbeidsforholdDTO til Arbeidsforhold klassen --- .../consumers/HentArbeidsforholdConsumer.java | 58 ++++++++----------- .../command/HentArbeidsforholdCommand.java | 8 +-- .../service/ArbeidsforholdService.java | 6 +- 3 files changed, 31 insertions(+), 41 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index 82276b5f1b2..83f518ad35b 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -3,11 +3,9 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; -import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import no.nav.testnav.libs.securitycore.domain.Token; -import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; -import org.springframework.beans.factory.annotation.Autowired; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; import org.springframework.http.MediaType; import org.springframework.http.codec.json.Jackson2JsonDecoder; import org.springframework.http.codec.json.Jackson2JsonEncoder; @@ -24,52 +22,44 @@ @Slf4j @Component public class HentArbeidsforholdConsumer { + private final WebClient webClient; private final ServerProperties serverProperties; private final TokenExchange tokenExchange; public HentArbeidsforholdConsumer( - Consumers consumers, //TokenExchange tokenExchange + Consumers consumers, TokenExchange tokenExchange, ObjectMapper objectMapper) { + serverProperties = consumers.getTestnavAaregProxy(); + log.info("ServerProperties: {}", serverProperties); this.tokenExchange = tokenExchange; - // Henter serverProperties fra consumers - - serverProperties = consumers.getTestnavLevendeArbeidsforholdService(); - log.info("ServerProperties: {}", serverProperties.toString()); - //this.tokenExchange = tokenExchange; - //Bygger en ExchangeStratefies for å mappe json til objekter - ExchangeStrategies exchangeStrategies = ExchangeStrategies + ExchangeStrategies jacksonStrategy = ExchangeStrategies .builder() - .codecs(configurer -> { - configurer.defaultCodecs() - .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); - configurer.defaultCodecs() - .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); - }) + .codecs( + config -> { + config + .defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + config + .defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + }) .build(); - //Bygger en WebClient for å hente data fra AAREG - //Legger inn echangestrategies og baseurl this.webClient = WebClient .builder() - .exchangeStrategies(exchangeStrategies) - .baseUrl(serverProperties.getUrl()) //For lokal kjøring bytt ut med https://aareg-services-q2.intern.nav.no + .exchangeStrategies(jacksonStrategy) + .baseUrl(serverProperties.getUrl()) .build(); - log.info("WebClient: {}", webClient.toString()); } - /** - * Henter arbeidsforhold for en arbeidstaker - * @param ident FNR/DNR/aktør id til arbeidstakeren - * @return Hvis arbeidsforhold finnes for identen vil en liste med ArbeidsforholdDTO bli returnert, ellers en tom liste - */ - public List getArbeidsforhold(String ident, Token token) { - //var tokenX = tokenExchange.exchange(serverProperties).block(); - if(nonNull(token)) { - return new HentArbeidsforholdCommand(webClient, token.getAccessTokenValue(), ident).call(); + public List getArbeidsforholds(String ident) { + var token = tokenExchange.exchange(serverProperties).block(); + log.info("Token: {}", token); + if (nonNull(token)) { + return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); } return new ArrayList<>(); } -} - +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 7b3da14067f..42c0245b3c5 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -4,7 +4,7 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import no.nav.testnav.libs.commands.utils.WebClientFilter; -import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; import no.nav.testnav.libs.servletcore.headers.NavHeaders; import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; @@ -24,7 +24,7 @@ @Slf4j @RequiredArgsConstructor -public class HentArbeidsforholdCommand implements Callable> { +public class HentArbeidsforholdCommand implements Callable> { private final WebClient webClient; private final String token; private final String ident; @@ -39,7 +39,7 @@ private static String getNavCallId() { @SneakyThrows @Override - public List call(){ + public List call(){ //Dette er metoden som er krevet når man implementerer Callable try { var arbeidsforhold = webClient @@ -53,7 +53,7 @@ public List call(){ .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) .header(NavHeaders.NAV_CALL_ID, getNavCallId()) .retrieve() - .bodyToMono(ArbeidsforholdDTO[].class) + .bodyToMono(Arbeidsforhold[].class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)) .block(); diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 09adb10afad..4fd50dc9d27 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -4,7 +4,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; -import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; import org.springframework.stereotype.Service; import java.util.List; @@ -16,9 +16,9 @@ public class ArbeidsforholdService { private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; - public List getArbeidsforhold(String ident) { + public List getArbeidsforhold(String ident) { log.info("Henter arbeidsforhold for ident: {}", ident); - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); + List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); return arbeidsforhold; } From 79d8a19d3d6d052717f46b6db83940a5b42df7f6 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Wed, 3 Jul 2024 09:54:51 +0200 Subject: [PATCH 087/161] =?UTF-8?q?M=C3=A5=20endre=20i=20EndreArbeidsforho?= =?UTF-8?q?ldCommand.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/AaregConsumer.java | 2 +- .../command/EndreArbeidsforholdCommand.java | 21 ++++++++++++------- .../command/HentArbeidsforholdCommand.java | 7 ++++--- .../service/ArbeidsforholdService.java | 16 ++++++++++---- 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java index fd47e5bc185..0189d3013de 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java @@ -64,7 +64,7 @@ public List getArbeidsforholds(String ident) { return new ArrayList<>(); } - public Mono endreArbeidsforhold(Arbeidsforhold requests) { + public Mono endreArbeidsforhold(ArbeidsforholdDTO requests) { var token = tokenExchange.exchange(serverProperties).block(); if (nonNull(token)) { return new EndreArbeidsforholdCommand(webClient, requests, token.getTokenValue(), new ObjectMapper()).call(); diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index 87bfa1582d8..83bd0c09104 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j; import no.nav.testnav.libs.commands.utils.WebClientFilter; import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.web.reactive.function.client.WebClient; @@ -14,31 +15,37 @@ import reactor.util.retry.Retry; import java.time.Duration; +import java.util.UUID; import java.util.concurrent.Callable; +import static java.lang.String.format; @Slf4j @RequiredArgsConstructor -public class EndreArbeidsforholdCommand implements Callable> { +public class EndreArbeidsforholdCommand implements Callable> { private final WebClient webClient; - private final Arbeidsforhold requests; + private final ArbeidsforholdDTO requests; private final String token; private final ObjectMapper objectMapper; private final String navArbeidsforholdKilde = "Dolly-doedsfall-hendelse" ; + + private static String getNavArbeidsfoholdPeriode() { + return format(""); + } @SneakyThrows @Override - public Mono call() { + public Mono call() { return webClient .put() .uri("/api/v1/arbeidsforhold/{navArbeidsforholdId}", - requests.getNavArbeidsforholdId()) - .body(requests, Arbeidsforhold.class) + requests.getArbeidsforholdId()) + .body(requests, ArbeidsforholdDTO.class) .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) .header("Nav-Arbeidsforhold-Id", navArbeidsforholdKilde) - .header("Nav-Arbeidsforhold-Periode", requests.getAnsettelsesperiode().toString()) + .header("Nav-Arbeidsforhold-Periode", requests.) .retrieve() - .bodyToMono(Arbeidsforhold.class) + .bodyToMono(ArbeidsforholdDTO.class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)) .doOnError(error -> { diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 42c0245b3c5..d742ed0993e 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j; import no.nav.testnav.libs.commands.utils.WebClientFilter; import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import no.nav.testnav.libs.servletcore.headers.NavHeaders; import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; @@ -24,7 +25,7 @@ @Slf4j @RequiredArgsConstructor -public class HentArbeidsforholdCommand implements Callable> { +public class HentArbeidsforholdCommand implements Callable> { private final WebClient webClient; private final String token; private final String ident; @@ -39,7 +40,7 @@ private static String getNavCallId() { @SneakyThrows @Override - public List call(){ + public List call(){ //Dette er metoden som er krevet når man implementerer Callable try { var arbeidsforhold = webClient @@ -53,7 +54,7 @@ public List call(){ .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) .header(NavHeaders.NAV_CALL_ID, getNavCallId()) .retrieve() - .bodyToMono(Arbeidsforhold[].class) + .bodyToMono(ArbeidsforholdDTO[].class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)) .block(); diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 4fd50dc9d27..30b022a032a 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -3,9 +3,12 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.AaregConsumer; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; +import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import org.springframework.stereotype.Service; +import reactor.core.publisher.Mono; import java.util.List; @@ -14,14 +17,19 @@ @RequiredArgsConstructor public class ArbeidsforholdService { - private final HentArbeidsforholdConsumer hentArbeidsforholdConsumer; + private final AaregConsumer aaregConsumer; - public List getArbeidsforhold(String ident) { + public List getArbeidsforhold(String ident) { log.info("Henter arbeidsforhold for ident: {}", ident); - List arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); - arbeidsforhold = hentArbeidsforholdConsumer.getArbeidsforholds(ident); + List arbeidsforhold = aaregConsumer.getArbeidsforholds(ident); return arbeidsforhold; } + public void endreArbeidsforhold(ArbeidsforholdDTO request){ + log.info("Endrer arbeidsforhold for ident: {}", request.getArbeidsforholdId()); + aaregConsumer.endreArbeidsforhold(request); + + } + } //Les i appen ArbeidsforholdService From 02b156433bce5152f449f199f8d3d737e374d65e Mon Sep 17 00:00:00 2001 From: Martineem Date: Wed, 3 Jul 2024 10:41:03 +0200 Subject: [PATCH 088/161] =?UTF-8?q?Sender=20sp=C3=B8rring=20med=20akt?= =?UTF-8?q?=C3=B8rid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/DoedsfallListener.java | 38 ++++++++++++------- .../provider/v1/ArbeidsforholdController.java | 26 ------------- 2 files changed, 25 insertions(+), 39 deletions(-) delete mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index a97f259692b..e3c332415b2 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -6,11 +6,8 @@ import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.event.EventListener; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; - import java.util.List; @@ -21,21 +18,36 @@ public class DoedsfallListener { private static final String doedsfallTopic = "pdl.leesah-v1"; @Autowired private final ArbeidsforholdService arbeidsforholdsService; - @EventListener(ApplicationReadyEvent.class) - public void onApplicationEvent() { - log.info("Hello World"); - String id = "18426839454"; - arbeidsforholdsService.getArbeidsforhold(id); + + public void getArbeidsforhold(String aktorID) { + arbeidsforholdsService.getArbeidsforhold(aktorID); } -/* + @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { for (ConsumerRecord record: records){ - log.info("Record key:" + record.key()); - log.info("Record value:" + record.value().toString()); - } + String aktorID = record.key().split("\u001A")[1]; + + //Validerer om vi skal fortsette eller ignorere hendelsen + Boolean riktigHendelse = validerHendelse(record.value().get(4).toString()); + + //Flyt for doedsfall-hendelser + if (riktigHendelse){ + log.info("DØDSFALL. Hendelse: {} {}", record.key(), record.value().toString()); + getArbeidsforhold(aktorID); //List arbeidsforhold = arbeidsforholdsService.getArbeidsforhold(aktorID); + //siOppArbeidsforhold(arbeidsforhold); + } + } } - */ + /** + * Validerer om hendelsen er dødsfall + * @param personhendelse - Hendelse/opplysningstype, f.eks: FOLKEREGISTERIDENTIFIKATOR_V1, NAVN_V1, SIVILSTAND_V1, etc. + * @return true dersom det er dødsfall, false hvis ikke + */ + private Boolean validerHendelse(String personhendelse) { + return personhendelse.equals("DOEDSFALL_V1"); + } } + diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java deleted file mode 100644 index c8632d52e51..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/provider/v1/ArbeidsforholdController.java +++ /dev/null @@ -1,26 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.provider.v1; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; -import no.nav.testnav.libs.dto.oppsummeringsdokumentservice.v1.ArbeidsforholdDTO; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -@RestController -@Slf4j -@RequestMapping("/api/v1/arbeidsforhold") -@RequiredArgsConstructor -public class ArbeidsforholdController { - private final ArbeidsforholdService arbeidsforholdService; - - @GetMapping("/{ident}/{orgnummer}/{arbeidsforholdId}") - public void getArbeidsforhold( - @PathVariable("ident") String ident - - ) { - var arbeidsforhold = arbeidsforholdService.getArbeidsforhold(ident, "Q2"); - log.info("Arbeidsforhold: " + arbeidsforhold.toString()); - - } -} From 8f82d085926b972d7125133953bfbed25bb1d64e Mon Sep 17 00:00:00 2001 From: Martineem Date: Wed, 3 Jul 2024 12:04:27 +0200 Subject: [PATCH 089/161] Endret fra ArbeidsforholdDTO til Arbeidsforhold --- .../consumers/AaregConsumer.java | 4 ++-- .../command/EndreArbeidsforholdCommand.java | 24 ++++++++++--------- .../command/HentArbeidsforholdCommand.java | 14 +++++------ .../service/ArbeidsforholdService.java | 7 +++--- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java index 0189d3013de..014023112ce 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java @@ -56,7 +56,7 @@ public AaregConsumer( .build(); } - public List getArbeidsforholds(String ident) { + public List hentArbeidsforhold(String ident) { var token = tokenExchange.exchange(serverProperties).block(); if (nonNull(token)) { return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); @@ -64,7 +64,7 @@ public List getArbeidsforholds(String ident) { return new ArrayList<>(); } - public Mono endreArbeidsforhold(ArbeidsforholdDTO requests) { + public Mono endreArbeidsforhold(Arbeidsforhold requests) { var token = tokenExchange.exchange(serverProperties).block(); if (nonNull(token)) { return new EndreArbeidsforholdCommand(webClient, requests, token.getTokenValue(), new ObjectMapper()).call(); diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index 83bd0c09104..f8b57ba4b56 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -7,7 +7,6 @@ import lombok.extern.slf4j.Slf4j; import no.nav.testnav.libs.commands.utils.WebClientFilter; import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; -import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.web.reactive.function.client.WebClient; @@ -15,37 +14,40 @@ import reactor.util.retry.Retry; import java.time.Duration; -import java.util.UUID; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.concurrent.Callable; -import static java.lang.String.format; @Slf4j @RequiredArgsConstructor -public class EndreArbeidsforholdCommand implements Callable> { +public class EndreArbeidsforholdCommand implements Callable> { private final WebClient webClient; - private final ArbeidsforholdDTO requests; + private final Arbeidsforhold requests; private final String token; private final ObjectMapper objectMapper; private final String navArbeidsforholdKilde = "Dolly-doedsfall-hendelse" ; private static String getNavArbeidsfoholdPeriode() { - return format(""); + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM"); + LocalDateTime now = LocalDateTime.now(); + return dtf.format(now); } @SneakyThrows @Override - public Mono call() { + public Mono call() { return webClient .put() .uri("/api/v1/arbeidsforhold/{navArbeidsforholdId}", requests.getArbeidsforholdId()) - .body(requests, ArbeidsforholdDTO.class) + .body(requests, Arbeidsforhold.class) .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .header("Nav-Arbeidsforhold-Id", navArbeidsforholdKilde) - .header("Nav-Arbeidsforhold-Periode", requests.) + .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) + .header("Nav-Arbeidsforhold-Periode", getNavArbeidsfoholdPeriode()) + .header("navArbeidsforholdId", String.valueOf(requests.getNavArbeidsforholdId())) .retrieve() - .bodyToMono(ArbeidsforholdDTO.class) + .bodyToMono(Arbeidsforhold.class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)) .doOnError(error -> { diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index d742ed0993e..5c83258e407 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -5,7 +5,6 @@ import lombok.extern.slf4j.Slf4j; import no.nav.testnav.libs.commands.utils.WebClientFilter; import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; -import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import no.nav.testnav.libs.servletcore.headers.NavHeaders; import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; @@ -25,11 +24,11 @@ @Slf4j @RequiredArgsConstructor -public class HentArbeidsforholdCommand implements Callable> { +public class HentArbeidsforholdCommand implements Callable> { private final WebClient webClient; private final String token; private final String ident; - private final String miljo = "Q2"; + private final String miljoe = "Q2"; private static final String NAV_PERSON_IDENT = "Nav-Personident"; private static final String CONSUMER = "Dolly"; @@ -40,7 +39,7 @@ private static String getNavCallId() { @SneakyThrows @Override - public List call(){ + public List call(){ //Dette er metoden som er krevet når man implementerer Callable try { var arbeidsforhold = webClient @@ -48,21 +47,22 @@ public List call(){ .uri(builder -> builder .path("/{miljoe}/api/v1/arbeidstaker/arbeidsforhold") .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") - .build(miljo)) + .build(miljoe)) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) .header(NAV_PERSON_IDENT, ident) .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) .header(NavHeaders.NAV_CALL_ID, getNavCallId()) .retrieve() - .bodyToMono(ArbeidsforholdDTO[].class) + .bodyToMono(Arbeidsforhold[].class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)) .block(); log.info("Hentet arbeidsforhold fra Aareg: " + Arrays.toString(arbeidsforhold)); + assert arbeidsforhold != null; return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); } catch (WebClientResponseException.NotFound e) { - log.warn("Fant ikke arbeidsforhold for ident {} i miljø {}", ident, miljo); + log.warn("Fant ikke arbeidsforhold for ident {} i miljø {}", ident, miljoe); return Collections.emptyList(); } catch (WebClientResponseException e) { log.error( diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 30b022a032a..65b7296e60d 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -19,13 +19,12 @@ public class ArbeidsforholdService { private final AaregConsumer aaregConsumer; - public List getArbeidsforhold(String ident) { + public List getArbeidsforhold(String ident) { log.info("Henter arbeidsforhold for ident: {}", ident); - List arbeidsforhold = aaregConsumer.getArbeidsforholds(ident); - return arbeidsforhold; + return aaregConsumer.hentArbeidsforhold(ident); } - public void endreArbeidsforhold(ArbeidsforholdDTO request){ + public void endreArbeidsforhold(Arbeidsforhold request){ log.info("Endrer arbeidsforhold for ident: {}", request.getArbeidsforholdId()); aaregConsumer.endreArbeidsforhold(request); From a26640479b68707c6e552c248a8a8ebf11928583 Mon Sep 17 00:00:00 2001 From: Martineem Date: Wed, 3 Jul 2024 12:11:15 +0200 Subject: [PATCH 090/161] Setter opp riktig endepunkt ved bruk av proxy --- .../levendearbeidsforhold/consumers/AaregConsumer.java | 2 +- .../src/main/resources/application.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java index 014023112ce..dd80a04f212 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java @@ -34,7 +34,7 @@ public AaregConsumer( Consumers consumers, TokenExchange tokenExchange, ObjectMapper objectMapper) { - serverProperties = consumers.getTestnavAaregProxy(); + this.serverProperties = consumers.getTestnavAaregProxy(); log.info("ServerProperties: {}", serverProperties); this.tokenExchange = tokenExchange; ExchangeStrategies jacksonStrategy = ExchangeStrategies diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index d0c0e99ebe2..60ca83a3b5c 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -48,8 +48,8 @@ server: error: include-message: always consumers: - testnav-levende-arbeidsforhold-service: - name: testnav-levende-arbeidsforhold-service + testnav-aareg-proxy: + name: testnav-aareg-proxy namespace: dolly - url: https://testnav-levende-arbeidsforhold-service.dev-fss-pub.nais.io + url: https://testnav-aareg-proxy.dev-fss-pub.nais.io cluster: dev-fss \ No newline at end of file From 0360b6697e30dd40b855d2fb844710b818ba8d17 Mon Sep 17 00:00:00 2001 From: Martineem Date: Wed, 3 Jul 2024 12:47:23 +0200 Subject: [PATCH 091/161] =?UTF-8?q?Lager=20metode=20for=20=C3=A5=20h=C3=A5?= =?UTF-8?q?ndtere=20arbeidsforhold=20ved=20d=C3=B8dsfall?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../command/EndreArbeidsforholdCommand.java | 8 ++------ .../listener/DoedsfallListener.java | 9 ++------- .../service/ArbeidsforholdService.java | 17 +++++++++++++---- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index f8b57ba4b56..17d1d43b2bb 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -14,6 +14,7 @@ import reactor.util.retry.Retry; import java.time.Duration; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.concurrent.Callable; @@ -27,11 +28,6 @@ public class EndreArbeidsforholdCommand implements Callable private final ObjectMapper objectMapper; private final String navArbeidsforholdKilde = "Dolly-doedsfall-hendelse" ; - private static String getNavArbeidsfoholdPeriode() { - DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM"); - LocalDateTime now = LocalDateTime.now(); - return dtf.format(now); - } @SneakyThrows @Override public Mono call() { @@ -44,7 +40,7 @@ public Mono call() { .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) - .header("Nav-Arbeidsforhold-Periode", getNavArbeidsfoholdPeriode()) + .header("Nav-Arbeidsforhold-Periode", String.valueOf(LocalDate.now())) .header("navArbeidsforholdId", String.valueOf(requests.getNavArbeidsforholdId())) .retrieve() .bodyToMono(Arbeidsforhold.class) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index e3c332415b2..e2974df7d33 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -19,15 +19,11 @@ public class DoedsfallListener { @Autowired private final ArbeidsforholdService arbeidsforholdsService; - public void getArbeidsforhold(String aktorID) { - arbeidsforholdsService.getArbeidsforhold(aktorID); - } - @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> records) { for (ConsumerRecord record: records){ - String aktorID = record.key().split("\u001A")[1]; + String aktoerId = record.key().split("\u001A")[1]; //Validerer om vi skal fortsette eller ignorere hendelsen Boolean riktigHendelse = validerHendelse(record.value().get(4).toString()); @@ -35,8 +31,7 @@ public void getHendelser(List> records) { //Flyt for doedsfall-hendelser if (riktigHendelse){ log.info("DØDSFALL. Hendelse: {} {}", record.key(), record.value().toString()); - getArbeidsforhold(aktorID); //List arbeidsforhold = arbeidsforholdsService.getArbeidsforhold(aktorID); - //siOppArbeidsforhold(arbeidsforhold); + arbeidsforholdsService.arbeidsforholdService(aktoerId); } } } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 65b7296e60d..74af888967f 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -4,12 +4,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.AaregConsumer; -import no.nav.registre.testnorge.levendearbeidsforhold.consumers.HentArbeidsforholdConsumer; import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; -import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; import org.springframework.stereotype.Service; -import reactor.core.publisher.Mono; +import java.time.LocalDate; import java.util.List; @Slf4j @@ -19,16 +17,27 @@ public class ArbeidsforholdService { private final AaregConsumer aaregConsumer; - public List getArbeidsforhold(String ident) { + public List hentArbeidsforhold(String ident) { log.info("Henter arbeidsforhold for ident: {}", ident); return aaregConsumer.hentArbeidsforhold(ident); } public void endreArbeidsforhold(Arbeidsforhold request){ log.info("Endrer arbeidsforhold for ident: {}", request.getArbeidsforholdId()); + request.getAnsettelsesperiode().getPeriode().setTom(LocalDate.now()); + request.getAnsettelsesperiode().setSluttaarsak("Dødsfall"); aaregConsumer.endreArbeidsforhold(request); } + public void arbeidsforholdService(String aktoerId) { + List arbeidsforholdListe = hentArbeidsforhold(aktoerId); + if (!arbeidsforholdListe.isEmpty()) { + arbeidsforholdListe.forEach( + this::endreArbeidsforhold + ); + } + } + } //Les i appen ArbeidsforholdService From 4b58ed5185479ae97e11194ab8837d5c93885165 Mon Sep 17 00:00:00 2001 From: Martineem Date: Wed, 3 Jul 2024 14:00:19 +0200 Subject: [PATCH 092/161] =?UTF-8?q?Avslutter=20n=C3=A5=20alle=20arbeidsfor?= =?UTF-8?q?hold=20for=20en=20person=20p=C3=A5=20d=C3=B8dsfall?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../levendearbeidsforhold/consumers/AaregConsumer.java | 5 ++--- .../consumers/command/EndreArbeidsforholdCommand.java | 3 +-- .../consumers/command/HentArbeidsforholdCommand.java | 2 +- .../levendearbeidsforhold/service/ArbeidsforholdService.java | 5 ++++- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java index dd80a04f212..6fe42851fee 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java @@ -64,12 +64,11 @@ public List hentArbeidsforhold(String ident) { return new ArrayList<>(); } - public Mono endreArbeidsforhold(Arbeidsforhold requests) { + public void endreArbeidsforhold(Arbeidsforhold requests) { var token = tokenExchange.exchange(serverProperties).block(); if (nonNull(token)) { - return new EndreArbeidsforholdCommand(webClient, requests, token.getTokenValue(), new ObjectMapper()).call(); + new EndreArbeidsforholdCommand(webClient, requests, token.getTokenValue(), new ObjectMapper()).call(); } - return null; } } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index 17d1d43b2bb..f1eb196839c 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -35,13 +35,12 @@ public Mono call() { return webClient .put() .uri("/api/v1/arbeidsforhold/{navArbeidsforholdId}", - requests.getArbeidsforholdId()) + requests.getNavArbeidsforholdId()) .body(requests, Arbeidsforhold.class) .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) .header("Nav-Arbeidsforhold-Periode", String.valueOf(LocalDate.now())) - .header("navArbeidsforholdId", String.valueOf(requests.getNavArbeidsforholdId())) .retrieve() .bodyToMono(Arbeidsforhold.class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 5c83258e407..f8760ccd98a 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -28,7 +28,7 @@ public class HentArbeidsforholdCommand implements Callable> private final WebClient webClient; private final String token; private final String ident; - private final String miljoe = "Q2"; + private final String miljoe = "q2"; private static final String NAV_PERSON_IDENT = "Nav-Personident"; private static final String CONSUMER = "Dolly"; diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 74af888967f..f7776558610 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -23,9 +23,11 @@ public List hentArbeidsforhold(String ident) { } public void endreArbeidsforhold(Arbeidsforhold request){ - log.info("Endrer arbeidsforhold for ident: {}", request.getArbeidsforholdId()); + log.info("Endrer arbeidsforhold for ident: {}", request.getNavArbeidsforholdId()); + log.info(String.valueOf(request)); request.getAnsettelsesperiode().getPeriode().setTom(LocalDate.now()); request.getAnsettelsesperiode().setSluttaarsak("Dødsfall"); + log.info(String.valueOf(request)); aaregConsumer.endreArbeidsforhold(request); } @@ -35,6 +37,7 @@ public void arbeidsforholdService(String aktoerId) { if (!arbeidsforholdListe.isEmpty()) { arbeidsforholdListe.forEach( this::endreArbeidsforhold + //arbeidsforhold -> log.info(String.valueOf(arbeidsforhold)) ); } } From cea4b63b9004e619cb02dd2b548350e14276a945 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Wed, 3 Jul 2024 14:04:50 +0200 Subject: [PATCH 093/161] =?UTF-8?q?Endret=20EndreArbeidsforholdCommand.jav?= =?UTF-8?q?a=20til=20=C3=A5=20logge=20annerledes=20slik=20at=20det=20er=20?= =?UTF-8?q?lettere=20=C3=A5=20sjekke=20hvor=20feilen=20kommer=20fra?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../command/EndreArbeidsforholdCommand.java | 56 ++++++++++++------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index f1eb196839c..e7d8d1ab103 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -10,13 +10,14 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException; import reactor.core.publisher.Mono; import reactor.util.retry.Retry; import java.time.Duration; -import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Collections; import java.util.concurrent.Callable; @Slf4j @@ -28,30 +29,43 @@ public class EndreArbeidsforholdCommand implements Callable private final ObjectMapper objectMapper; private final String navArbeidsforholdKilde = "Dolly-doedsfall-hendelse" ; + private static String getNavArbeidsfoholdPeriode() { + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM"); + LocalDateTime now = LocalDateTime.now(); + return dtf.format(now); + } @SneakyThrows @Override public Mono call() { + try{ + Mono requets = webClient + .put() + .uri("/api/v1/arbeidsforhold/{navArbeidsforholdId}", + requests.getNavArbeidsforholdId()) + .body(requests, Arbeidsforhold.class) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) + .header("Nav-Arbeidsforhold-Periode", getNavArbeidsfoholdPeriode()) + .header("navArbeidsforholdId", String.valueOf(requests.getNavArbeidsforholdId())) + .retrieve() + .bodyToMono(Arbeidsforhold.class) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)); + + return requets; + } - return webClient - .put() - .uri("/api/v1/arbeidsforhold/{navArbeidsforholdId}", - requests.getNavArbeidsforholdId()) - .body(requests, Arbeidsforhold.class) - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) - .header("Nav-Arbeidsforhold-Periode", String.valueOf(LocalDate.now())) - .retrieve() - .bodyToMono(Arbeidsforhold.class) - .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) - .filter(WebClientFilter::is5xxException)) - .doOnError(error -> { - try { - log.error("Feil ved oppdatering av arbeidsforhold med body: {}.", objectMapper.writeValueAsString(requests), error); - } catch (JsonProcessingException e) { - log.error("Feil ved convertering av body til string.", e); - } - }); + catch ( + WebClientResponseException.NotFound e) { + log.warn("Får ikke endret {} i miljø {}", requests.getNavArbeidsforholdId()); + } catch (WebClientResponseException e) { + log.error( + "Klarer ikke å hente arbeidsforhold for navArbeidsforhold: {}. Feilmelding: {}.", requests.getNavArbeidsforholdId()); + e.getResponseBodyAsString(); + throw e; + }; + return null; } } From 9e5150addaabefe9d91ebda693ad62bde45c7b58 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Wed, 3 Jul 2024 14:10:11 +0200 Subject: [PATCH 094/161] =?UTF-8?q?N=C3=A5=20kr=C3=A6sjer=20den=20ikke?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/command/EndreArbeidsforholdCommand.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index e7d8d1ab103..1b6b357ac6e 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -42,7 +42,8 @@ public Mono call() { .put() .uri("/api/v1/arbeidsforhold/{navArbeidsforholdId}", requests.getNavArbeidsforholdId()) - .body(requests, Arbeidsforhold.class) + .body(Mono.just(requests), Arbeidsforhold.class) + //.body(requests, Arbeidsforhold.class) .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) From f36a1b8a1d39ea5ffadcb52573e59f960180f332 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Wed, 3 Jul 2024 16:17:00 +0200 Subject: [PATCH 095/161] Forandret put meldingen --- .../command/EndreArbeidsforholdCommand.java | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index 1b6b357ac6e..7321445f01a 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -9,8 +9,10 @@ import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; +import org.springframework.web.reactive.function.BodyInserters; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClientResponseException; +import reactor.core.Disposable; import reactor.core.publisher.Mono; import reactor.util.retry.Retry; @@ -37,24 +39,24 @@ private static String getNavArbeidsfoholdPeriode() { @SneakyThrows @Override public Mono call() { + try{ - Mono requets = webClient + Disposable requets = webClient .put() - .uri("/api/v1/arbeidsforhold/{navArbeidsforholdId}", - requests.getNavArbeidsforholdId()) - .body(Mono.just(requests), Arbeidsforhold.class) - //.body(requests, Arbeidsforhold.class) + .uri(builder -> builder.path("/api/v1/arbeidsforhold/{navArbeidsforholdId}") + .queryParam("Nav-Arbeidsforhold-Kildereferande", navArbeidsforholdKilde) + .queryParam("Nav-Arbeidsforhold-Periode", getNavArbeidsfoholdPeriode()) + .queryParam("navArbeidsforholdId", requests.getNavArbeidsforholdId()) + .build(requests.getNavArbeidsforholdId())) .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) - .header("Nav-Arbeidsforhold-Periode", getNavArbeidsfoholdPeriode()) - .header("navArbeidsforholdId", String.valueOf(requests.getNavArbeidsforholdId())) + .body(BodyInserters.fromValue(requests)) .retrieve() - .bodyToMono(Arbeidsforhold.class) + .toBodilessEntity() .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) - .filter(WebClientFilter::is5xxException)); - - return requets; + .filter(WebClientFilter::is5xxException)).subscribe(); + log.info("Arbeidsforhold "); + return Mono.just((Arbeidsforhold) requets); } catch ( From 38f135f609629594f1081020d2cee377dfe07ad4 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 4 Jul 2024 09:13:46 +0200 Subject: [PATCH 096/161] La til ny/riktig Arbeidsforhold klasse --- .../consumers/AaregConsumer.java | 3 +- .../consumers/HentArbeidsforholdConsumer.java | 2 +- .../command/EndreArbeidsforholdCommand.java | 4 +- .../command/HentArbeidsforholdCommand.java | 2 +- .../domain/v1/Ansettelsesperiode.java | 41 ++++++ .../domain/v1/AntallTimerForTimeloennet.java | 58 +++++++++ .../domain/v1/Arbeidsavtale.java | 107 ++++++++++++++++ .../domain/v1/Arbeidsavtaletype.java | 9 ++ .../domain/v1/Arbeidsforhold.java | 120 ++++++++++++++++++ .../domain/v1/Arbeidsforholdoversikt.java | 111 ++++++++++++++++ .../ArbeidsgiverArbeidsforholdoversikter.java | 46 +++++++ .../domain/v1/Arbeidsgiveroversikt.java | 36 ++++++ .../domain/v1/Bruksperiode.java | 73 +++++++++++ ...orenkletOppgjoersordningArbeidsavtale.java | 38 ++++++ .../domain/v1/FrilanserArbeidsavtale.java | 38 ++++++ .../domain/v1/Gyldighetsperiode.java | 19 +++ .../domain/v1/MaritimArbeidsavtale.java | 54 ++++++++ .../v1/OpplysningspliktigArbeidsgiver.java | 24 ++++ .../OpplysningspliktigArbeidsgiverType.java | 6 + .../domain/v1/OrdinaerArbeidsavtale.java | 38 ++++++ .../domain/v1/Organisasjon.java | 36 ++++++ .../domain/v1/Periode.java | 73 +++++++++++ .../domain/v1/PermisjonPermittering.java | 46 +++++++ .../domain/v1/Person.java | 40 ++++++ .../domain/v1/Persontype.java | 6 + .../domain/v1/Sporingsinformasjon.java | 91 +++++++++++++ .../domain/v1/Utenlandsopphold.java | 60 +++++++++ .../domain/v1/Varsel.java | 33 +++++ .../domain/v1/Varselentitet.java | 11 ++ .../domain/v1/util/JavaTimeUtil.java | 38 ++++++ .../service/ArbeidsforholdService.java | 2 +- 31 files changed, 1258 insertions(+), 7 deletions(-) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/AntallTimerForTimeloennet.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtaletype.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforholdoversikt.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsgiveroversikt.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Bruksperiode.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/FrilanserArbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Gyldighetsperiode.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/MaritimArbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiver.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiverType.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OrdinaerArbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Organisasjon.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Periode.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/PermisjonPermittering.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Person.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Persontype.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Sporingsinformasjon.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Utenlandsopphold.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varsel.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varselentitet.java create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/util/JavaTimeUtil.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java index 6fe42851fee..7463e50a263 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java @@ -4,8 +4,7 @@ import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.EndreArbeidsforholdCommand; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; -import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; -import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; import org.springframework.http.MediaType; diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java index 83f518ad35b..f3f9f42a8d5 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java @@ -3,7 +3,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; -import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; import org.springframework.http.MediaType; diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index 7321445f01a..a382406968e 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -5,8 +5,8 @@ import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.commands.utils.WebClientFilter; -import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.web.reactive.function.BodyInserters; @@ -43,7 +43,7 @@ public Mono call() { try{ Disposable requets = webClient .put() - .uri(builder -> builder.path("/api/v1/arbeidsforhold/{navArbeidsforholdId}") + .uri(builder -> builder.path("/q2/api/v1/arbeidsforhold/{navArbeidsforholdId}") .queryParam("Nav-Arbeidsforhold-Kildereferande", navArbeidsforholdKilde) .queryParam("Nav-Arbeidsforhold-Periode", getNavArbeidsfoholdPeriode()) .queryParam("navArbeidsforholdId", requests.getNavArbeidsforholdId()) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index f8760ccd98a..8d2dc8098d9 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -4,7 +4,7 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import no.nav.testnav.libs.commands.utils.WebClientFilter; -import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.servletcore.headers.NavHeaders; import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java new file mode 100644 index 00000000000..b695427d85f --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java @@ -0,0 +1,41 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "periode", + "sluttaarsak", + "varslingskode", + "bruksperiode", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon knyttet til ansettelsesperioden") +public class Ansettelsesperiode { + + private Periode periode; + + @Schema(description = "Årsak for avsluttet ansettelsesperiode (kodeverk: Slutt%C3%A5rsakAareg)", example = "arbeidstakerHarSagtOppSelv") + private String sluttaarsak; + + @Schema(description = "Varslingskode (kodeverk: Varslingskode_5fAa-registeret) - benyttes hvis ansettelsesperiode er lukket maskinelt", example = "ERKONK") + private String varslingskode; + + private Bruksperiode bruksperiode; + + private Sporingsinformasjon sporingsinformasjon; +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/AntallTimerForTimeloennet.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/AntallTimerForTimeloennet.java new file mode 100644 index 00000000000..c82794fe0b3 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/AntallTimerForTimeloennet.java @@ -0,0 +1,58 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.YearMonth; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "periode", + "antallTimer", + "rapporteringsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon om antall timer med timelønn") +public class AntallTimerForTimeloennet { + + private Periode periode; + + @Schema(description = "Antall timer", example = "37.5") + private Double antallTimer; + + private YearMonth rapporteringsperiode; + + private Sporingsinformasjon sporingsinformasjon; + + @JsonIgnore + public YearMonth getRapporteringsperiode() { + return rapporteringsperiode; + } + + @JsonProperty("rapporteringsperiode") + @Schema(description = "Rapporteringsperiode for antall timer med timelønn, format (ISO-8601): yyyy-MM", example = "2018-05") + public String getRapporteringsperiodeAsString() { + return JavaTimeUtil.toString(rapporteringsperiode); + } + + @JsonProperty("rapporteringsperiode") + public void setRapporteringsperiodeAsString(String rapporteringsperiode) { + this.rapporteringsperiode = JavaTimeUtil.toYearMonth(rapporteringsperiode); + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtale.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtale.java new file mode 100644 index 00000000000..f7755b49424 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtale.java @@ -0,0 +1,107 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import io.swagger.v3.oas.annotations.media.DiscriminatorMapping; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.SuperBuilder; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDate; + +@Getter +@Setter +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode +@ToString +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + property = "type" +) +@JsonSubTypes({ + @JsonSubTypes.Type(value = OrdinaerArbeidsavtale.class, name = OrdinaerArbeidsavtale.TYPE), + @JsonSubTypes.Type(value = MaritimArbeidsavtale.class, name = MaritimArbeidsavtale.TYPE), + @JsonSubTypes.Type(value = ForenkletOppgjoersordningArbeidsavtale.class, name = ForenkletOppgjoersordningArbeidsavtale.TYPE), + @JsonSubTypes.Type(value = FrilanserArbeidsavtale.class, name = FrilanserArbeidsavtale.TYPE) +}) +@Schema(description = "Informasjon om arbeidsavtale/ansettelsesdetaljer", + discriminatorProperty = "type", + discriminatorMapping = { + @DiscriminatorMapping(value = OrdinaerArbeidsavtale.TYPE, schema = OrdinaerArbeidsavtale.class), + @DiscriminatorMapping(value = MaritimArbeidsavtale.TYPE, schema = MaritimArbeidsavtale.class), + @DiscriminatorMapping(value = ForenkletOppgjoersordningArbeidsavtale.TYPE, schema = ForenkletOppgjoersordningArbeidsavtale.class), + @DiscriminatorMapping(value = FrilanserArbeidsavtale.TYPE, schema = FrilanserArbeidsavtale.class) + } +) +public abstract class Arbeidsavtale implements Arbeidsavtaletype { + + @Schema(description = "Arbeidstidsordning (kodeverk: Arbeidstidsordninger)", example = "ikkeSkift") + private String arbeidstidsordning; + + @Schema(description = "Ansettelsesform (kodeverk: AnsettelsesformAareg)", example = "fast") + private String ansettelsesform; + + @Schema(description = "Yrke (kodeverk: Yrker)", example = "2130123") + private String yrke; + + @Schema(description = "Stillingsprosent", example = "49.5") + private Double stillingsprosent; + + @Schema(description = "Antall timer per uke", example = "37.5") + private Double antallTimerPrUke; + + @Schema(description = "Beregnet antall timer per uke", example = "37.5") + private Double beregnetAntallTimerPrUke; + + @Schema(description = "Dato for siste lønnsendring, format (ISO-8601): yyyy-MM-dd", example = "2014-07-15") + private LocalDate sistLoennsendring; + + @Schema(description = "Dato for siste stillingsendring, format (ISO-8601): yyyy-MM-dd", example = "2015-12-15") + private LocalDate sistStillingsendring; + + private Bruksperiode bruksperiode; + + private Gyldighetsperiode gyldighetsperiode; + + private Sporingsinformasjon sporingsinformasjon; + + @JsonIgnore + public LocalDate getSistLoennsendring() { + return sistLoennsendring; + } + + @JsonIgnore + public LocalDate getSistStillingsendring() { + return sistStillingsendring; + } + + @JsonProperty("sistLoennsendring") + public String getSistLoennsendringAsString() { + return JavaTimeUtil.toString(sistLoennsendring); + } + + @JsonProperty("sistLoennsendring") + public void setSistLoennsendringAsString(String sistLoennsendring) { + this.sistLoennsendring = JavaTimeUtil.toLocalDate(sistLoennsendring); + } + + @JsonProperty("sistStillingsendring") + public String getSistStillingsendringAsString() { + return JavaTimeUtil.toString(sistStillingsendring); + } + + @JsonProperty("sistStillingsendring") + public void setSistStillingsendringAsString(String sistStillingsendring) { + this.sistStillingsendring = JavaTimeUtil.toLocalDate(sistStillingsendring); + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtaletype.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtaletype.java new file mode 100644 index 00000000000..8192cf72ad5 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtaletype.java @@ -0,0 +1,9 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import io.swagger.v3.oas.annotations.media.Schema; + +public interface Arbeidsavtaletype { + + @Schema(description = "Type for arbeidsavtale", allowableValues = "Ordinaer,Maritim,Forenklet,Frilanser") + String getType(); +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java new file mode 100644 index 00000000000..0dde0849f6d --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java @@ -0,0 +1,120 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "navArbeidsforholdId", + "arbeidsforholdId", + "arbeidstaker", + "arbeidsgiver", + "opplysningspliktig", + "type", + "ansettelsesperiode", + "arbeidsavtaler", + "permisjonPermitteringer", + "antallTimerForTimeloennet", + "utenlandsopphold", + "varsler", + "innrapportertEtterAOrdningen", + "registrert", + "sistBekreftet", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon om arbeidsforhold") +@SuppressWarnings({"pmd:TooManyFields", "fb-contrib:CC_CYCLOMATIC_COMPLEXITY"}) +public class Arbeidsforhold { + + @Schema(description = "Arbeidsforhold-id i AAREG", example = "123456") + private Long navArbeidsforholdId; + + @Schema(description = "Arbeidsforhold-id fra opplysningspliktig", example = "abc-321") + private String arbeidsforholdId; + + private LocalDateTime registrert; + + private Person arbeidstaker; + + private OpplysningspliktigArbeidsgiver arbeidsgiver; + + private OpplysningspliktigArbeidsgiver opplysningspliktig; + + @Schema(description = "Arbeidsforholdtype (kodeverk: Arbeidsforholdtyper)", example = "ordinaertArbeidsforhold") + private String type; + + private Ansettelsesperiode ansettelsesperiode; + + @Schema(description = "Liste av arbeidsavtaler - gjeldende og evt. med historikk") + private List arbeidsavtaler; + + @Schema(description = "Liste av permisjoner og/eller permitteringer") + private List permisjonPermitteringer; + + @Schema(description = "Liste av antall timer med timelønn") + private List antallTimerForTimeloennet; + + @Schema(description = "Liste av utenlandsopphold") + private List utenlandsopphold; + + @Schema(description = "Liste av unike varsler for ulike entiter") + private List varsler; + + @Schema(description = "Er arbeidsforholdet innrapportert via a-ordningen?") + private Boolean innrapportertEtterAOrdningen; + + private LocalDateTime sistBekreftet; + + private Sporingsinformasjon sporingsinformasjon; + + @JsonIgnore + public LocalDateTime getRegistrert() { + return registrert; + } + + @JsonProperty("registrert") + @Schema(description = "Tidspunkt for registrering av arbeidsforhold, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-18T11:12:29") + public String getRegistrertAsString() { + return JavaTimeUtil.toString(registrert); + } + + @JsonProperty("registrert") + public void setRegistrertAsString(String registrert) { + this.registrert = JavaTimeUtil.toLocalDateTime(registrert); + } + + @JsonIgnore + public LocalDateTime getSistBekreftet() { + return sistBekreftet; + } + + @JsonProperty("sistBekreftet") + @Schema(description = "Tidspunkt for siste bekreftelse av arbeidsforhold, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:10:31") + public String getSistBekreftetAsString() { + return JavaTimeUtil.toString(sistBekreftet); + } + + @JsonProperty("sistBekreftet") + public void setSistBekreftetAsString(String sistBekreftet) { + this.sistBekreftet = JavaTimeUtil.toLocalDateTime(sistBekreftet); + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforholdoversikt.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforholdoversikt.java new file mode 100644 index 00000000000..629cbbcb307 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforholdoversikt.java @@ -0,0 +1,111 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "navArbeidsforholdId", + "arbeidstaker", + "arbeidsgiver", + "opplysningspliktig", + "type", + "ansattFom", + "ansattTom", + "yrke", + "stillingsprosent", + "permisjonPermitteringsprosent", + "innrapportertEtterAOrdningen", + "sistBekreftet", + "varsler" +}) +@Schema(description = "Informasjon om arbeidsforhold (overordnet)") +@SuppressWarnings("fb-contrib:CC_CYCLOMATIC_COMPLEXITY") +public class Arbeidsforholdoversikt { + + @Schema(description = "Arbeidsforhold-id i AAREG", example = "123456") + private Long navArbeidsforholdId; + + private Person arbeidstaker; + + private OpplysningspliktigArbeidsgiver arbeidsgiver; + + private OpplysningspliktigArbeidsgiver opplysningspliktig; + + @Schema(description = "Arbeidsforholdtype (kodeverk: Arbeidsforholdtyper)", example = "ordinaertArbeidsforhold") + private String type; + + private LocalDate ansattFom; + + private LocalDate ansattTom; + + @Schema(description = "Yrke (kodeverk: Yrker)", example = "2130123") + private String yrke; + + @Schema(description = "Stillingsprosent", example = "49.5") + private Double stillingsprosent; + + @Schema(description = "Prosent for permisjon eller permittering (aggregert)", example = "50.5") + private Double permisjonPermitteringsprosent; + + @Schema(description = "Er arbeidsforholdet innrapportert via a-ordningen?") + private Boolean innrapportertEtterAOrdningen; + + private LocalDateTime sistBekreftet; + + @Schema(description = "Liste av unike varsler for ulike entiter") + private List varsler; + + @JsonIgnore + public LocalDate getAnsattFom() { + return ansattFom; + } + + @JsonProperty("ansattFom") + @Schema(description = "Fra-og-med-dato for ansettelsesperiode, format (ISO-8601): yyyy-MM-dd", example = "2014-07-01") + public String getAnsattFomAsString() { + return JavaTimeUtil.toString(ansattFom); + } + + @JsonIgnore + public LocalDate getAnsattTom() { + return ansattTom; + } + + @JsonProperty("ansattTom") + @Schema(description = "Til-og-med-dato for ansettelsesperiode, format (ISO-8601): yyyy-MM-dd", example = "2015-12-31") + public String getAnsattTomAsString() { + return JavaTimeUtil.toString(ansattTom); + } + + @JsonIgnore + public LocalDateTime getSistBekreftet() { + return sistBekreftet; + } + + @JsonProperty("sistBekreftet") + @Schema(description = "Tidspunkt for siste bekreftelse av arbeidsforhold, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:10:31") + public String getSistBekreftetAsString() { + return JavaTimeUtil.toString(sistBekreftet); + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java new file mode 100644 index 00000000000..3dada2aa493 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java @@ -0,0 +1,46 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "arbeidsforholdoversikter", + "startrad", + "antall", + "totalAntall" +}) +@Schema(description = """ + Resultatobjekt for finn-arbeidsforholdoversikter-per-arbeidsgiver + + Arbeidsforholdoversikter er filtrert grunnet tilgangskontroll hvis størrelse på liste er mindre enn (total) antall (forutsatt at antall- og/eller startrad-filter ikke er angitt)""" +) +public class ArbeidsgiverArbeidsforholdoversikter { + + @Schema(description = "Liste av arbeidsforholdoversikter") + private List arbeidsforholdoversikter; + + @Schema(description = "Nummer for første rad i resultatsett (ikke angitt hvis antall er 0)") + private Integer startrad; + + @Schema(description = "Antall arbeidsforholdoversikter i resultatsett - der det er siste resultatsett hvis antall er mindre enn forespurt antall") + private Integer antall; + + @Schema(description = "Total antall arbeidsforholdoversikter") + private Integer totalAntall; +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsgiveroversikt.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsgiveroversikt.java new file mode 100644 index 00000000000..0e0d4751d83 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsgiveroversikt.java @@ -0,0 +1,36 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "arbeidsgiver", + "aktiveArbeidsforhold", + "inaktiveArbeidsforhold" +}) +@Schema(description = "Informasjon knyttet til arbeidsgiver (overordnet)") +public class Arbeidsgiveroversikt { + + private OpplysningspliktigArbeidsgiver arbeidsgiver; + + @Schema(description = "Antall aktive arbeidsforhold, dvs. de som har en gjeldende ansettelsesperiode") + private Integer aktiveArbeidsforhold; + + @Schema(description = "Antall inaktive arbeidsforhold, dvs. de som har en historisk ansettelsesperiode") + private Integer inaktiveArbeidsforhold; + +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Bruksperiode.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Bruksperiode.java new file mode 100644 index 00000000000..deed61f6e7c --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Bruksperiode.java @@ -0,0 +1,73 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDateTime; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "fom", + "tom" +}) +@Schema(description = "Inneholder informasjon om bruksperiode til objektet") +public class Bruksperiode { + + private LocalDateTime fom; + + private LocalDateTime tom; + + @JsonIgnore + public LocalDateTime getFom() { + return fom; + } + + @JsonIgnore + public LocalDateTime getTom() { + return tom; + } + + @JsonProperty("fom") + @Schema(description = "Fra-tidsstempel for bruksperiode, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2015-01-06T21:44:04.748") + public String getFomAsString() { + return JavaTimeUtil.toString(fom); + } + + @JsonProperty("fom") + public void setFomAsString(String fom) { + this.fom = JavaTimeUtil.toLocalDateTime(fom); + } + + @JsonProperty("tom") + @Schema(description = "Til-tidsstempel for bruksperiode, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2015-12-06T19:45:04") + public String getTomAsString() { + return JavaTimeUtil.toString(tom); + } + + @JsonProperty("tom") + public void setTomAsString(String tom) { + this.tom = JavaTimeUtil.toLocalDateTime(tom); + } + + @Override + @SuppressWarnings({"pmd:ConsecutiveLiteralAppends", "pmd:ConsecutiveAppendsShouldReuse", "fb-contrib:UCPM_USE_CHARACTER_PARAMETERIZED_METHOD", "pmd:AppendCharacterWithChar"}) + public String toString() { + return "Bruksperiode{" + "fom=" + getFomAsString() + ", tom=" + getTomAsString() + "}"; + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java new file mode 100644 index 00000000000..7b9d9832654 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@JsonPropertyOrder({ + "arbeidstidsordning", + "ansettelsesform", + "yrke", + "stillingsprosent", + "antallTimerPrUke", + "beregnetAntallTimerPrUke", + "sistLoennsendring", + "sistStillingsendring", + "bruksperiode", + "gyldighetsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for forenklet oppgjørsordning arbeidsforhold") +public class ForenkletOppgjoersordningArbeidsavtale extends Arbeidsavtale { + + public static final String TYPE = "Forenklet"; + + @Override + @JsonIgnore + public String getType() { + return TYPE; + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/FrilanserArbeidsavtale.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/FrilanserArbeidsavtale.java new file mode 100644 index 00000000000..cd7d19156da --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/FrilanserArbeidsavtale.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@JsonPropertyOrder({ + "arbeidstidsordning", + "ansettelsesform", + "yrke", + "stillingsprosent", + "antallTimerPrUke", + "beregnetAntallTimerPrUke", + "sistLoennsendring", + "sistStillingsendring", + "bruksperiode", + "gyldighetsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for frilanser arbeidsforhold", allOf = Arbeidsavtale.class) +public class FrilanserArbeidsavtale extends Arbeidsavtale { + + public static final String TYPE = "Frilanser"; + + @Override + @JsonIgnore + public String getType() { + return TYPE; + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Gyldighetsperiode.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Gyldighetsperiode.java new file mode 100644 index 00000000000..f2bac8a4bf0 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Gyldighetsperiode.java @@ -0,0 +1,19 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public class Gyldighetsperiode extends Periode { + + @Override + @SuppressWarnings({"pmd:ConsecutiveLiteralAppends", "pmd:ConsecutiveAppendsShouldReuse", "fb-contrib:UCPM_USE_CHARACTER_PARAMETERIZED_METHOD", "pmd:AppendCharacterWithChar"}) + public String toString() { + return "Gyldighetsperiode{" + "fom=" + getFomAsString() + ", tom=" + getTomAsString() + "}"; + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/MaritimArbeidsavtale.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/MaritimArbeidsavtale.java new file mode 100644 index 00000000000..2f47ee30ac8 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/MaritimArbeidsavtale.java @@ -0,0 +1,54 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +@Getter +@Setter +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@JsonPropertyOrder({ + "fartsomraade", + "skipsregister", + "fartoeystype", + "arbeidstidsordning", + "ansettelsesform", + "yrke", + "stillingsprosent", + "antallTimerPrUke", + "beregnetAntallTimerPrUke", + "sistLoennsendring", + "sistStillingsendring", + "bruksperiode", + "gyldighetsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for maritime arbeidsforhold", allOf = Arbeidsavtale.class) +public class MaritimArbeidsavtale extends Arbeidsavtale { + + public static final String TYPE = "Maritim"; + + @Schema(description = "Fartsområde (kodeverk: Fartsomraader)", example = "utenriks") + private String fartsomraade; + + @Schema(description = "Skipsregister (kodeverk: Skipsregistre)", example = "nis") + private String skipsregister; + + @Schema(description = "Skipstype (kodeverk: Skipstyper)", example = "turist") + private String skipstype; + + @Override + @JsonIgnore + public String getType() { + return TYPE; + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiver.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiver.java new file mode 100644 index 00000000000..9c25dc335a4 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiver.java @@ -0,0 +1,24 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + property = "type" +) +@JsonSubTypes({ + @JsonSubTypes.Type(value = Organisasjon.class, name = "Organisasjon"), + @JsonSubTypes.Type(value = Person.class, name = "Person") +}) +@Schema(description = "Informasjon om opplysningspliktig eller arbeidsgiver (organisasjon eller person)", oneOf = {Organisasjon.class, Person.class}) +@SuppressWarnings("squid:S1610") +public abstract class OpplysningspliktigArbeidsgiver { + + public abstract String getType(); +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiverType.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiverType.java new file mode 100644 index 00000000000..5c97c433b06 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiverType.java @@ -0,0 +1,6 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +public interface OpplysningspliktigArbeidsgiverType { + + String getType(); +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OrdinaerArbeidsavtale.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OrdinaerArbeidsavtale.java new file mode 100644 index 00000000000..270f3202a57 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OrdinaerArbeidsavtale.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@JsonPropertyOrder({ + "arbeidstidsordning", + "ansettelsesform", + "yrke", + "stillingsprosent", + "antallTimerPrUke", + "beregnetAntallTimerPrUke", + "sistLoennsendring", + "sistStillingsendring", + "bruksperiode", + "gyldighetsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for ordinære arbeidsforhold", allOf = Arbeidsavtale.class) +public class OrdinaerArbeidsavtale extends Arbeidsavtale { + + public static final String TYPE = "Ordinaer"; + + @Override + @JsonIgnore + public String getType() { + return TYPE; + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Organisasjon.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Organisasjon.java new file mode 100644 index 00000000000..6db83b7e70e --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Organisasjon.java @@ -0,0 +1,36 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "type", + "organisasjonsnummer" +}) +@Schema(description = "Informasjon om organisasjon (arbeidsgiver/opplysningspliktig)") +public class Organisasjon extends OpplysningspliktigArbeidsgiver implements OpplysningspliktigArbeidsgiverType { + + @Schema(description = "Organisasjonsnummer fra Enhetsregisteret", example = "987654321") + private String organisasjonsnummer; + + @Override + @JsonIgnore + public String getType() { + return this.getClass().getSimpleName(); + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Periode.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Periode.java new file mode 100644 index 00000000000..f12a411da09 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Periode.java @@ -0,0 +1,73 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDate; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "fom", + "tom" +}) +@Schema(description = "Inneholder informasjon om periode") +public class Periode { + + private LocalDate fom; + + private LocalDate tom; + + @JsonIgnore + public LocalDate getFom() { + return fom; + } + + @JsonIgnore + public LocalDate getTom() { + return tom; + } + + @JsonProperty("fom") + @Schema(description = "Fra-og-med-dato for periode, format (ISO-8601): yyyy-MM-dd", example = "2014-07-01") + public String getFomAsString() { + return JavaTimeUtil.toString(fom); + } + + @JsonProperty("fom") + public void setFomAsString(String fom) { + this.fom = JavaTimeUtil.toLocalDate(fom); + } + + @JsonProperty("tom") + @Schema(description = "Til-og-med-dato for periode, format (ISO-8601): yyyy-MM-dd", example = "2015-12-31") + public String getTomAsString() { + return JavaTimeUtil.toString(tom); + } + + @JsonProperty("tom") + public void setTomAsString(String tom) { + this.tom = JavaTimeUtil.toLocalDate(tom); + } + + @Override + @SuppressWarnings({"pmd:ConsecutiveLiteralAppends", "pmd:ConsecutiveAppendsShouldReuse", "fb-contrib:UCPM_USE_CHARACTER_PARAMETERIZED_METHOD", "pmd:AppendCharacterWithChar"}) + public String toString() { + return "Periode{" + "fom=" + getFomAsString() + ", tom=" + getTomAsString() + "}"; + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/PermisjonPermittering.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/PermisjonPermittering.java new file mode 100644 index 00000000000..ba22b56fd49 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/PermisjonPermittering.java @@ -0,0 +1,46 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "permisjonPermitteringId", + "periode", + "prosent", + "type", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon om permisjon eller permittering") +public class PermisjonPermittering { + + @Schema(description = "Id fra opplysningspliktig", example = "123-xyz") + private String permisjonPermitteringId; + + private Periode periode; + + @Schema(description = "Prosent for permisjon eller permittering", example = "50.5") + private Double prosent; + + @Schema(description = "Permisjon-/permitteringstype (kodeverk: PermisjonsOgPermitteringsBeskrivelse)", example = "permisjonMedForeldrepenger") + private String type; + + @Schema(description = "Varslingskode (kodeverk: Varslingskode_5fAa-registeret) - benyttes hvis permisjon/permittering er lukket maskinelt") + private String varslingskode; + + @Schema(description = "Informasjon om opprettelse og endring av objekt") + private Sporingsinformasjon sporingsinformasjon; +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Person.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Person.java new file mode 100644 index 00000000000..129c7a6d2fd --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Person.java @@ -0,0 +1,40 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "type", + "offentligIdent", + "aktoerId" +}) +@Schema(description = "Informasjon om person (arbeidstaker/arbeidsgiver/opplysningspliktig)") +public class Person extends OpplysningspliktigArbeidsgiver implements Persontype { + + @Schema(description = "Gjeldende offentlig ident", example = "31126700000") + private String offentligIdent; + + @Schema(description = "Aktør-id", example = "1234567890") + private String aktoerId; + + @Override + @JsonIgnore + public String getType() { + return this.getClass().getSimpleName(); + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Persontype.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Persontype.java new file mode 100644 index 00000000000..516b09ee60f --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Persontype.java @@ -0,0 +1,6 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +public interface Persontype { + + String getType(); +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Sporingsinformasjon.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Sporingsinformasjon.java new file mode 100644 index 00000000000..05867c0ed3a --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Sporingsinformasjon.java @@ -0,0 +1,91 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDateTime; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "opprettetTidspunkt", + "opprettetAv", + "opprettetKilde", + "opprettetKildereferanse", + "endretTidspunkt", + "endretAv", + "endretKilde", + "endretKildereferanse" +}) +@Schema(description = "Informasjon om opprettelse og endring av objekt. MERK: Skal IKKE eksponeres i selvbetjeningssonen (SBS).") +public class Sporingsinformasjon { + + private LocalDateTime opprettetTidspunkt; + + @Schema(description = "Brukernavn for opprettelse", example = "srvappserver") + private String opprettetAv; + + @Schema(description = "Kilde for opprettelse", example = "EDAG") + private String opprettetKilde; + + @Schema(description = "Kildereferanse for opprettelse", example = "22a26849-aeef-4b81-9174-e238c11e1081") + private String opprettetKildereferanse; + + private LocalDateTime endretTidspunkt; + + @Schema(description = "Brukernavn for endring", example = "Z990693") + private String endretAv; + + @Schema(description = "Kilde for endring", example = "AAREG") + private String endretKilde; + + @Schema(description = "Kildereferanse for endring", example = "referanse-fra-kilde") + private String endretKildereferanse; + + @JsonIgnore + public LocalDateTime getOpprettetTidspunkt() { + return opprettetTidspunkt; + } + + @JsonIgnore + public LocalDateTime getEndretTidspunkt() { + return endretTidspunkt; + } + + @JsonProperty("opprettetTidspunkt") + @Schema(description = "Tidspunkt for opprettelse, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:10:58.059") + public String getOpprettetTidspunktAsString() { + return JavaTimeUtil.toString(opprettetTidspunkt); + } + + @JsonProperty("opprettetTidspunkt") + public void setOpprettetTidspunktAsString(String opprettetTidspunkt) { + this.opprettetTidspunkt = JavaTimeUtil.toLocalDateTime(opprettetTidspunkt); + } + + @JsonProperty("endretTidspunkt") + @Schema(description = "Tidspunkt for endring, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:11:20.79") + public String getEndretTidspunktAsString() { + return JavaTimeUtil.toString(endretTidspunkt); + } + + @JsonProperty("endretTidspunkt") + public void setEndretTidspunktAsString(String endretTidspunkt) { + this.endretTidspunkt = JavaTimeUtil.toLocalDateTime(endretTidspunkt); + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Utenlandsopphold.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Utenlandsopphold.java new file mode 100644 index 00000000000..b295491f066 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Utenlandsopphold.java @@ -0,0 +1,60 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.YearMonth; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "periode", + "landkode", + "rapporteringsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon om utenlandsopphold") +public class Utenlandsopphold { + + @Schema(description = "Periode for utenlandsopphold") + private Periode periode; + + @Schema(description = "Landkode (kodeverk: Landkoder)", example = "JPN") + private String landkode; + + private YearMonth rapporteringsperiode; + + @Schema(description = "Informasjon om opprettelse og endring av objekt") + private Sporingsinformasjon sporingsinformasjon; + + @JsonIgnore + public YearMonth getRapporteringsperiode() { + return rapporteringsperiode; + } + + @JsonProperty("rapporteringsperiode") + @Schema(description = "Rapporteringsperiode for utenlandsopphold, format (ISO-8601): yyyy-MM", example = "2017-12") + public String getRapporteringsperiodeAsString() { + return JavaTimeUtil.toString(rapporteringsperiode); + } + + @JsonProperty("rapporteringsperiode") + public void setRapporteringsperiodeAsString(String rapporteringsperiode) { + this.rapporteringsperiode = JavaTimeUtil.toYearMonth(rapporteringsperiode); + } +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varsel.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varsel.java new file mode 100644 index 00000000000..b14eb924ea4 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varsel.java @@ -0,0 +1,33 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "entitet", + "type", + "varslingskode" +}) +@Schema(description = "Informasjon om varsel") +public class Varsel { + + @Schema(description = "Entitet for varsel") + private Varselentitet entitet; + + @Schema(description = "Varslingskode (kodeverk: Varslingskode_5fAa-registeret)") + private String varslingskode; +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varselentitet.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varselentitet.java new file mode 100644 index 00000000000..73abecce19e --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varselentitet.java @@ -0,0 +1,11 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import io.swagger.v3.oas.annotations.media.Schema; + +@Schema(description = "Entitet for varsel") +public enum Varselentitet { + + ARBEIDSFORHOLD, + ANSETTELSESPERIODE, + PERMISJONPERMITTERING +} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/util/JavaTimeUtil.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/util/JavaTimeUtil.java new file mode 100644 index 00000000000..9ae3d537ed8 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/util/JavaTimeUtil.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.YearMonth; +import java.time.format.DateTimeFormatter; + +import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE; +import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME; + +public class JavaTimeUtil { + + private static final String YEAR_MONTH_PATTERN = "yyyy-MM"; + + public static String toString(LocalDate date) { + return date != null ? date.format(ISO_LOCAL_DATE) : null; + } + + public static String toString(LocalDateTime dateTime) { + return dateTime != null ? dateTime.format(ISO_LOCAL_DATE_TIME) : null; + } + + public static String toString(YearMonth yearMonth) { + return yearMonth != null ? yearMonth.format(DateTimeFormatter.ofPattern(YEAR_MONTH_PATTERN)) : null; + } + + public static LocalDate toLocalDate(String date) { + return date != null ? LocalDate.parse(date, ISO_LOCAL_DATE) : null; + } + + public static LocalDateTime toLocalDateTime(String dateTime) { + return dateTime != null ? LocalDateTime.parse(dateTime, ISO_LOCAL_DATE_TIME) : null; + } + + public static YearMonth toYearMonth(String yearMonth) { + return yearMonth != null ? YearMonth.parse(yearMonth, DateTimeFormatter.ofPattern(YEAR_MONTH_PATTERN)) : null; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index f7776558610..8966dbd42a3 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -4,7 +4,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.AaregConsumer; -import no.nav.testnav.libs.dto.aareg.v1.Arbeidsforhold; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; import org.springframework.stereotype.Service; import java.time.LocalDate; From 3f0f2110b5acad29a1b553a92dd864cae125548a Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Thu, 4 Jul 2024 09:52:59 +0200 Subject: [PATCH 097/161] =?UTF-8?q?Forandre=20til=20put=20meldingen=20til?= =?UTF-8?q?=20=C3=A5=20ha=20header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/command/EndreArbeidsforholdCommand.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index a382406968e..51a75dd8a49 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -44,12 +44,11 @@ public Mono call() { Disposable requets = webClient .put() .uri(builder -> builder.path("/q2/api/v1/arbeidsforhold/{navArbeidsforholdId}") - .queryParam("Nav-Arbeidsforhold-Kildereferande", navArbeidsforholdKilde) - .queryParam("Nav-Arbeidsforhold-Periode", getNavArbeidsfoholdPeriode()) - .queryParam("navArbeidsforholdId", requests.getNavArbeidsforholdId()) .build(requests.getNavArbeidsforholdId())) .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) + .header("Nav-Arbeidsforhold-Periode", getNavArbeidsfoholdPeriode()) .body(BodyInserters.fromValue(requests)) .retrieve() .toBodilessEntity() From a558574d182dc7c6fe9288e4c2d9941ba2fec44d Mon Sep 17 00:00:00 2001 From: Martineem Date: Thu, 4 Jul 2024 10:28:08 +0200 Subject: [PATCH 098/161] =?UTF-8?q?Endrer=20arbeidsforhold=20med=20gyldig?= =?UTF-8?q?=20slutt=C3=A5rsak-=20og=20varslings-kode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ArbeidsforholdService.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 8966dbd42a3..72e3ed1ec0e 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -26,8 +26,13 @@ public void endreArbeidsforhold(Arbeidsforhold request){ log.info("Endrer arbeidsforhold for ident: {}", request.getNavArbeidsforholdId()); log.info(String.valueOf(request)); request.getAnsettelsesperiode().getPeriode().setTom(LocalDate.now()); - request.getAnsettelsesperiode().setSluttaarsak("Dødsfall"); - log.info(String.valueOf(request)); + request.getAnsettelsesperiode().setSluttaarsak("arbeidstakerHarSagtOppSelv"); + request.getAnsettelsesperiode().setVarslingskode("NAVEND"); + request.getArbeidsavtaler().forEach( + arbeidsavtale -> { + arbeidsavtale.setStillingsprosent(0.0); + }); + log.info(String.valueOf((request))); aaregConsumer.endreArbeidsforhold(request); } From 85b29ffb9380976401e8495dba7d3abbffe7614d Mon Sep 17 00:00:00 2001 From: Martineem Date: Thu, 4 Jul 2024 10:47:08 +0200 Subject: [PATCH 099/161] Legger til toString for Arbeidsforhold --- .../levendearbeidsforhold/domain/v1/Ansettelsesperiode.java | 5 +++++ .../levendearbeidsforhold/domain/v1/Arbeidsforhold.java | 5 +++++ .../service/ArbeidsforholdService.java | 6 +++--- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java index b695427d85f..01cc0c3c0f0 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java @@ -38,4 +38,9 @@ public class Ansettelsesperiode { private Bruksperiode bruksperiode; private Sporingsinformasjon sporingsinformasjon; + + @Override + public String toString() { + return ("Ansettelsesforhold: [" + periode.toString() + ", " + sluttaarsak + ", " + varslingskode); + } } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java index 0dde0849f6d..22010d64b3a 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java @@ -117,4 +117,9 @@ public String getSistBekreftetAsString() { public void setSistBekreftetAsString(String sistBekreftet) { this.sistBekreftet = JavaTimeUtil.toLocalDateTime(sistBekreftet); } + + @Override + public String toString() { + return ("Arbeidsforhold: [" + navArbeidsforholdId + ", " + arbeidsforholdId + ", " + ansettelsesperiode + ", " + arbeidsavtaler); + } } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 72e3ed1ec0e..292711f7b3a 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -24,15 +24,15 @@ public List hentArbeidsforhold(String ident) { public void endreArbeidsforhold(Arbeidsforhold request){ log.info("Endrer arbeidsforhold for ident: {}", request.getNavArbeidsforholdId()); - log.info(String.valueOf(request)); + log.info(request.toString()); request.getAnsettelsesperiode().getPeriode().setTom(LocalDate.now()); request.getAnsettelsesperiode().setSluttaarsak("arbeidstakerHarSagtOppSelv"); request.getAnsettelsesperiode().setVarslingskode("NAVEND"); request.getArbeidsavtaler().forEach( arbeidsavtale -> { - arbeidsavtale.setStillingsprosent(0.0); + arbeidsavtale.setStillingsprosent(null); }); - log.info(String.valueOf((request))); + log.info(request.toString()); aaregConsumer.endreArbeidsforhold(request); } From 713134344bc6ff630a771a4fb232f168ebcfa042 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Thu, 4 Jul 2024 10:47:48 +0200 Subject: [PATCH 100/161] Forandret EndreArbeidsforholdCommand.java slik at den ikke gir feilmelding --- .../command/EndreArbeidsforholdCommand.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index 51a75dd8a49..477dd7d47d0 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Function; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -41,7 +42,7 @@ private static String getNavArbeidsfoholdPeriode() { public Mono call() { try{ - Disposable requets = webClient + Mono requets = webClient .put() .uri(builder -> builder.path("/q2/api/v1/arbeidsforhold/{navArbeidsforholdId}") .build(requests.getNavArbeidsforholdId())) @@ -51,11 +52,16 @@ public Mono call() { .header("Nav-Arbeidsforhold-Periode", getNavArbeidsfoholdPeriode()) .body(BodyInserters.fromValue(requests)) .retrieve() - .toBodilessEntity() + .bodyToMono(Arbeidsforhold.class) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) - .filter(WebClientFilter::is5xxException)).subscribe(); - log.info("Arbeidsforhold "); - return Mono.just((Arbeidsforhold) requets); + .filter(WebClientFilter::is5xxException)) + .map(arbeidsforhold1 -> { + return Arbeidsforhold.builder().build(); + }); + //Function toString = WebClient.ResponseSpec::toString; + log.info(requests.toString()); + + return requets; } catch ( From 7a30f23b8f68fda1f09329114362baa1a95f9005 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Thu, 4 Jul 2024 10:51:32 +0200 Subject: [PATCH 101/161] =?UTF-8?q?Fungerer=20=C3=A5=20endrearbeidsforhold?= =?UTF-8?q?.=20Endret=20put=20kallet=20i=20EndreArbeidsforholdCommand.java?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/command/EndreArbeidsforholdCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index 477dd7d47d0..d2df073aec2 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -58,7 +58,6 @@ public Mono call() { .map(arbeidsforhold1 -> { return Arbeidsforhold.builder().build(); }); - //Function toString = WebClient.ResponseSpec::toString; log.info(requests.toString()); return requets; From 12d4b5d3967c15cf8a8058408f9bf9616a7037db Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 4 Jul 2024 14:33:52 +0200 Subject: [PATCH 102/161] La til .subscribe() --- .../command/EndreArbeidsforholdCommand.java | 52 ++++++++----------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index d2df073aec2..d275fe773de 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -41,38 +41,30 @@ private static String getNavArbeidsfoholdPeriode() { @Override public Mono call() { - try{ - Mono requets = webClient - .put() - .uri(builder -> builder.path("/q2/api/v1/arbeidsforhold/{navArbeidsforholdId}") - .build(requests.getNavArbeidsforholdId())) - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) - .header("Nav-Arbeidsforhold-Periode", getNavArbeidsfoholdPeriode()) - .body(BodyInserters.fromValue(requests)) - .retrieve() - .bodyToMono(Arbeidsforhold.class) - .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) - .filter(WebClientFilter::is5xxException)) - .map(arbeidsforhold1 -> { - return Arbeidsforhold.builder().build(); - }); - log.info(requests.toString()); + Mono requets = webClient + .put() + .uri(builder -> builder.path("/q2/api/v1/arbeidsforhold/{navArbeidsforholdId}") + .build(requests.getNavArbeidsforholdId())) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) + .header("Nav-Arbeidsforhold-Periode", getNavArbeidsfoholdPeriode()) + .body(BodyInserters.fromValue(requests)) + .retrieve() + .bodyToMono(Arbeidsforhold.class) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .map(arbeidsforhold1 -> Arbeidsforhold.builder().build()); - return requets; - } + requets.subscribe(response -> { + log.info("Fikk respons. nav-ID: {}", response.getArbeidsforholdId()); + }, error -> { + log.error("Feil ved endring av arbeidsforhold", error); + }); + + + return requets; - catch ( - WebClientResponseException.NotFound e) { - log.warn("Får ikke endret {} i miljø {}", requests.getNavArbeidsforholdId()); - } catch (WebClientResponseException e) { - log.error( - "Klarer ikke å hente arbeidsforhold for navArbeidsforhold: {}. Feilmelding: {}.", requests.getNavArbeidsforholdId()); - e.getResponseBodyAsString(); - throw e; - }; - return null; } } From c1a9763841b72b13272fb2fc5e21a60b82dc8438 Mon Sep 17 00:00:00 2001 From: Martineem Date: Thu, 4 Jul 2024 15:19:19 +0200 Subject: [PATCH 103/161] Rydder opp og fjerner ubrukte filer --- .../consumers/AaregConsumer.java | 45 ++++++---- .../consumers/HentArbeidsforholdConsumer.java | 65 -------------- .../command/EndreArbeidsforholdCommand.java | 47 ++++------ .../command/HentArbeidsforholdCommand.java | 4 +- .../domain/Arbeidsforhold.java | 86 ------------------- .../domain/PDLHendelse.java | 60 ------------- .../listener/DoedsfallListener.java | 25 +++--- .../service/ArbeidsforholdService.java | 44 +++++----- 8 files changed, 84 insertions(+), 292 deletions(-) delete mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java delete mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/Arbeidsforhold.java delete mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/PDLHendelse.java diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java index 7463e50a263..7db3de8a6d6 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java @@ -1,26 +1,28 @@ package no.nav.registre.testnorge.levendearbeidsforhold.consumers; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; + import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.EndreArbeidsforholdCommand; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; +import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; + import org.springframework.http.MediaType; import org.springframework.http.codec.json.Jackson2JsonDecoder; import org.springframework.http.codec.json.Jackson2JsonEncoder; import org.springframework.stereotype.Component; import org.springframework.web.reactive.function.client.ExchangeStrategies; import org.springframework.web.reactive.function.client.WebClient; -import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; -import reactor.core.publisher.Mono; import java.util.ArrayList; import java.util.List; import static java.util.Objects.nonNull; +import com.fasterxml.jackson.databind.ObjectMapper; + @Slf4j @Component public class AaregConsumer { @@ -33,26 +35,31 @@ public AaregConsumer( Consumers consumers, TokenExchange tokenExchange, ObjectMapper objectMapper) { + this.serverProperties = consumers.getTestnavAaregProxy(); + log.info("ServerProperties: {}", serverProperties); + this.tokenExchange = tokenExchange; + ExchangeStrategies jacksonStrategy = ExchangeStrategies - .builder() - .codecs( - config -> { - config - .defaultCodecs() - .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); - config - .defaultCodecs() - .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); - }) - .build(); + .builder() + .codecs( + config -> { + config + .defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + config + .defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + }) + .build(); + this.webClient = WebClient - .builder() - .exchangeStrategies(jacksonStrategy) - .baseUrl(serverProperties.getUrl()) - .build(); + .builder() + .exchangeStrategies(jacksonStrategy) + .baseUrl(serverProperties.getUrl()) + .build(); } public List hentArbeidsforhold(String ident) { @@ -66,7 +73,7 @@ public List hentArbeidsforhold(String ident) { public void endreArbeidsforhold(Arbeidsforhold requests) { var token = tokenExchange.exchange(serverProperties).block(); if (nonNull(token)) { - new EndreArbeidsforholdCommand(webClient, requests, token.getTokenValue(), new ObjectMapper()).call(); + new EndreArbeidsforholdCommand(webClient, requests, token.getTokenValue()).call(); } } } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java deleted file mode 100644 index f3f9f42a8d5..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/HentArbeidsforholdConsumer.java +++ /dev/null @@ -1,65 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.consumers; - -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; -import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; -import org.springframework.http.MediaType; -import org.springframework.http.codec.json.Jackson2JsonDecoder; -import org.springframework.http.codec.json.Jackson2JsonEncoder; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.function.client.ExchangeStrategies; -import org.springframework.web.reactive.function.client.WebClient; -import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; - -import java.util.ArrayList; -import java.util.List; - -import static java.util.Objects.nonNull; - -@Slf4j -@Component -public class HentArbeidsforholdConsumer { - - private final WebClient webClient; - private final ServerProperties serverProperties; - private final TokenExchange tokenExchange; - - public HentArbeidsforholdConsumer( - Consumers consumers, - TokenExchange tokenExchange, - ObjectMapper objectMapper) { - serverProperties = consumers.getTestnavAaregProxy(); - log.info("ServerProperties: {}", serverProperties); - this.tokenExchange = tokenExchange; - ExchangeStrategies jacksonStrategy = ExchangeStrategies - .builder() - .codecs( - config -> { - config - .defaultCodecs() - .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); - config - .defaultCodecs() - .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); - }) - .build(); - this.webClient = WebClient - .builder() - .exchangeStrategies(jacksonStrategy) - .baseUrl(serverProperties.getUrl()) - .build(); - } - - public List getArbeidsforholds(String ident) { - var token = tokenExchange.exchange(serverProperties).block(); - log.info("Token: {}", token); - if (nonNull(token)) { - return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); - } - return new ArrayList<>(); - } - -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index d275fe773de..85fe44fa35f 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -12,15 +12,13 @@ import org.springframework.http.MediaType; import org.springframework.web.reactive.function.BodyInserters; import org.springframework.web.reactive.function.client.WebClient; -import org.springframework.web.reactive.function.client.WebClientResponseException; -import reactor.core.Disposable; import reactor.core.publisher.Mono; import reactor.util.retry.Retry; import java.time.Duration; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Collections; import java.util.concurrent.Callable; @Slf4j @@ -29,42 +27,35 @@ public class EndreArbeidsforholdCommand implements Callable private final WebClient webClient; private final Arbeidsforhold requests; private final String token; - private final ObjectMapper objectMapper; + private final String miljoe = "q2"; private final String navArbeidsforholdKilde = "Dolly-doedsfall-hendelse" ; - private static String getNavArbeidsfoholdPeriode() { - DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM"); - LocalDateTime now = LocalDateTime.now(); - return dtf.format(now); - } @SneakyThrows @Override public Mono call() { - Mono requets = webClient - .put() - .uri(builder -> builder.path("/q2/api/v1/arbeidsforhold/{navArbeidsforholdId}") - .build(requests.getNavArbeidsforholdId())) - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) - .header("Nav-Arbeidsforhold-Periode", getNavArbeidsfoholdPeriode()) - .body(BodyInserters.fromValue(requests)) - .retrieve() - .bodyToMono(Arbeidsforhold.class) - .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) - .filter(WebClientFilter::is5xxException)) - .map(arbeidsforhold1 -> Arbeidsforhold.builder().build()); - - requets.subscribe(response -> { + Mono request = webClient + .put() + .uri(builder -> builder.path("/{miljoe}/api/v1/arbeidsforhold/{navArbeidsforholdId}") + .build(miljoe, requests.getNavArbeidsforholdId())) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) + .header("Nav-Arbeidsforhold-Periode", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"))) + .body(BodyInserters.fromValue(requests)) + .retrieve() + .bodyToMono(Arbeidsforhold.class) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .map(arbeidsforhold1 -> Arbeidsforhold.builder().build()); + + request.subscribe(response -> { log.info("Fikk respons. nav-ID: {}", response.getArbeidsforholdId()); }, error -> { log.error("Feil ved endring av arbeidsforhold", error); }); - - return requets; - + return request; } } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 8d2dc8098d9..9507f572b4c 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -3,9 +3,11 @@ import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; + import no.nav.testnav.libs.commands.utils.WebClientFilter; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.servletcore.headers.NavHeaders; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; + import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClientResponseException; diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/Arbeidsforhold.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/Arbeidsforhold.java deleted file mode 100644 index b812655feab..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/Arbeidsforhold.java +++ /dev/null @@ -1,86 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain; - -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import no.nav.testnav.libs.dto.ameldingservice.v1.ArbeidsforholdDTO; -/* -@Slf4j -@AllArgsConstructor -public class Arbeidsforhold { - - private final ArbeidsforholdDTO dto; - - public no.nav.testnav.libs.dto.oppsummeringsdokumentservice.v1.ArbeidsforholdDTO toV1DTO() { - - if (dto.getArbeidsavtaler().isEmpty()) { - throw new ArbeidsforholdNotFoundException("Finner ikke arbeidsforhold"); - } - - if (dto.getArbeidsavtaler().size() > 1) { - log.warn("Fant flere arbeidsavtaler. Velger den første i listen"); - } - - - var arbeidsavtale = dto.getArbeidsavtaler().get(0); - - return no.nav.testnav.libs.dto.oppsummeringsdokumentservice.v1.ArbeidsforholdDTO - .builder() - .arbeidsforholdId(dto.getArbeidsforholdId()) - .stillingsprosent(arbeidsavtale.getStillingsprosent()) - .yrke(arbeidsavtale.getYrke()) - .arbeidstidsordning(arbeidsavtale.getArbeidstidsordning()) - .antallTimerPrUke(arbeidsavtale.getAntallTimerPrUke()) - .sistLoennsendring(arbeidsavtale.getSistLoennsendring()) - .fom(dto.getAnsettelsesperiode().getPeriode().getFom()) - .tom(dto.getAnsettelsesperiode().getPeriode().getTom()) - .ident(dto.getArbeidstaker().getOffentligIdent()) - .type(dto.getType()) - .build(); - } - - - public no.nav.registre.testnorge.arbeidsforholdservice.provider.v2.dto.ArbeidsforholdDTO toV2DTO() { - - var antallImerForTimeloennetList = dto.getAntallTimerForTimeloennet() == null ? - null : - dto.getAntallTimerForTimeloennet() - .stream() - .map(AntallTimerForTimeloennet::new) - .map(AntallTimerForTimeloennet::toDTO) - .toList(); - - var utenlandsopphold = dto.getUtenlandsopphold() == null ? - null : - dto.getUtenlandsopphold() - .stream() - .map(Utenlandsopphold::new) - .map(Utenlandsopphold::toDTO) - .toList(); - - var permisjoner = dto.getPermisjonPermitteringer() == null ? - null : - dto.getPermisjonPermitteringer() - .stream() - .map(Permisjon::new) - .map(Permisjon::toDTO) - .toList(); - - return no.nav.registre.testnorge.arbeidsforholdservice.provider.v2.dto.ArbeidsforholdDTO - .builder() - .type(dto.getType()) - .arbeidsforholdId(dto.getArbeidsforholdId()) - .antallTimerForTimeloennet(antallImerForTimeloennetList) - .arbeidsgiver(new Arbeidsgiver(dto.getArbeidsgiver()).toDTO()) - .ansettelsesperiode(new Ansettelsesperiode(dto.getAnsettelsesperiode()).toDTO()) - .arbeidsavtaler(dto.getArbeidsavtaler().stream().map(Arbeidsavtale::new).map(Arbeidsavtale::toDTO) - .toList()) - .fartoy(dto.getArbeidsavtaler().get(0).getSkipstype() == null ? null : new Fartoy(dto.getArbeidsavtaler().get(0)).toDTO()) - .arbeidstaker(new Arbeidstaker(dto.getArbeidstaker()).toDTO()) - .utenlandsopphold(utenlandsopphold) - .permisjonPermitteringer(permisjoner) - .build(); - } - -} - - */ diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/PDLHendelse.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/PDLHendelse.java deleted file mode 100644 index bfb18af6eb6..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/PDLHendelse.java +++ /dev/null @@ -1,60 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain; - -public class PDLHendelse { - private String folkeregisteridentifikator; - private String hendelsetype; - private String hendelsesdokument; - private String persondokument; - private String ajourholdstidspunkt; - - public PDLHendelse() { - } - - public PDLHendelse(String folkeregisteridentifikator, String hendelsetype, String hendelsesdokument, String persondokument, String ajourholdstidspunkt) { - this.folkeregisteridentifikator = folkeregisteridentifikator; - this.hendelsetype = hendelsetype; - this.hendelsesdokument = hendelsesdokument; - this.persondokument = persondokument; - this.ajourholdstidspunkt = ajourholdstidspunkt; - } - - public String getFolkeregisteridentifikator() { - return folkeregisteridentifikator; - } - - public void setFolkeregisteridentifikator(String folkeregisteridentifikator) { - this.folkeregisteridentifikator = folkeregisteridentifikator; - } - - public String getHendelsetype() { - return hendelsetype; - } - - public void setHendelsetype(String hendelsetype) { - this.hendelsetype = hendelsetype; - } - - public String getHendelsesdokument() { - return hendelsesdokument; - } - - public void setHendelsesdokument(String hendelsesdokument) { - this.hendelsesdokument = hendelsesdokument; - } - - public String getPersondokument() { - return persondokument; - } - - public void setPersondokument(String persondokument) { - this.persondokument = persondokument; - } - - public String getAjourholdstidspunkt() { - return ajourholdstidspunkt; - } - - public void setAjourholdstidspunkt(String ajourholdstidspunkt) { - this.ajourholdstidspunkt = ajourholdstidspunkt; - } -} diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index e2974df7d33..05190271ad0 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -2,12 +2,15 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; + import no.nav.person.pdl.leesah.Personhendelse; import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; + import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; + import java.util.List; @@ -17,21 +20,19 @@ public class DoedsfallListener { private static final String doedsfallTopic = "pdl.leesah-v1"; @Autowired - private final ArbeidsforholdService arbeidsforholdsService; + private final ArbeidsforholdService arbeidsforholdService; + private final String oensketHendelsestype = "DOEDSFALL_V1"; @KafkaListener(topics = doedsfallTopic) - public void getHendelser(List> records) { - for (ConsumerRecord record: records){ - - String aktoerId = record.key().split("\u001A")[1]; + public void getHendelser(List> hendelser) { + for (ConsumerRecord hendelse: hendelser){ - //Validerer om vi skal fortsette eller ignorere hendelsen - Boolean riktigHendelse = validerHendelse(record.value().get(4).toString()); + String aktoerId = hendelse.key().split("\u001A")[1]; + String hendelsestype = hendelse.value().get(4).toString(); - //Flyt for doedsfall-hendelser - if (riktigHendelse){ - log.info("DØDSFALL. Hendelse: {} {}", record.key(), record.value().toString()); - arbeidsforholdsService.arbeidsforholdService(aktoerId); + if (validerHendelse(hendelsestype)){ + log.info("DØDSFALL. Hendelse: {} {}", hendelse.key(), hendelse.value().toString()); + arbeidsforholdService.arbeidsforholdService(aktoerId); } } } @@ -42,7 +43,7 @@ public void getHendelser(List> records) { * @return true dersom det er dødsfall, false hvis ikke */ private Boolean validerHendelse(String personhendelse) { - return personhendelse.equals("DOEDSFALL_V1"); + return personhendelse.equals(oensketHendelsestype); } } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index 292711f7b3a..c443fde64ad 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -3,8 +3,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; + import no.nav.registre.testnorge.levendearbeidsforhold.consumers.AaregConsumer; import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; + import org.springframework.stereotype.Service; import java.time.LocalDate; @@ -16,36 +18,36 @@ public class ArbeidsforholdService { private final AaregConsumer aaregConsumer; + private final String sluttAarsaksKode = "arbeidstakerHarSagtOppSelv"; + private final String varslingsKode = "NAVEND"; + + public void arbeidsforholdService(String aktoerId) { + List arbeidsforholdListe = hentArbeidsforhold(aktoerId); + if (!arbeidsforholdListe.isEmpty()) { + arbeidsforholdListe.forEach( + this::endreArbeidsforhold + ); + } + } public List hentArbeidsforhold(String ident) { log.info("Henter arbeidsforhold for ident: {}", ident); return aaregConsumer.hentArbeidsforhold(ident); } - public void endreArbeidsforhold(Arbeidsforhold request){ - log.info("Endrer arbeidsforhold for ident: {}", request.getNavArbeidsforholdId()); - log.info(request.toString()); - request.getAnsettelsesperiode().getPeriode().setTom(LocalDate.now()); - request.getAnsettelsesperiode().setSluttaarsak("arbeidstakerHarSagtOppSelv"); - request.getAnsettelsesperiode().setVarslingskode("NAVEND"); - request.getArbeidsavtaler().forEach( + public void endreArbeidsforhold(Arbeidsforhold arbeidsforhold){ + log.info("Endrer arbeidsforhold for ident: {}", arbeidsforhold.getNavArbeidsforholdId()); + log.info(arbeidsforhold.toString()); + + arbeidsforhold.getAnsettelsesperiode().getPeriode().setTom(LocalDate.now()); + arbeidsforhold.getAnsettelsesperiode().setSluttaarsak(sluttAarsaksKode); + arbeidsforhold.getAnsettelsesperiode().setVarslingskode(varslingsKode); + arbeidsforhold.getArbeidsavtaler().forEach( arbeidsavtale -> { arbeidsavtale.setStillingsprosent(null); }); - log.info(request.toString()); - aaregConsumer.endreArbeidsforhold(request); + log.info(arbeidsforhold.toString()); + aaregConsumer.endreArbeidsforhold(arbeidsforhold); } - - public void arbeidsforholdService(String aktoerId) { - List arbeidsforholdListe = hentArbeidsforhold(aktoerId); - if (!arbeidsforholdListe.isEmpty()) { - arbeidsforholdListe.forEach( - this::endreArbeidsforhold - //arbeidsforhold -> log.info(String.valueOf(arbeidsforhold)) - ); - } - } - } -//Les i appen ArbeidsforholdService From 79805cca1f0c5229a4820e2be6a11ae88b4e350c Mon Sep 17 00:00:00 2001 From: Martineem Date: Thu, 4 Jul 2024 15:27:24 +0200 Subject: [PATCH 104/161] =?UTF-8?q?Legger=20til=20SupressWarning=20p=C3=A5?= =?UTF-8?q?=20SonarCloud?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../testnorge/levendearbeidsforhold/config/SecurityConfig.java | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java index bb57d582088..72420b5ac4a 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java @@ -16,6 +16,7 @@ public class SecurityConfig { @Bean + @SuppressWarnings("java:S4502") public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { httpSecurity.sessionManagement(sessionConfig -> sessionConfig.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) From 38b8c7d42902a4e7120148f8aed581fa3e8ba072 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 4 Jul 2024 16:09:16 +0200 Subject: [PATCH 105/161] Fjernet logging av suksess-scenarier. Logger kun for feilscenarier #deploy-levende-arbeidsforhold-service --- .../config/ApplicationConfig.java | 5 +-- .../config/KafkaConfig.java | 5 +-- .../consumers/AaregConsumer.java | 3 -- .../command/EndreArbeidsforholdCommand.java | 10 +---- .../command/HentArbeidsforholdCommand.java | 37 +++++++++---------- .../listener/DoedsfallListener.java | 1 - .../service/ArbeidsforholdService.java | 8 +--- 7 files changed, 21 insertions(+), 48 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java index 8c45c911192..80a0da22609 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java @@ -1,17 +1,14 @@ package no.nav.registre.testnorge.levendearbeidsforhold.config; +import no.nav.testnav.libs.servletcore.config.ApplicationCoreConfig; import no.nav.testnav.libs.standalone.servletsecurity.config.InsecureJwtServerToServerConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import no.nav.testnav.libs.servletcore.config.ApplicationCoreConfig; -import no.nav.testnav.libs.servletsecurity.config.SecureOAuth2ServerToServerConfiguration; - @Configuration @Import({ ApplicationCoreConfig.class, InsecureJwtServerToServerConfiguration.class - // SecureOAuth2ServerToServerConfiguration.class }) public class ApplicationConfig { diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java index 362a1a7457e..665304c55f6 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java @@ -31,11 +31,9 @@ public class KafkaConfig { private final String groupId; - //private final ShutdownService shutdownService; - public KafkaConfig(@Value("${spring.kafka.consumer.group-id}") String groupId) {//, ShutdownService shutdownService + public KafkaConfig(@Value("${spring.kafka.consumer.group-id}") String groupId) { this.groupId = groupId; - //this.shutdownService = shutdownService; } public ConsumerFactory consumerFactory() { @@ -84,7 +82,6 @@ public void consumerAdded(String id, Consumer consumer) { @Override public void consumerRemoved(String id, Consumer consumer) { log.warn("Fjerner consumer med id: {}. Restarter app...", id); - //shutdownService.initiateShutdown(0); } }); factory.setBatchListener(true); diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java index 7db3de8a6d6..9b3f46be9a2 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java @@ -37,9 +37,6 @@ public AaregConsumer( ObjectMapper objectMapper) { this.serverProperties = consumers.getTestnavAaregProxy(); - - log.info("ServerProperties: {}", serverProperties); - this.tokenExchange = tokenExchange; ExchangeStrategies jacksonStrategy = ExchangeStrategies diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java index 85fe44fa35f..b266a879642 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -1,8 +1,5 @@ package no.nav.registre.testnorge.levendearbeidsforhold.consumers.command; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Function; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -17,7 +14,6 @@ import java.time.Duration; import java.time.LocalDate; -import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.concurrent.Callable; @@ -49,11 +45,7 @@ public Mono call() { .filter(WebClientFilter::is5xxException)) .map(arbeidsforhold1 -> Arbeidsforhold.builder().build()); - request.subscribe(response -> { - log.info("Fikk respons. nav-ID: {}", response.getArbeidsforholdId()); - }, error -> { - log.error("Feil ved endring av arbeidsforhold", error); - }); + request.subscribe(response -> {}, error -> log.error("Feil ved endring av arbeidsforhold: {}", error.getMessage())); return request; } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java index 9507f572b4c..63cacc6f7b8 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -42,34 +42,31 @@ private static String getNavCallId() { @SneakyThrows @Override public List call(){ - //Dette er metoden som er krevet når man implementerer Callable + try { var arbeidsforhold = webClient - .get() - .uri(builder -> builder - .path("/{miljoe}/api/v1/arbeidstaker/arbeidsforhold") - .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") - .build(miljoe)) - .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .header(NAV_PERSON_IDENT, ident) - .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) - .header(NavHeaders.NAV_CALL_ID, getNavCallId()) - .retrieve() - .bodyToMono(Arbeidsforhold[].class) - .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) - .filter(WebClientFilter::is5xxException)) - .block(); + .get() + .uri(builder -> builder + .path("/{miljoe}/api/v1/arbeidstaker/arbeidsforhold") + .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") + .build(miljoe)) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .header(NAV_PERSON_IDENT, ident) + .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) + .header(NavHeaders.NAV_CALL_ID, getNavCallId()) + .retrieve() + .bodyToMono(Arbeidsforhold[].class) + .retryWhen(Retry + .backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .block(); - log.info("Hentet arbeidsforhold fra Aareg: " + Arrays.toString(arbeidsforhold)); - assert arbeidsforhold != null; return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); } catch (WebClientResponseException.NotFound e) { - log.warn("Fant ikke arbeidsforhold for ident {} i miljø {}", ident, miljoe); return Collections.emptyList(); } catch (WebClientResponseException e) { log.error( - "Klarer ikke å hente arbeidsforhold for ident: {}. Feilmelding: {}.", - ident, + "Klarer ikke å hente arbeidsforhold. Feilmelding: {}.", e.getResponseBodyAsString() ); throw e; diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 05190271ad0..16880be980b 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -31,7 +31,6 @@ public void getHendelser(List> hendelser) String hendelsestype = hendelse.value().get(4).toString(); if (validerHendelse(hendelsestype)){ - log.info("DØDSFALL. Hendelse: {} {}", hendelse.key(), hendelse.value().toString()); arbeidsforholdService.arbeidsforholdService(aktoerId); } } diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index c443fde64ad..b27ad629b9d 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -31,23 +31,17 @@ public void arbeidsforholdService(String aktoerId) { } public List hentArbeidsforhold(String ident) { - log.info("Henter arbeidsforhold for ident: {}", ident); return aaregConsumer.hentArbeidsforhold(ident); } public void endreArbeidsforhold(Arbeidsforhold arbeidsforhold){ - log.info("Endrer arbeidsforhold for ident: {}", arbeidsforhold.getNavArbeidsforholdId()); - log.info(arbeidsforhold.toString()); arbeidsforhold.getAnsettelsesperiode().getPeriode().setTom(LocalDate.now()); arbeidsforhold.getAnsettelsesperiode().setSluttaarsak(sluttAarsaksKode); arbeidsforhold.getAnsettelsesperiode().setVarslingskode(varslingsKode); arbeidsforhold.getArbeidsavtaler().forEach( - arbeidsavtale -> { - arbeidsavtale.setStillingsprosent(null); - }); + arbeidsavtale -> arbeidsavtale.setStillingsprosent(null)); - log.info(arbeidsforhold.toString()); aaregConsumer.endreArbeidsforhold(arbeidsforhold); } } From cbb0e67431f2ddc71085f4f3c2d66983236d7f78 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Fri, 5 Jul 2024 08:28:27 +0200 Subject: [PATCH 106/161] La til doxygen dokumentasjon for /listener mappen --- .../listener/DoedsfallListener.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index 16880be980b..ae2140629df 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -23,6 +23,11 @@ public class DoedsfallListener { private final ArbeidsforholdService arbeidsforholdService; private final String oensketHendelsestype = "DOEDSFALL_V1"; + /** + * Lytter til og konsumerer hendelser fra Kafka hendelsesstrømmen på et gitt topic. + * Behandler også alle hendelser av en gitt hendelsestype. + * @param hendelser - Alle konsumerte hendelser fra hendelsesstrømmen + */ @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> hendelser) { for (ConsumerRecord hendelse: hendelser){ @@ -37,9 +42,9 @@ public void getHendelser(List> hendelser) } /** - * Validerer om hendelsen er dødsfall + * Validerer om hendelsen er av ønsket hendelsestype * @param personhendelse - Hendelse/opplysningstype, f.eks: FOLKEREGISTERIDENTIFIKATOR_V1, NAVN_V1, SIVILSTAND_V1, etc. - * @return true dersom det er dødsfall, false hvis ikke + * @return true dersom det er av ønsket hendelsestype, false hvis ikke */ private Boolean validerHendelse(String personhendelse) { return personhendelse.equals(oensketHendelsestype); From 2399d2f439182ac063b41b0c56e727c39afd5319 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Fri, 5 Jul 2024 09:23:05 +0200 Subject: [PATCH 107/161] Skrev readme for /domain.v1 folderen --- .../testnorge/levendearbeidsforhold/domain/v1/README.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/README.md diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/README.md b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/README.md new file mode 100644 index 00000000000..3df8cc38724 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/README.md @@ -0,0 +1,6 @@ +# /Domain.v1 + +Denne mappen inneholder alle klassene for å hente ut og parse +dokumentene av skjermaet fra [GET](https://aareg-services-q2.intern.dev.nav.no/swagger-ui/index.html#/arbeidstaker/finnArbeidsforholdPrArbeidstaker_1) +og [PUT](https://aareg-vedlikehold-q2.dev.intern.nav.no/swagger-ui/index.html#/arbeidsforhold/endreArbeidsforhold) +endepunktene til AA-reg. Klassene er en eksakt kopi av [AA-reg sin modell](https://github.com/navikt/aareg-services/tree/main/src/main/java/no/nav/aareg/services/provider/rs/api/contract/arbeidsforhold/v1) From e0029225ffd58fb85a66b99800402587a73d20ee Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Fri, 5 Jul 2024 09:29:17 +0200 Subject: [PATCH 108/161] =?UTF-8?q?Deployer=20for=20=C3=A5=20se=20feilmeld?= =?UTF-8?q?inger=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../levendearbeidsforhold/listener/DoedsfallListener.java | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java index ae2140629df..baf68db02f5 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -13,7 +13,6 @@ import java.util.List; - @Slf4j @Component @RequiredArgsConstructor From 53373a2ecd769063ab76589c97ebbc839b8413d5 Mon Sep 17 00:00:00 2001 From: Martineem Date: Fri, 5 Jul 2024 09:55:01 +0200 Subject: [PATCH 109/161] Legger til sjekk om arbeidsforholdet allerede er avsluttet --- .../service/ArbeidsforholdService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java index b27ad629b9d..4822569213e 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -25,7 +25,11 @@ public void arbeidsforholdService(String aktoerId) { List arbeidsforholdListe = hentArbeidsforhold(aktoerId); if (!arbeidsforholdListe.isEmpty()) { arbeidsforholdListe.forEach( - this::endreArbeidsforhold + arbeidsforhold -> { + if (arbeidsforhold.getAnsettelsesperiode().getPeriode().getTom() == null){ + endreArbeidsforhold(arbeidsforhold); + } + } ); } } From e848bb97208315c0e57646c93b42d8280f728cf7 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Fri, 5 Jul 2024 10:04:11 +0200 Subject: [PATCH 110/161] Lagt til outbound.external.host: testnav-aareg-proxy.dev-fss-pub.nais.io i config,.yml --- apps/levende-arbeidsforhold-service/config.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/levende-arbeidsforhold-service/config.yml b/apps/levende-arbeidsforhold-service/config.yml index d15c1248921..2129fcfd3eb 100644 --- a/apps/levende-arbeidsforhold-service/config.yml +++ b/apps/levende-arbeidsforhold-service/config.yml @@ -16,6 +16,8 @@ spec: - application: testnav-oversikt-frontend cluster: dev-gcp outbound: + external: + - host: testnav-aareg-proxy.dev-fss-pub.nais.io rules: - application: testnav-levende-arbeidsforhold-service cluster: dev-gcp From 07d8748269b1a7dc63eb6aa5e2b3c8a7de6a8dcb Mon Sep 17 00:00:00 2001 From: stigus Date: Fri, 5 Jul 2024 10:19:19 +0200 Subject: [PATCH 111/161] =?UTF-8?q?Lagt=20p=C3=A5=20lenger=20maxLength=20a?= =?UTF-8?q?v=20stacktrace=20og=20pr=C3=B8ver=20mindre=20endringer=20for=20?= =?UTF-8?q?KafkaConfig=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/KafkaConfig.java | 2 +- .../src/main/resources/application-dev.yml | 2 -- .../src/main/resources/application.yml | 20 +++++++++---------- .../src/main/resources/logback-spring.xml | 2 +- 4 files changed, 12 insertions(+), 14 deletions(-) delete mode 100644 apps/levende-arbeidsforhold-service/src/main/resources/application-dev.yml diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java index 665304c55f6..c4f527561bb 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java @@ -32,7 +32,7 @@ public class KafkaConfig { private final String groupId; - public KafkaConfig(@Value("${spring.kafka.consumer.group-id}") String groupId) { + public KafkaConfig(@Value("${kafka.groupid}") String groupId) { this.groupId = groupId; } diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application-dev.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application-dev.yml deleted file mode 100644 index 7df314e0e54..00000000000 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application-dev.yml +++ /dev/null @@ -1,2 +0,0 @@ -kafka: - group-id: testnav-levende-arbeidsforhold-service diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 60ca83a3b5c..d7a384c35f7 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -1,5 +1,8 @@ AAD_ISSUER_URI: https://login.microsoftonline.com/62366534-1ec3-4962-8869-9b5535279d0b +#Mulig denne må følge oppsett fra testnav.libs.kafkaconfig.config.KafkaProperties +kafka.groupid: testnav-levende-arbeidsforhold-service + spring: main: banner-mode: off @@ -8,19 +11,16 @@ spring: version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle description: App for å hente PDL personer. security: - oauth2: - client: - resourceserver: - aad: - issuer-uri: ${AAD_ISSUER_URI}/v2.0 - jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys - accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} + oauth2: + client: + resourceserver: + aad: + issuer-uri: ${AAD_ISSUER_URI}/v2.0 + jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys + accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} cloud: vault: enabled: false - kafka: - consumer: - group-id: testnav-levende-arbeidsforhold-service springdoc: swagger-ui: disable-swagger-default-url: true diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/logback-spring.xml b/apps/levende-arbeidsforhold-service/src/main/resources/logback-spring.xml index 9583ff2d427..1b63cba0d08 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/logback-spring.xml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/logback-spring.xml @@ -6,7 +6,7 @@ true 256 - 10280 + 100280 20 ^sun\.reflect\..*\.invoke ^net\.sf\.cglib\.proxy\.MethodProxy\.invoke From fcb78907ba26c8c37f62c4ddf3d5565e9e051eaf Mon Sep 17 00:00:00 2001 From: stigus Date: Fri, 5 Jul 2024 10:19:51 +0200 Subject: [PATCH 112/161] =?UTF-8?q?Lagt=20p=C3=A5=20lenger=20maxLength=20a?= =?UTF-8?q?v=20stacktrace=20og=20pr=C3=B8ver=20mindre=20endringer=20for=20?= =?UTF-8?q?KafkaConfig=20#deploy-levende-arbeidsforhold-service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LevendeArbeidsforholdServiceApplicationStarter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java index ee0127a953c..4c1bc1f8bd4 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java @@ -10,4 +10,4 @@ public class LevendeArbeidsforholdServiceApplicationStarter { public static void main(String[] args) { SpringApplication.run(LevendeArbeidsforholdServiceApplicationStarter.class, args); } -} \ No newline at end of file +} From 05647ef9464408f840da01476c1a7a5cfab29a7e Mon Sep 17 00:00:00 2001 From: stigus Date: Fri, 5 Jul 2024 10:29:48 +0200 Subject: [PATCH 113/161] Whoops #deploy-levende-arbeidsforhold-service --- .../src/main/resources/application.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index d7a384c35f7..ca4298165f3 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -1,9 +1,13 @@ AAD_ISSUER_URI: https://login.microsoftonline.com/62366534-1ec3-4962-8869-9b5535279d0b #Mulig denne må følge oppsett fra testnav.libs.kafkaconfig.config.KafkaProperties -kafka.groupid: testnav-levende-arbeidsforhold-service +kafka: + groupid: testnav-levende-arbeidsforhold-service spring: + kafka: + consumer: + group-id: ${kafka.groupid} main: banner-mode: off application: From 70afa58216d09e1f697e57947d94567c715a72d8 Mon Sep 17 00:00:00 2001 From: stigus Date: Fri, 5 Jul 2024 10:37:56 +0200 Subject: [PATCH 114/161] Revert "Whoops" This reverts commit 05647ef9464408f840da01476c1a7a5cfab29a7e. --- .../src/main/resources/application.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index ca4298165f3..d7a384c35f7 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -1,13 +1,9 @@ AAD_ISSUER_URI: https://login.microsoftonline.com/62366534-1ec3-4962-8869-9b5535279d0b #Mulig denne må følge oppsett fra testnav.libs.kafkaconfig.config.KafkaProperties -kafka: - groupid: testnav-levende-arbeidsforhold-service +kafka.groupid: testnav-levende-arbeidsforhold-service spring: - kafka: - consumer: - group-id: ${kafka.groupid} main: banner-mode: off application: From ed6d8a5644ab8a92366be188d73b6cb8e63a76bd Mon Sep 17 00:00:00 2001 From: stigus Date: Fri, 5 Jul 2024 10:38:02 +0200 Subject: [PATCH 115/161] =?UTF-8?q?Revert=20"Lagt=20p=C3=A5=20lenger=20max?= =?UTF-8?q?Length=20av=20stacktrace=20og=20pr=C3=B8ver=20mindre=20endringe?= =?UTF-8?q?r=20for=20KafkaConfig"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit fcb78907ba26c8c37f62c4ddf3d5565e9e051eaf. --- .../LevendeArbeidsforholdServiceApplicationStarter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java index 4c1bc1f8bd4..ee0127a953c 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java @@ -10,4 +10,4 @@ public class LevendeArbeidsforholdServiceApplicationStarter { public static void main(String[] args) { SpringApplication.run(LevendeArbeidsforholdServiceApplicationStarter.class, args); } -} +} \ No newline at end of file From ac5c27dccba45f862eeb1c2cc3d93eb96bd083ad Mon Sep 17 00:00:00 2001 From: stigus Date: Fri, 5 Jul 2024 10:38:29 +0200 Subject: [PATCH 116/161] =?UTF-8?q?Revert=20"Lagt=20p=C3=A5=20lenger=20max?= =?UTF-8?q?Length=20av=20stacktrace=20og=20pr=C3=B8ver=20mindre=20endringe?= =?UTF-8?q?r=20for=20KafkaConfig"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 07d8748269b1a7dc63eb6aa5e2b3c8a7de6a8dcb. --- .../config/KafkaConfig.java | 2 +- .../src/main/resources/application-dev.yml | 2 ++ .../src/main/resources/application.yml | 20 +++++++++---------- .../src/main/resources/logback-spring.xml | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) create mode 100644 apps/levende-arbeidsforhold-service/src/main/resources/application-dev.yml diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java index c4f527561bb..665304c55f6 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java @@ -32,7 +32,7 @@ public class KafkaConfig { private final String groupId; - public KafkaConfig(@Value("${kafka.groupid}") String groupId) { + public KafkaConfig(@Value("${spring.kafka.consumer.group-id}") String groupId) { this.groupId = groupId; } diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application-dev.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application-dev.yml new file mode 100644 index 00000000000..7df314e0e54 --- /dev/null +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application-dev.yml @@ -0,0 +1,2 @@ +kafka: + group-id: testnav-levende-arbeidsforhold-service diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index d7a384c35f7..60ca83a3b5c 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -1,8 +1,5 @@ AAD_ISSUER_URI: https://login.microsoftonline.com/62366534-1ec3-4962-8869-9b5535279d0b -#Mulig denne må følge oppsett fra testnav.libs.kafkaconfig.config.KafkaProperties -kafka.groupid: testnav-levende-arbeidsforhold-service - spring: main: banner-mode: off @@ -11,16 +8,19 @@ spring: version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle description: App for å hente PDL personer. security: - oauth2: - client: - resourceserver: - aad: - issuer-uri: ${AAD_ISSUER_URI}/v2.0 - jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys - accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} + oauth2: + client: + resourceserver: + aad: + issuer-uri: ${AAD_ISSUER_URI}/v2.0 + jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys + accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} cloud: vault: enabled: false + kafka: + consumer: + group-id: testnav-levende-arbeidsforhold-service springdoc: swagger-ui: disable-swagger-default-url: true diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/logback-spring.xml b/apps/levende-arbeidsforhold-service/src/main/resources/logback-spring.xml index 1b63cba0d08..9583ff2d427 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/logback-spring.xml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/logback-spring.xml @@ -6,7 +6,7 @@ true 256 - 100280 + 10280 20 ^sun\.reflect\..*\.invoke ^net\.sf\.cglib\.proxy\.MethodProxy\.invoke From 0f0ecc1c625d62172761116967563cbff5056bdf Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Fri, 5 Jul 2024 10:52:36 +0200 Subject: [PATCH 117/161] Lagt til kafka.groupid i config.yml #deploy-levende-arbeidsforhold-service --- .../src/main/resources/application.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 60ca83a3b5c..617a1fc99d2 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -52,4 +52,6 @@ consumers: name: testnav-aareg-proxy namespace: dolly url: https://testnav-aareg-proxy.dev-fss-pub.nais.io - cluster: dev-fss \ No newline at end of file + cluster: dev-fss +kafka: + groupid: testnav-levende-arbeidsforhold-service \ No newline at end of file From 19caece475cb418a911f8b29fd092478c542cea2 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Fri, 5 Jul 2024 11:36:42 +0200 Subject: [PATCH 118/161] lagt til pool i application.yml #deploy-levende-arbeidsforhold-service --- .../src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 617a1fc99d2..39aca3c539b 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -20,6 +20,8 @@ spring: enabled: false kafka: consumer: + stream: true + pool: nav-dev group-id: testnav-levende-arbeidsforhold-service springdoc: swagger-ui: @@ -53,5 +55,3 @@ consumers: namespace: dolly url: https://testnav-aareg-proxy.dev-fss-pub.nais.io cluster: dev-fss -kafka: - groupid: testnav-levende-arbeidsforhold-service \ No newline at end of file From 61611c68b7fb18927ccce9a520a2970533718104 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Fri, 5 Jul 2024 11:42:26 +0200 Subject: [PATCH 119/161] Fjernet det jeg gjorde #deploy-levende-arbeidsforhold-service --- .../src/main/resources/application.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml index 39aca3c539b..381f0bb0fee 100644 --- a/apps/levende-arbeidsforhold-service/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-service/src/main/resources/application.yml @@ -20,8 +20,6 @@ spring: enabled: false kafka: consumer: - stream: true - pool: nav-dev group-id: testnav-levende-arbeidsforhold-service springdoc: swagger-ui: From 12310985412b59e8924ae9277958fb1eba76b14e Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Fri, 5 Jul 2024 15:25:51 +0200 Subject: [PATCH 120/161] Deployer hoved-branch #deploy-levende-arbeidsforhold-service --- .../LevendeArbeidsforholdServiceApplicationStarter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java index ee0127a953c..4c1bc1f8bd4 100644 --- a/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java +++ b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java @@ -10,4 +10,4 @@ public class LevendeArbeidsforholdServiceApplicationStarter { public static void main(String[] args) { SpringApplication.run(LevendeArbeidsforholdServiceApplicationStarter.class, args); } -} \ No newline at end of file +} From dfffc20a7558af1a73424193a7f83de0494e7512 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 8 Jul 2024 11:56:16 +0200 Subject: [PATCH 121/161] Laget en ny app levende-arbeidsforhold-ansettelse --- .../Dockerfile | 8 + .../README.md | 26 ++ .../build.gradle | 94 +++++++ .../config.yml | 54 ++++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + .../levende-arbeidsforhold-ansettelse/gradlew | 234 ++++++++++++++++++ .../gradlew.bat | 89 +++++++ .../gradlewUpdate.sh | 3 + .../settings.gradle | 24 ++ ...beidsforholdServiceApplicationStarter.java | 13 + .../config/ApplicationConfig.java | 15 ++ .../config/Consumers.java | 29 +++ .../config/DevConfig.java | 36 +++ .../config/KafkaConfig.java | 92 +++++++ .../config/OpenApiConfig.java | 55 ++++ .../config/SecurityConfig.java | 39 +++ .../consumers/AaregConsumer.java | 77 ++++++ .../command/EndreArbeidsforholdCommand.java | 54 ++++ .../command/HentArbeidsforholdCommand.java | 75 ++++++ .../domain/v1/Ansettelsesperiode.java | 46 ++++ .../domain/v1/AntallTimerForTimeloennet.java | 58 +++++ .../domain/v1/Arbeidsavtale.java | 107 ++++++++ .../domain/v1/Arbeidsavtaletype.java | 9 + .../domain/v1/Arbeidsforhold.java | 125 ++++++++++ .../domain/v1/Arbeidsforholdoversikt.java | 111 +++++++++ .../ArbeidsgiverArbeidsforholdoversikter.java | 46 ++++ .../domain/v1/Arbeidsgiveroversikt.java | 36 +++ .../domain/v1/Bruksperiode.java | 73 ++++++ ...orenkletOppgjoersordningArbeidsavtale.java | 38 +++ .../domain/v1/FrilanserArbeidsavtale.java | 38 +++ .../domain/v1/Gyldighetsperiode.java | 19 ++ .../domain/v1/MaritimArbeidsavtale.java | 54 ++++ .../v1/OpplysningspliktigArbeidsgiver.java | 24 ++ .../OpplysningspliktigArbeidsgiverType.java | 6 + .../domain/v1/OrdinaerArbeidsavtale.java | 38 +++ .../domain/v1/Organisasjon.java | 36 +++ .../domain/v1/Periode.java | 73 ++++++ .../domain/v1/PermisjonPermittering.java | 46 ++++ .../domain/v1/Person.java | 40 +++ .../domain/v1/Persontype.java | 6 + .../levendearbeidsforhold/domain/v1/README.md | 6 + .../domain/v1/Sporingsinformasjon.java | 91 +++++++ .../domain/v1/Utenlandsopphold.java | 60 +++++ .../domain/v1/Varsel.java | 33 +++ .../domain/v1/Varselentitet.java | 11 + .../domain/v1/util/JavaTimeUtil.java | 38 +++ .../listener/DoedsfallListener.java | 52 ++++ .../service/ArbeidsforholdService.java | 51 ++++ .../utility/CallIdUtil.java | 17 ++ .../src/main/resources/application-dev.yml | 2 + .../src/main/resources/application.yml | 55 ++++ .../src/main/resources/logback-spring.xml | 40 +++ .../ApplicationContextTest.java | 20 ++ .../resources/application-test.properties | 1 + 55 files changed, 2528 insertions(+) create mode 100644 apps/levende-arbeidsforhold-ansettelse/Dockerfile create mode 100644 apps/levende-arbeidsforhold-ansettelse/README.md create mode 100644 apps/levende-arbeidsforhold-ansettelse/build.gradle create mode 100644 apps/levende-arbeidsforhold-ansettelse/config.yml create mode 100644 apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.jar create mode 100644 apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.properties create mode 100755 apps/levende-arbeidsforhold-ansettelse/gradlew create mode 100644 apps/levende-arbeidsforhold-ansettelse/gradlew.bat create mode 100755 apps/levende-arbeidsforhold-ansettelse/gradlewUpdate.sh create mode 100644 apps/levende-arbeidsforhold-ansettelse/settings.gradle create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/AntallTimerForTimeloennet.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtaletype.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforholdoversikt.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsgiveroversikt.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Bruksperiode.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/FrilanserArbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Gyldighetsperiode.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/MaritimArbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiver.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiverType.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OrdinaerArbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Organisasjon.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Periode.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/PermisjonPermittering.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Person.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Persontype.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/README.md create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Sporingsinformasjon.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Utenlandsopphold.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varsel.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varselentitet.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/util/JavaTimeUtil.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/utility/CallIdUtil.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/application-dev.yml create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/test/resources/application-test.properties diff --git a/apps/levende-arbeidsforhold-ansettelse/Dockerfile b/apps/levende-arbeidsforhold-ansettelse/Dockerfile new file mode 100644 index 00000000000..4a36f93546f --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/Dockerfile @@ -0,0 +1,8 @@ +FROM ghcr.io/navikt/baseimages/temurin:21 +LABEL maintainer="Team Dolly" + +ENV JAVA_OPTS="-Dspring.profiles.active=prod" + +ADD /build/libs/app.jar /app/app.jar + +EXPOSE 8080 diff --git a/apps/levende-arbeidsforhold-ansettelse/README.md b/apps/levende-arbeidsforhold-ansettelse/README.md new file mode 100644 index 00000000000..8f4c27a0910 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/README.md @@ -0,0 +1,26 @@ +# Levende arbeidsforhold-service + +Fyll inn: + +## Swagger + +Swagger finnes under [/swagger](https://levende-arbeidsforhold-service.intern.dev.nav.no/swagger) -endepunktet til +applikasjonen. + +## Lokal kjøring + +Ha naisdevice kjørende og kjør GenererNavnServiceApplicationStarter med følgende argumenter: + +``` +-Dspring.cloud.vault.token=[vault-token] +-Dspring.profiles.active=dev +``` + +### Utviklerimage + +I utviklerimage brukes ikke naisdevice og du må legge til følgende ekstra argumenter: + +``` +-Djavax.net.ssl.trustStore=[path til lokal truststore] +-Djavax.net.ssl.trustStorePassword=[passord til lokal truststore] +``` diff --git a/apps/levende-arbeidsforhold-ansettelse/build.gradle b/apps/levende-arbeidsforhold-ansettelse/build.gradle new file mode 100644 index 00000000000..bd66b0b1376 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/build.gradle @@ -0,0 +1,94 @@ +plugins { + id 'java' + id "org.sonarqube" version "5.0.0.4638" + id 'org.springframework.boot' version "3.2.6" + id 'io.spring.dependency-management' version "1.1.5" + id "jacoco" +} + +test { + useJUnitPlatform() +} + +sonarqube { + properties { + property "sonar.dynamicAnalysis", "reuseReports" + property "sonar.host.url", "https://sonarcloud.io" + property "sonar.java.coveragePlugin", "jacoco" + property "sonar.language", "java" + property "sonar.token", System.getenv("SONAR_TOKEN") + property "sonar.organization", "navikt" + property "sonar.project.monorepo.enabled", true + property "sonar.projectKey", "testnav-levende-arbeidsforhold-service" + property "sonar.projectName", "testnav-levende-arbeidsforhold-service" + property "sonar.sourceEncoding", "UTF-8" + } +} +bootJar { + archiveFileName = "app.jar" +} + +dependencyManagement { + applyMavenExclusions = false + imports { + mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2023.0.1' + } +} + +repositories { + mavenCentral() + mavenLocal() + maven { + url = uri('https://packages.confluent.io/maven/') + } +} + +dependencies { + implementation "no.nav.testnav.libs:kafka-config" + implementation 'no.nav.testnav.libs:security-core' + implementation 'no.nav.testnav.libs:reactive-core' + implementation 'no.nav.testnav.libs:servlet-core' + implementation 'no.nav.testnav.libs:commands' + implementation 'no.nav.testnav.libs:data-transfer-objects' + implementation 'no.nav.testnav.libs:servlet-security' + + implementation 'org.springframework.boot:spring-boot-starter-webflux' + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' + implementation 'org.springframework.boot:spring-boot-starter-security' + + implementation 'org.springframework.cloud:spring-cloud-starter-vault-config' + implementation 'org.springframework.boot:spring-boot-starter-actuator' + + implementation 'io.micrometer:micrometer-registry-prometheus' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' + implementation 'io.swagger.core.v3:swagger-annotations-jakarta:2.2.21' + + implementation 'net.logstash.logback:logstash-logback-encoder:7.4' + implementation 'org.hibernate.validator:hibernate-validator' + + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'org.springframework.cloud:spring-cloud-contract-wiremock' + + implementation 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' + testAnnotationProcessor 'org.projectlombok:lombok' + + implementation 'no.nav.testnav.libs:kafka-config' + implementation 'org.apache.kafka:kafka-clients:3.7.0' + implementation 'io.confluent:kafka-avro-serializer:7.6.0' + implementation 'org.springframework.kafka:spring-kafka' + + implementation 'no.nav.testnav.libs:avro-schema' + implementation 'no.nav.testnav.libs:commands' + implementation 'no.nav.testnav.libs:data-transfer-objects' + implementation 'no.nav.testnav.libs:kafka-config' + implementation 'no.nav.testnav.libs:security-core' + implementation 'no.nav.testnav.libs:servlet-insecure-security' + implementation 'no.nav.testnav.libs:servlet-core' +} +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/config.yml b/apps/levende-arbeidsforhold-ansettelse/config.yml new file mode 100644 index 00000000000..2129fcfd3eb --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/config.yml @@ -0,0 +1,54 @@ +apiVersion: "nais.io/v1alpha1" +kind: "Application" +metadata: + name: testnav-levende-arbeidsforhold-service + namespace: dolly + labels: + team: dolly +spec: + image: "{{image}}" + port: 8080 + accessPolicy: + inbound: + rules: + - application: team-dolly-lokal-app + cluster: dev-gcp + - application: testnav-oversikt-frontend + cluster: dev-gcp + outbound: + external: + - host: testnav-aareg-proxy.dev-fss-pub.nais.io + rules: + - application: testnav-levende-arbeidsforhold-service + cluster: dev-gcp + azure: + application: + allowAllUsers: true + enabled: true + tenant: nav.no + liveness: + path: /internal/isAlive + initialDelay: 4 + periodSeconds: 5 + failureThreshold: 500 + readiness: + path: /internal/isReady + initialDelay: 4 + periodSeconds: 5 + failureThreshold: 500 + prometheus: + enabled: true + path: /internal/metrics + replicas: + min: 1 + max: 1 + resources: + requests: + cpu: 200m + memory: 1024Mi + limits: + memory: 2048Mi + kafka: + pool: nav-dev + ingresses: + - "https://testnav-levende-arbeidsforhold-service.intern.dev.nav.no" diff --git a/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.jar b/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.properties b/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000000..48c0a02ca41 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/apps/levende-arbeidsforhold-ansettelse/gradlew b/apps/levende-arbeidsforhold-ansettelse/gradlew new file mode 100755 index 00000000000..3da45c161b0 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright ? 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions ?$var?, ?${var}?, ?${var:-default}?, ?${var+SET}?, +# ?${var#prefix}?, ?${var%suffix}?, and ?$( cmd )?; +# * compound commands having a testable exit status, especially ?case?; +# * various built-in commands including ?command?, ?set?, and ?ulimit?. +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/apps/levende-arbeidsforhold-ansettelse/gradlew.bat b/apps/levende-arbeidsforhold-ansettelse/gradlew.bat new file mode 100644 index 00000000000..107acd32c4e --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/apps/levende-arbeidsforhold-ansettelse/gradlewUpdate.sh b/apps/levende-arbeidsforhold-ansettelse/gradlewUpdate.sh new file mode 100755 index 00000000000..e5ee6361152 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/gradlewUpdate.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +gradle wrapper \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/settings.gradle b/apps/levende-arbeidsforhold-ansettelse/settings.gradle new file mode 100644 index 00000000000..e7fe9f7600c --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/settings.gradle @@ -0,0 +1,24 @@ +plugins { + id "com.gradle.develocity" version "3.17.4" +} + +rootProject.name = 'testnav-levende-arbeidsforhold-service' + +includeBuild "../../libs/kafka-config" +includeBuild "../../libs/avro-schema" +includeBuild '../../libs/security-core' +includeBuild '../../libs/servlet-core' +includeBuild '../../libs/reactive-core' +includeBuild '../../libs/commands' +includeBuild '../../libs/data-transfer-objects' +includeBuild '../../libs/servlet-security' +includeBuild '../../libs/servlet-insecure-security' +includeBuild '../../libs/testing' +includeBuild '../../.github/workflows' + +develocity { + buildScan { + termsOfUseUrl = "https://gradle.com/terms-of-service" + termsOfUseAgree = "yes" + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java new file mode 100644 index 00000000000..4c1bc1f8bd4 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java @@ -0,0 +1,13 @@ +package no.nav.registre.testnorge.levendearbeidsforhold; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + + +@SpringBootApplication +public class LevendeArbeidsforholdServiceApplicationStarter { + + public static void main(String[] args) { + SpringApplication.run(LevendeArbeidsforholdServiceApplicationStarter.class, args); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java new file mode 100644 index 00000000000..80a0da22609 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java @@ -0,0 +1,15 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.config; + +import no.nav.testnav.libs.servletcore.config.ApplicationCoreConfig; +import no.nav.testnav.libs.standalone.servletsecurity.config.InsecureJwtServerToServerConfiguration; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@Import({ + ApplicationCoreConfig.class, + InsecureJwtServerToServerConfiguration.class +}) +public class ApplicationConfig { + +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java new file mode 100644 index 00000000000..c5654aff14d --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java @@ -0,0 +1,29 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.config; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import static lombok.AccessLevel.PACKAGE; + +/** + * Samler alle placeholders for ulike {@code consumers.*}-konfigurasjon her, dvs. subklasser av {@code ServerProperties}. + *

+ * Husk at Spring Boot bruker
relaxed binding + * mellom configuration properties og field names. + * + * @see ServerProperties + */ +@Configuration +@ConfigurationProperties(prefix = "consumers") +@NoArgsConstructor(access = PACKAGE) +@Getter +@Setter(PACKAGE) +public class Consumers { + + private ServerProperties testnavAaregProxy; + +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java new file mode 100644 index 00000000000..a5b2cad3c88 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java @@ -0,0 +1,36 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.vault.annotation.VaultPropertySource; +import org.springframework.vault.authentication.ClientAuthentication; +import org.springframework.vault.authentication.TokenAuthentication; +import org.springframework.vault.client.VaultEndpoint; +import org.springframework.vault.config.AbstractVaultConfiguration; + +import static io.micrometer.common.util.StringUtils.isBlank; + +@Configuration +@Profile("dev") +@VaultPropertySource(value = "secret/dolly/lokal", ignoreSecretNotFound = false) +public class DevConfig extends AbstractVaultConfiguration { + + private static final String VAULT_TOKEN = "spring.cloud.vault.token"; + + @Override + public VaultEndpoint vaultEndpoint() { + return VaultEndpoint.create("vault.adeo.no", 443); + } + + @Override + public ClientAuthentication clientAuthentication() { + if (System.getenv().containsKey("VAULT_TOKEN")) { + System.setProperty(VAULT_TOKEN, System.getenv("VAULT_TOKEN")); + } + var token = System.getProperty(VAULT_TOKEN); + if (isBlank(token)) { + throw new IllegalArgumentException("Påkrevet property 'spring.cloud.vault.token' er ikke satt."); + } + return new TokenAuthentication(System.getProperty(VAULT_TOKEN)); + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java new file mode 100644 index 00000000000..665304c55f6 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java @@ -0,0 +1,92 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.config; + + +import io.confluent.kafka.serializers.AbstractKafkaSchemaSerDeConfig; +import io.confluent.kafka.serializers.KafkaAvroDeserializer; +import io.confluent.kafka.serializers.KafkaAvroDeserializerConfig; +import lombok.extern.slf4j.Slf4j; +import org.apache.kafka.clients.CommonClientConfigs; +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.common.config.SslConfigs; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.kafka.annotation.EnableKafka; +import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; +import org.springframework.kafka.core.ConsumerFactory; +import org.springframework.kafka.core.DefaultKafkaConsumerFactory; +import org.springframework.kafka.listener.CommonLoggingErrorHandler; + +import java.net.InetSocketAddress; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@EnableKafka +@Configuration +@Profile({"dev", "prod"}) +public class KafkaConfig { + + private final String groupId; + + public KafkaConfig(@Value("${spring.kafka.consumer.group-id}") String groupId) { + this.groupId = groupId; + } + + public ConsumerFactory consumerFactory() { + + String randomSuffixGroupID = String.valueOf((int)(Math.random() * 1000)); + + InetSocketAddress inetSocketAddress = new InetSocketAddress(0); + Map props = new HashMap<>(); + props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, System.getenv("KAFKA_BROKERS")); + props.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, System.getenv("KAFKA_KEYSTORE_PATH")); + props.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, System.getenv("KAFKA_CREDSTORE_PASSWORD")); + props.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, System.getenv("KAFKA_TRUSTSTORE_PATH")); + props.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, System.getenv("KAFKA_CREDSTORE_PASSWORD")); + props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SSL"); + props.put(KafkaAvroDeserializerConfig.SPECIFIC_AVRO_READER_CONFIG, true); + + props.put(AbstractKafkaSchemaSerDeConfig.BASIC_AUTH_CREDENTIALS_SOURCE, "USER_INFO"); + var username = System.getenv("KAFKA_SCHEMA_REGISTRY_USER"); + var password = System.getenv("KAFKA_SCHEMA_REGISTRY_PASSWORD"); + + props.put(AbstractKafkaSchemaSerDeConfig.USER_INFO_CONFIG, username + ":" + password); + props.put(AbstractKafkaSchemaSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, System.getenv("KAFKA_SCHEMA_REGISTRY")); + + props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId + randomSuffixGroupID); + props.put(ConsumerConfig.CLIENT_ID_CONFIG, groupId + inetSocketAddress.getHostString()); + props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, true); + props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest"); + props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); + props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 1000 * 60 * 10); + props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class); + + return new DefaultKafkaConsumerFactory<>(props); + } + + @Bean + public ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory() { + + ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory<>(); + var consumerFactory = consumerFactory(); + consumerFactory.addListener(new ConsumerFactory.Listener<>() { + @Override + public void consumerAdded(String id, Consumer consumer) { + log.info("Legger til consumer med id: {}", id); + } + + @Override + public void consumerRemoved(String id, Consumer consumer) { + log.warn("Fjerner consumer med id: {}. Restarter app...", id); + } + }); + factory.setBatchListener(true); + factory.setConsumerFactory(consumerFactory); + factory.setCommonErrorHandler(new CommonLoggingErrorHandler()); + return factory; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java new file mode 100644 index 00000000000..d2dc2940c31 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java @@ -0,0 +1,55 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.config; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Contact; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.util.Arrays; + +import no.nav.testnav.libs.servletcore.config.ApplicationProperties; + +@Configuration +public class OpenApiConfig implements WebMvcConfigurer { + + @Bean + public OpenAPI openApi(ApplicationProperties applicationProperties) { + return new OpenAPI() + .components(new Components().addSecuritySchemes("bearer-jwt", new SecurityScheme() + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("JWT") + .in(SecurityScheme.In.HEADER) + .name("Authorization") + )) + .addSecurityItem( + new SecurityRequirement().addList("bearer-jwt", Arrays.asList("read", "write"))) + .info(new Info() + .title(applicationProperties.getName()) + .version(applicationProperties.getVersion()) + .description(applicationProperties.getDescription()) + .termsOfService("https://nav.no") + .contact(new Contact() + .url("https://nav-it.slack.com/archives/CA3P9NGA2") + .email("dolly@nav.no") + .name("Team Dolly") + ) + .license(new License() + .name("MIT License") + .url("https://opensource.org/licenses/MIT") + ) + ); + } + + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/swagger").setViewName("redirect:/swagger-ui.html"); + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java new file mode 100644 index 00000000000..72420b5ac4a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java @@ -0,0 +1,39 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.security.config.Customizer; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.web.SecurityFilterChain; + +@EnableWebSecurity +@Configuration +@Profile({ "prod", "dev" }) +public class SecurityConfig { + + @Bean + @SuppressWarnings("java:S4502") + public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { + + httpSecurity.sessionManagement(sessionConfig -> sessionConfig.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) + .csrf(AbstractHttpConfigurer::disable) + .authorizeHttpRequests(authorizeConfig -> authorizeConfig.requestMatchers( + "/internal/**", + "/webjars/**", + "/swagger-resources/**", + "/v3/api-docs/**", + "/swagger-ui/**", + "/swagger", + "/error", + "/swagger-ui.html" + ).permitAll().requestMatchers("/api/**").fullyAuthenticated()) + .oauth2ResourceServer(oauth2RSConfig -> oauth2RSConfig.jwt(Customizer.withDefaults())); + + return httpSecurity.build(); + } +} + diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java new file mode 100644 index 00000000000..9b3f46be9a2 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java @@ -0,0 +1,77 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.consumers; + +import lombok.extern.slf4j.Slf4j; + +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.EndreArbeidsforholdCommand; +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; +import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; + +import org.springframework.http.MediaType; +import org.springframework.http.codec.json.Jackson2JsonDecoder; +import org.springframework.http.codec.json.Jackson2JsonEncoder; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.ExchangeStrategies; +import org.springframework.web.reactive.function.client.WebClient; + +import java.util.ArrayList; +import java.util.List; + +import static java.util.Objects.nonNull; + +import com.fasterxml.jackson.databind.ObjectMapper; + +@Slf4j +@Component +public class AaregConsumer { + + private final WebClient webClient; + private final ServerProperties serverProperties; + private final TokenExchange tokenExchange; + + public AaregConsumer( + Consumers consumers, + TokenExchange tokenExchange, + ObjectMapper objectMapper) { + + this.serverProperties = consumers.getTestnavAaregProxy(); + this.tokenExchange = tokenExchange; + + ExchangeStrategies jacksonStrategy = ExchangeStrategies + .builder() + .codecs( + config -> { + config + .defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + config + .defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + }) + .build(); + + this.webClient = WebClient + .builder() + .exchangeStrategies(jacksonStrategy) + .baseUrl(serverProperties.getUrl()) + .build(); + } + + public List hentArbeidsforhold(String ident) { + var token = tokenExchange.exchange(serverProperties).block(); + if (nonNull(token)) { + return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); + } + return new ArrayList<>(); + } + + public void endreArbeidsforhold(Arbeidsforhold requests) { + var token = tokenExchange.exchange(serverProperties).block(); + if (nonNull(token)) { + new EndreArbeidsforholdCommand(webClient, requests, token.getTokenValue()).call(); + } + } +} + diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java new file mode 100644 index 00000000000..b266a879642 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java @@ -0,0 +1,54 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.consumers.command; + +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; +import no.nav.testnav.libs.commands.utils.WebClientFilter; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.web.reactive.function.BodyInserters; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; +import reactor.util.retry.Retry; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.concurrent.Callable; + +@Slf4j +@RequiredArgsConstructor +public class EndreArbeidsforholdCommand implements Callable> { + private final WebClient webClient; + private final Arbeidsforhold requests; + private final String token; + private final String miljoe = "q2"; + private final String navArbeidsforholdKilde = "Dolly-doedsfall-hendelse" ; + + @SneakyThrows + @Override + public Mono call() { + + Mono request = webClient + .put() + .uri(builder -> builder.path("/{miljoe}/api/v1/arbeidsforhold/{navArbeidsforholdId}") + .build(miljoe, requests.getNavArbeidsforholdId())) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) + .header("Nav-Arbeidsforhold-Periode", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"))) + .body(BodyInserters.fromValue(requests)) + .retrieve() + .bodyToMono(Arbeidsforhold.class) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .map(arbeidsforhold1 -> Arbeidsforhold.builder().build()); + + request.subscribe(response -> {}, error -> log.error("Feil ved endring av arbeidsforhold: {}", error.getMessage())); + + return request; + } +} + + diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java new file mode 100644 index 00000000000..63cacc6f7b8 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java @@ -0,0 +1,75 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.consumers.command; + +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; + +import no.nav.testnav.libs.commands.utils.WebClientFilter; +import no.nav.testnav.libs.servletcore.headers.NavHeaders; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; + +import org.springframework.http.HttpHeaders; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import reactor.util.retry.Retry; + +import java.time.Duration; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.stream.Collectors; + +import static java.lang.String.format; + + +@Slf4j +@RequiredArgsConstructor +public class HentArbeidsforholdCommand implements Callable> { + private final WebClient webClient; + private final String token; + private final String ident; + private final String miljoe = "q2"; + private static final String NAV_PERSON_IDENT = "Nav-Personident"; + private static final String CONSUMER = "Dolly"; + + + private static String getNavCallId() { + return format("%s %s", CONSUMER, UUID.randomUUID()); + } + + @SneakyThrows + @Override + public List call(){ + + try { + var arbeidsforhold = webClient + .get() + .uri(builder -> builder + .path("/{miljoe}/api/v1/arbeidstaker/arbeidsforhold") + .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") + .build(miljoe)) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .header(NAV_PERSON_IDENT, ident) + .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) + .header(NavHeaders.NAV_CALL_ID, getNavCallId()) + .retrieve() + .bodyToMono(Arbeidsforhold[].class) + .retryWhen(Retry + .backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .block(); + + return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); + } catch (WebClientResponseException.NotFound e) { + return Collections.emptyList(); + } catch (WebClientResponseException e) { + log.error( + "Klarer ikke å hente arbeidsforhold. Feilmelding: {}.", + e.getResponseBodyAsString() + ); + throw e; + } + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java new file mode 100644 index 00000000000..01cc0c3c0f0 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java @@ -0,0 +1,46 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "periode", + "sluttaarsak", + "varslingskode", + "bruksperiode", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon knyttet til ansettelsesperioden") +public class Ansettelsesperiode { + + private Periode periode; + + @Schema(description = "Årsak for avsluttet ansettelsesperiode (kodeverk: Slutt%C3%A5rsakAareg)", example = "arbeidstakerHarSagtOppSelv") + private String sluttaarsak; + + @Schema(description = "Varslingskode (kodeverk: Varslingskode_5fAa-registeret) - benyttes hvis ansettelsesperiode er lukket maskinelt", example = "ERKONK") + private String varslingskode; + + private Bruksperiode bruksperiode; + + private Sporingsinformasjon sporingsinformasjon; + + @Override + public String toString() { + return ("Ansettelsesforhold: [" + periode.toString() + ", " + sluttaarsak + ", " + varslingskode); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/AntallTimerForTimeloennet.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/AntallTimerForTimeloennet.java new file mode 100644 index 00000000000..c82794fe0b3 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/AntallTimerForTimeloennet.java @@ -0,0 +1,58 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.YearMonth; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "periode", + "antallTimer", + "rapporteringsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon om antall timer med timelønn") +public class AntallTimerForTimeloennet { + + private Periode periode; + + @Schema(description = "Antall timer", example = "37.5") + private Double antallTimer; + + private YearMonth rapporteringsperiode; + + private Sporingsinformasjon sporingsinformasjon; + + @JsonIgnore + public YearMonth getRapporteringsperiode() { + return rapporteringsperiode; + } + + @JsonProperty("rapporteringsperiode") + @Schema(description = "Rapporteringsperiode for antall timer med timelønn, format (ISO-8601): yyyy-MM", example = "2018-05") + public String getRapporteringsperiodeAsString() { + return JavaTimeUtil.toString(rapporteringsperiode); + } + + @JsonProperty("rapporteringsperiode") + public void setRapporteringsperiodeAsString(String rapporteringsperiode) { + this.rapporteringsperiode = JavaTimeUtil.toYearMonth(rapporteringsperiode); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtale.java new file mode 100644 index 00000000000..f7755b49424 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtale.java @@ -0,0 +1,107 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import io.swagger.v3.oas.annotations.media.DiscriminatorMapping; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.SuperBuilder; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDate; + +@Getter +@Setter +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode +@ToString +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + property = "type" +) +@JsonSubTypes({ + @JsonSubTypes.Type(value = OrdinaerArbeidsavtale.class, name = OrdinaerArbeidsavtale.TYPE), + @JsonSubTypes.Type(value = MaritimArbeidsavtale.class, name = MaritimArbeidsavtale.TYPE), + @JsonSubTypes.Type(value = ForenkletOppgjoersordningArbeidsavtale.class, name = ForenkletOppgjoersordningArbeidsavtale.TYPE), + @JsonSubTypes.Type(value = FrilanserArbeidsavtale.class, name = FrilanserArbeidsavtale.TYPE) +}) +@Schema(description = "Informasjon om arbeidsavtale/ansettelsesdetaljer", + discriminatorProperty = "type", + discriminatorMapping = { + @DiscriminatorMapping(value = OrdinaerArbeidsavtale.TYPE, schema = OrdinaerArbeidsavtale.class), + @DiscriminatorMapping(value = MaritimArbeidsavtale.TYPE, schema = MaritimArbeidsavtale.class), + @DiscriminatorMapping(value = ForenkletOppgjoersordningArbeidsavtale.TYPE, schema = ForenkletOppgjoersordningArbeidsavtale.class), + @DiscriminatorMapping(value = FrilanserArbeidsavtale.TYPE, schema = FrilanserArbeidsavtale.class) + } +) +public abstract class Arbeidsavtale implements Arbeidsavtaletype { + + @Schema(description = "Arbeidstidsordning (kodeverk: Arbeidstidsordninger)", example = "ikkeSkift") + private String arbeidstidsordning; + + @Schema(description = "Ansettelsesform (kodeverk: AnsettelsesformAareg)", example = "fast") + private String ansettelsesform; + + @Schema(description = "Yrke (kodeverk: Yrker)", example = "2130123") + private String yrke; + + @Schema(description = "Stillingsprosent", example = "49.5") + private Double stillingsprosent; + + @Schema(description = "Antall timer per uke", example = "37.5") + private Double antallTimerPrUke; + + @Schema(description = "Beregnet antall timer per uke", example = "37.5") + private Double beregnetAntallTimerPrUke; + + @Schema(description = "Dato for siste lønnsendring, format (ISO-8601): yyyy-MM-dd", example = "2014-07-15") + private LocalDate sistLoennsendring; + + @Schema(description = "Dato for siste stillingsendring, format (ISO-8601): yyyy-MM-dd", example = "2015-12-15") + private LocalDate sistStillingsendring; + + private Bruksperiode bruksperiode; + + private Gyldighetsperiode gyldighetsperiode; + + private Sporingsinformasjon sporingsinformasjon; + + @JsonIgnore + public LocalDate getSistLoennsendring() { + return sistLoennsendring; + } + + @JsonIgnore + public LocalDate getSistStillingsendring() { + return sistStillingsendring; + } + + @JsonProperty("sistLoennsendring") + public String getSistLoennsendringAsString() { + return JavaTimeUtil.toString(sistLoennsendring); + } + + @JsonProperty("sistLoennsendring") + public void setSistLoennsendringAsString(String sistLoennsendring) { + this.sistLoennsendring = JavaTimeUtil.toLocalDate(sistLoennsendring); + } + + @JsonProperty("sistStillingsendring") + public String getSistStillingsendringAsString() { + return JavaTimeUtil.toString(sistStillingsendring); + } + + @JsonProperty("sistStillingsendring") + public void setSistStillingsendringAsString(String sistStillingsendring) { + this.sistStillingsendring = JavaTimeUtil.toLocalDate(sistStillingsendring); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtaletype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtaletype.java new file mode 100644 index 00000000000..8192cf72ad5 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtaletype.java @@ -0,0 +1,9 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import io.swagger.v3.oas.annotations.media.Schema; + +public interface Arbeidsavtaletype { + + @Schema(description = "Type for arbeidsavtale", allowableValues = "Ordinaer,Maritim,Forenklet,Frilanser") + String getType(); +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java new file mode 100644 index 00000000000..22010d64b3a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java @@ -0,0 +1,125 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "navArbeidsforholdId", + "arbeidsforholdId", + "arbeidstaker", + "arbeidsgiver", + "opplysningspliktig", + "type", + "ansettelsesperiode", + "arbeidsavtaler", + "permisjonPermitteringer", + "antallTimerForTimeloennet", + "utenlandsopphold", + "varsler", + "innrapportertEtterAOrdningen", + "registrert", + "sistBekreftet", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon om arbeidsforhold") +@SuppressWarnings({"pmd:TooManyFields", "fb-contrib:CC_CYCLOMATIC_COMPLEXITY"}) +public class Arbeidsforhold { + + @Schema(description = "Arbeidsforhold-id i AAREG", example = "123456") + private Long navArbeidsforholdId; + + @Schema(description = "Arbeidsforhold-id fra opplysningspliktig", example = "abc-321") + private String arbeidsforholdId; + + private LocalDateTime registrert; + + private Person arbeidstaker; + + private OpplysningspliktigArbeidsgiver arbeidsgiver; + + private OpplysningspliktigArbeidsgiver opplysningspliktig; + + @Schema(description = "Arbeidsforholdtype (kodeverk: Arbeidsforholdtyper)", example = "ordinaertArbeidsforhold") + private String type; + + private Ansettelsesperiode ansettelsesperiode; + + @Schema(description = "Liste av arbeidsavtaler - gjeldende og evt. med historikk") + private List arbeidsavtaler; + + @Schema(description = "Liste av permisjoner og/eller permitteringer") + private List permisjonPermitteringer; + + @Schema(description = "Liste av antall timer med timelønn") + private List antallTimerForTimeloennet; + + @Schema(description = "Liste av utenlandsopphold") + private List utenlandsopphold; + + @Schema(description = "Liste av unike varsler for ulike entiter") + private List varsler; + + @Schema(description = "Er arbeidsforholdet innrapportert via a-ordningen?") + private Boolean innrapportertEtterAOrdningen; + + private LocalDateTime sistBekreftet; + + private Sporingsinformasjon sporingsinformasjon; + + @JsonIgnore + public LocalDateTime getRegistrert() { + return registrert; + } + + @JsonProperty("registrert") + @Schema(description = "Tidspunkt for registrering av arbeidsforhold, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-18T11:12:29") + public String getRegistrertAsString() { + return JavaTimeUtil.toString(registrert); + } + + @JsonProperty("registrert") + public void setRegistrertAsString(String registrert) { + this.registrert = JavaTimeUtil.toLocalDateTime(registrert); + } + + @JsonIgnore + public LocalDateTime getSistBekreftet() { + return sistBekreftet; + } + + @JsonProperty("sistBekreftet") + @Schema(description = "Tidspunkt for siste bekreftelse av arbeidsforhold, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:10:31") + public String getSistBekreftetAsString() { + return JavaTimeUtil.toString(sistBekreftet); + } + + @JsonProperty("sistBekreftet") + public void setSistBekreftetAsString(String sistBekreftet) { + this.sistBekreftet = JavaTimeUtil.toLocalDateTime(sistBekreftet); + } + + @Override + public String toString() { + return ("Arbeidsforhold: [" + navArbeidsforholdId + ", " + arbeidsforholdId + ", " + ansettelsesperiode + ", " + arbeidsavtaler); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforholdoversikt.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforholdoversikt.java new file mode 100644 index 00000000000..629cbbcb307 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforholdoversikt.java @@ -0,0 +1,111 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "navArbeidsforholdId", + "arbeidstaker", + "arbeidsgiver", + "opplysningspliktig", + "type", + "ansattFom", + "ansattTom", + "yrke", + "stillingsprosent", + "permisjonPermitteringsprosent", + "innrapportertEtterAOrdningen", + "sistBekreftet", + "varsler" +}) +@Schema(description = "Informasjon om arbeidsforhold (overordnet)") +@SuppressWarnings("fb-contrib:CC_CYCLOMATIC_COMPLEXITY") +public class Arbeidsforholdoversikt { + + @Schema(description = "Arbeidsforhold-id i AAREG", example = "123456") + private Long navArbeidsforholdId; + + private Person arbeidstaker; + + private OpplysningspliktigArbeidsgiver arbeidsgiver; + + private OpplysningspliktigArbeidsgiver opplysningspliktig; + + @Schema(description = "Arbeidsforholdtype (kodeverk: Arbeidsforholdtyper)", example = "ordinaertArbeidsforhold") + private String type; + + private LocalDate ansattFom; + + private LocalDate ansattTom; + + @Schema(description = "Yrke (kodeverk: Yrker)", example = "2130123") + private String yrke; + + @Schema(description = "Stillingsprosent", example = "49.5") + private Double stillingsprosent; + + @Schema(description = "Prosent for permisjon eller permittering (aggregert)", example = "50.5") + private Double permisjonPermitteringsprosent; + + @Schema(description = "Er arbeidsforholdet innrapportert via a-ordningen?") + private Boolean innrapportertEtterAOrdningen; + + private LocalDateTime sistBekreftet; + + @Schema(description = "Liste av unike varsler for ulike entiter") + private List varsler; + + @JsonIgnore + public LocalDate getAnsattFom() { + return ansattFom; + } + + @JsonProperty("ansattFom") + @Schema(description = "Fra-og-med-dato for ansettelsesperiode, format (ISO-8601): yyyy-MM-dd", example = "2014-07-01") + public String getAnsattFomAsString() { + return JavaTimeUtil.toString(ansattFom); + } + + @JsonIgnore + public LocalDate getAnsattTom() { + return ansattTom; + } + + @JsonProperty("ansattTom") + @Schema(description = "Til-og-med-dato for ansettelsesperiode, format (ISO-8601): yyyy-MM-dd", example = "2015-12-31") + public String getAnsattTomAsString() { + return JavaTimeUtil.toString(ansattTom); + } + + @JsonIgnore + public LocalDateTime getSistBekreftet() { + return sistBekreftet; + } + + @JsonProperty("sistBekreftet") + @Schema(description = "Tidspunkt for siste bekreftelse av arbeidsforhold, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:10:31") + public String getSistBekreftetAsString() { + return JavaTimeUtil.toString(sistBekreftet); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java new file mode 100644 index 00000000000..3dada2aa493 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java @@ -0,0 +1,46 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "arbeidsforholdoversikter", + "startrad", + "antall", + "totalAntall" +}) +@Schema(description = """ + Resultatobjekt for finn-arbeidsforholdoversikter-per-arbeidsgiver + + Arbeidsforholdoversikter er filtrert grunnet tilgangskontroll hvis størrelse på liste er mindre enn (total) antall (forutsatt at antall- og/eller startrad-filter ikke er angitt)""" +) +public class ArbeidsgiverArbeidsforholdoversikter { + + @Schema(description = "Liste av arbeidsforholdoversikter") + private List arbeidsforholdoversikter; + + @Schema(description = "Nummer for første rad i resultatsett (ikke angitt hvis antall er 0)") + private Integer startrad; + + @Schema(description = "Antall arbeidsforholdoversikter i resultatsett - der det er siste resultatsett hvis antall er mindre enn forespurt antall") + private Integer antall; + + @Schema(description = "Total antall arbeidsforholdoversikter") + private Integer totalAntall; +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsgiveroversikt.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsgiveroversikt.java new file mode 100644 index 00000000000..0e0d4751d83 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsgiveroversikt.java @@ -0,0 +1,36 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "arbeidsgiver", + "aktiveArbeidsforhold", + "inaktiveArbeidsforhold" +}) +@Schema(description = "Informasjon knyttet til arbeidsgiver (overordnet)") +public class Arbeidsgiveroversikt { + + private OpplysningspliktigArbeidsgiver arbeidsgiver; + + @Schema(description = "Antall aktive arbeidsforhold, dvs. de som har en gjeldende ansettelsesperiode") + private Integer aktiveArbeidsforhold; + + @Schema(description = "Antall inaktive arbeidsforhold, dvs. de som har en historisk ansettelsesperiode") + private Integer inaktiveArbeidsforhold; + +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Bruksperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Bruksperiode.java new file mode 100644 index 00000000000..deed61f6e7c --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Bruksperiode.java @@ -0,0 +1,73 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDateTime; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "fom", + "tom" +}) +@Schema(description = "Inneholder informasjon om bruksperiode til objektet") +public class Bruksperiode { + + private LocalDateTime fom; + + private LocalDateTime tom; + + @JsonIgnore + public LocalDateTime getFom() { + return fom; + } + + @JsonIgnore + public LocalDateTime getTom() { + return tom; + } + + @JsonProperty("fom") + @Schema(description = "Fra-tidsstempel for bruksperiode, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2015-01-06T21:44:04.748") + public String getFomAsString() { + return JavaTimeUtil.toString(fom); + } + + @JsonProperty("fom") + public void setFomAsString(String fom) { + this.fom = JavaTimeUtil.toLocalDateTime(fom); + } + + @JsonProperty("tom") + @Schema(description = "Til-tidsstempel for bruksperiode, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2015-12-06T19:45:04") + public String getTomAsString() { + return JavaTimeUtil.toString(tom); + } + + @JsonProperty("tom") + public void setTomAsString(String tom) { + this.tom = JavaTimeUtil.toLocalDateTime(tom); + } + + @Override + @SuppressWarnings({"pmd:ConsecutiveLiteralAppends", "pmd:ConsecutiveAppendsShouldReuse", "fb-contrib:UCPM_USE_CHARACTER_PARAMETERIZED_METHOD", "pmd:AppendCharacterWithChar"}) + public String toString() { + return "Bruksperiode{" + "fom=" + getFomAsString() + ", tom=" + getTomAsString() + "}"; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java new file mode 100644 index 00000000000..7b9d9832654 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@JsonPropertyOrder({ + "arbeidstidsordning", + "ansettelsesform", + "yrke", + "stillingsprosent", + "antallTimerPrUke", + "beregnetAntallTimerPrUke", + "sistLoennsendring", + "sistStillingsendring", + "bruksperiode", + "gyldighetsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for forenklet oppgjørsordning arbeidsforhold") +public class ForenkletOppgjoersordningArbeidsavtale extends Arbeidsavtale { + + public static final String TYPE = "Forenklet"; + + @Override + @JsonIgnore + public String getType() { + return TYPE; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/FrilanserArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/FrilanserArbeidsavtale.java new file mode 100644 index 00000000000..cd7d19156da --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/FrilanserArbeidsavtale.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@JsonPropertyOrder({ + "arbeidstidsordning", + "ansettelsesform", + "yrke", + "stillingsprosent", + "antallTimerPrUke", + "beregnetAntallTimerPrUke", + "sistLoennsendring", + "sistStillingsendring", + "bruksperiode", + "gyldighetsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for frilanser arbeidsforhold", allOf = Arbeidsavtale.class) +public class FrilanserArbeidsavtale extends Arbeidsavtale { + + public static final String TYPE = "Frilanser"; + + @Override + @JsonIgnore + public String getType() { + return TYPE; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Gyldighetsperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Gyldighetsperiode.java new file mode 100644 index 00000000000..f2bac8a4bf0 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Gyldighetsperiode.java @@ -0,0 +1,19 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public class Gyldighetsperiode extends Periode { + + @Override + @SuppressWarnings({"pmd:ConsecutiveLiteralAppends", "pmd:ConsecutiveAppendsShouldReuse", "fb-contrib:UCPM_USE_CHARACTER_PARAMETERIZED_METHOD", "pmd:AppendCharacterWithChar"}) + public String toString() { + return "Gyldighetsperiode{" + "fom=" + getFomAsString() + ", tom=" + getTomAsString() + "}"; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/MaritimArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/MaritimArbeidsavtale.java new file mode 100644 index 00000000000..2f47ee30ac8 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/MaritimArbeidsavtale.java @@ -0,0 +1,54 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +@Getter +@Setter +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@JsonPropertyOrder({ + "fartsomraade", + "skipsregister", + "fartoeystype", + "arbeidstidsordning", + "ansettelsesform", + "yrke", + "stillingsprosent", + "antallTimerPrUke", + "beregnetAntallTimerPrUke", + "sistLoennsendring", + "sistStillingsendring", + "bruksperiode", + "gyldighetsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for maritime arbeidsforhold", allOf = Arbeidsavtale.class) +public class MaritimArbeidsavtale extends Arbeidsavtale { + + public static final String TYPE = "Maritim"; + + @Schema(description = "Fartsområde (kodeverk: Fartsomraader)", example = "utenriks") + private String fartsomraade; + + @Schema(description = "Skipsregister (kodeverk: Skipsregistre)", example = "nis") + private String skipsregister; + + @Schema(description = "Skipstype (kodeverk: Skipstyper)", example = "turist") + private String skipstype; + + @Override + @JsonIgnore + public String getType() { + return TYPE; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiver.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiver.java new file mode 100644 index 00000000000..9c25dc335a4 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiver.java @@ -0,0 +1,24 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + property = "type" +) +@JsonSubTypes({ + @JsonSubTypes.Type(value = Organisasjon.class, name = "Organisasjon"), + @JsonSubTypes.Type(value = Person.class, name = "Person") +}) +@Schema(description = "Informasjon om opplysningspliktig eller arbeidsgiver (organisasjon eller person)", oneOf = {Organisasjon.class, Person.class}) +@SuppressWarnings("squid:S1610") +public abstract class OpplysningspliktigArbeidsgiver { + + public abstract String getType(); +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiverType.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiverType.java new file mode 100644 index 00000000000..5c97c433b06 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiverType.java @@ -0,0 +1,6 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +public interface OpplysningspliktigArbeidsgiverType { + + String getType(); +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OrdinaerArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OrdinaerArbeidsavtale.java new file mode 100644 index 00000000000..270f3202a57 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OrdinaerArbeidsavtale.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@JsonPropertyOrder({ + "arbeidstidsordning", + "ansettelsesform", + "yrke", + "stillingsprosent", + "antallTimerPrUke", + "beregnetAntallTimerPrUke", + "sistLoennsendring", + "sistStillingsendring", + "bruksperiode", + "gyldighetsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for ordinære arbeidsforhold", allOf = Arbeidsavtale.class) +public class OrdinaerArbeidsavtale extends Arbeidsavtale { + + public static final String TYPE = "Ordinaer"; + + @Override + @JsonIgnore + public String getType() { + return TYPE; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Organisasjon.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Organisasjon.java new file mode 100644 index 00000000000..6db83b7e70e --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Organisasjon.java @@ -0,0 +1,36 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "type", + "organisasjonsnummer" +}) +@Schema(description = "Informasjon om organisasjon (arbeidsgiver/opplysningspliktig)") +public class Organisasjon extends OpplysningspliktigArbeidsgiver implements OpplysningspliktigArbeidsgiverType { + + @Schema(description = "Organisasjonsnummer fra Enhetsregisteret", example = "987654321") + private String organisasjonsnummer; + + @Override + @JsonIgnore + public String getType() { + return this.getClass().getSimpleName(); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Periode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Periode.java new file mode 100644 index 00000000000..f12a411da09 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Periode.java @@ -0,0 +1,73 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDate; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "fom", + "tom" +}) +@Schema(description = "Inneholder informasjon om periode") +public class Periode { + + private LocalDate fom; + + private LocalDate tom; + + @JsonIgnore + public LocalDate getFom() { + return fom; + } + + @JsonIgnore + public LocalDate getTom() { + return tom; + } + + @JsonProperty("fom") + @Schema(description = "Fra-og-med-dato for periode, format (ISO-8601): yyyy-MM-dd", example = "2014-07-01") + public String getFomAsString() { + return JavaTimeUtil.toString(fom); + } + + @JsonProperty("fom") + public void setFomAsString(String fom) { + this.fom = JavaTimeUtil.toLocalDate(fom); + } + + @JsonProperty("tom") + @Schema(description = "Til-og-med-dato for periode, format (ISO-8601): yyyy-MM-dd", example = "2015-12-31") + public String getTomAsString() { + return JavaTimeUtil.toString(tom); + } + + @JsonProperty("tom") + public void setTomAsString(String tom) { + this.tom = JavaTimeUtil.toLocalDate(tom); + } + + @Override + @SuppressWarnings({"pmd:ConsecutiveLiteralAppends", "pmd:ConsecutiveAppendsShouldReuse", "fb-contrib:UCPM_USE_CHARACTER_PARAMETERIZED_METHOD", "pmd:AppendCharacterWithChar"}) + public String toString() { + return "Periode{" + "fom=" + getFomAsString() + ", tom=" + getTomAsString() + "}"; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/PermisjonPermittering.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/PermisjonPermittering.java new file mode 100644 index 00000000000..ba22b56fd49 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/PermisjonPermittering.java @@ -0,0 +1,46 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "permisjonPermitteringId", + "periode", + "prosent", + "type", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon om permisjon eller permittering") +public class PermisjonPermittering { + + @Schema(description = "Id fra opplysningspliktig", example = "123-xyz") + private String permisjonPermitteringId; + + private Periode periode; + + @Schema(description = "Prosent for permisjon eller permittering", example = "50.5") + private Double prosent; + + @Schema(description = "Permisjon-/permitteringstype (kodeverk: PermisjonsOgPermitteringsBeskrivelse)", example = "permisjonMedForeldrepenger") + private String type; + + @Schema(description = "Varslingskode (kodeverk: Varslingskode_5fAa-registeret) - benyttes hvis permisjon/permittering er lukket maskinelt") + private String varslingskode; + + @Schema(description = "Informasjon om opprettelse og endring av objekt") + private Sporingsinformasjon sporingsinformasjon; +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Person.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Person.java new file mode 100644 index 00000000000..129c7a6d2fd --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Person.java @@ -0,0 +1,40 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "type", + "offentligIdent", + "aktoerId" +}) +@Schema(description = "Informasjon om person (arbeidstaker/arbeidsgiver/opplysningspliktig)") +public class Person extends OpplysningspliktigArbeidsgiver implements Persontype { + + @Schema(description = "Gjeldende offentlig ident", example = "31126700000") + private String offentligIdent; + + @Schema(description = "Aktør-id", example = "1234567890") + private String aktoerId; + + @Override + @JsonIgnore + public String getType() { + return this.getClass().getSimpleName(); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Persontype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Persontype.java new file mode 100644 index 00000000000..516b09ee60f --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Persontype.java @@ -0,0 +1,6 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +public interface Persontype { + + String getType(); +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/README.md b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/README.md new file mode 100644 index 00000000000..3df8cc38724 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/README.md @@ -0,0 +1,6 @@ +# /Domain.v1 + +Denne mappen inneholder alle klassene for å hente ut og parse +dokumentene av skjermaet fra [GET](https://aareg-services-q2.intern.dev.nav.no/swagger-ui/index.html#/arbeidstaker/finnArbeidsforholdPrArbeidstaker_1) +og [PUT](https://aareg-vedlikehold-q2.dev.intern.nav.no/swagger-ui/index.html#/arbeidsforhold/endreArbeidsforhold) +endepunktene til AA-reg. Klassene er en eksakt kopi av [AA-reg sin modell](https://github.com/navikt/aareg-services/tree/main/src/main/java/no/nav/aareg/services/provider/rs/api/contract/arbeidsforhold/v1) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Sporingsinformasjon.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Sporingsinformasjon.java new file mode 100644 index 00000000000..05867c0ed3a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Sporingsinformasjon.java @@ -0,0 +1,91 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDateTime; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "opprettetTidspunkt", + "opprettetAv", + "opprettetKilde", + "opprettetKildereferanse", + "endretTidspunkt", + "endretAv", + "endretKilde", + "endretKildereferanse" +}) +@Schema(description = "Informasjon om opprettelse og endring av objekt. MERK: Skal IKKE eksponeres i selvbetjeningssonen (SBS).") +public class Sporingsinformasjon { + + private LocalDateTime opprettetTidspunkt; + + @Schema(description = "Brukernavn for opprettelse", example = "srvappserver") + private String opprettetAv; + + @Schema(description = "Kilde for opprettelse", example = "EDAG") + private String opprettetKilde; + + @Schema(description = "Kildereferanse for opprettelse", example = "22a26849-aeef-4b81-9174-e238c11e1081") + private String opprettetKildereferanse; + + private LocalDateTime endretTidspunkt; + + @Schema(description = "Brukernavn for endring", example = "Z990693") + private String endretAv; + + @Schema(description = "Kilde for endring", example = "AAREG") + private String endretKilde; + + @Schema(description = "Kildereferanse for endring", example = "referanse-fra-kilde") + private String endretKildereferanse; + + @JsonIgnore + public LocalDateTime getOpprettetTidspunkt() { + return opprettetTidspunkt; + } + + @JsonIgnore + public LocalDateTime getEndretTidspunkt() { + return endretTidspunkt; + } + + @JsonProperty("opprettetTidspunkt") + @Schema(description = "Tidspunkt for opprettelse, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:10:58.059") + public String getOpprettetTidspunktAsString() { + return JavaTimeUtil.toString(opprettetTidspunkt); + } + + @JsonProperty("opprettetTidspunkt") + public void setOpprettetTidspunktAsString(String opprettetTidspunkt) { + this.opprettetTidspunkt = JavaTimeUtil.toLocalDateTime(opprettetTidspunkt); + } + + @JsonProperty("endretTidspunkt") + @Schema(description = "Tidspunkt for endring, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:11:20.79") + public String getEndretTidspunktAsString() { + return JavaTimeUtil.toString(endretTidspunkt); + } + + @JsonProperty("endretTidspunkt") + public void setEndretTidspunktAsString(String endretTidspunkt) { + this.endretTidspunkt = JavaTimeUtil.toLocalDateTime(endretTidspunkt); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Utenlandsopphold.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Utenlandsopphold.java new file mode 100644 index 00000000000..b295491f066 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Utenlandsopphold.java @@ -0,0 +1,60 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; + +import java.time.YearMonth; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "periode", + "landkode", + "rapporteringsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon om utenlandsopphold") +public class Utenlandsopphold { + + @Schema(description = "Periode for utenlandsopphold") + private Periode periode; + + @Schema(description = "Landkode (kodeverk: Landkoder)", example = "JPN") + private String landkode; + + private YearMonth rapporteringsperiode; + + @Schema(description = "Informasjon om opprettelse og endring av objekt") + private Sporingsinformasjon sporingsinformasjon; + + @JsonIgnore + public YearMonth getRapporteringsperiode() { + return rapporteringsperiode; + } + + @JsonProperty("rapporteringsperiode") + @Schema(description = "Rapporteringsperiode for utenlandsopphold, format (ISO-8601): yyyy-MM", example = "2017-12") + public String getRapporteringsperiodeAsString() { + return JavaTimeUtil.toString(rapporteringsperiode); + } + + @JsonProperty("rapporteringsperiode") + public void setRapporteringsperiodeAsString(String rapporteringsperiode) { + this.rapporteringsperiode = JavaTimeUtil.toYearMonth(rapporteringsperiode); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varsel.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varsel.java new file mode 100644 index 00000000000..b14eb924ea4 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varsel.java @@ -0,0 +1,33 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "entitet", + "type", + "varslingskode" +}) +@Schema(description = "Informasjon om varsel") +public class Varsel { + + @Schema(description = "Entitet for varsel") + private Varselentitet entitet; + + @Schema(description = "Varslingskode (kodeverk: Varslingskode_5fAa-registeret)") + private String varslingskode; +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varselentitet.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varselentitet.java new file mode 100644 index 00000000000..73abecce19e --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varselentitet.java @@ -0,0 +1,11 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; + +import io.swagger.v3.oas.annotations.media.Schema; + +@Schema(description = "Entitet for varsel") +public enum Varselentitet { + + ARBEIDSFORHOLD, + ANSETTELSESPERIODE, + PERMISJONPERMITTERING +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/util/JavaTimeUtil.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/util/JavaTimeUtil.java new file mode 100644 index 00000000000..9ae3d537ed8 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/util/JavaTimeUtil.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.YearMonth; +import java.time.format.DateTimeFormatter; + +import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE; +import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME; + +public class JavaTimeUtil { + + private static final String YEAR_MONTH_PATTERN = "yyyy-MM"; + + public static String toString(LocalDate date) { + return date != null ? date.format(ISO_LOCAL_DATE) : null; + } + + public static String toString(LocalDateTime dateTime) { + return dateTime != null ? dateTime.format(ISO_LOCAL_DATE_TIME) : null; + } + + public static String toString(YearMonth yearMonth) { + return yearMonth != null ? yearMonth.format(DateTimeFormatter.ofPattern(YEAR_MONTH_PATTERN)) : null; + } + + public static LocalDate toLocalDate(String date) { + return date != null ? LocalDate.parse(date, ISO_LOCAL_DATE) : null; + } + + public static LocalDateTime toLocalDateTime(String dateTime) { + return dateTime != null ? LocalDateTime.parse(dateTime, ISO_LOCAL_DATE_TIME) : null; + } + + public static YearMonth toYearMonth(String yearMonth) { + return yearMonth != null ? YearMonth.parse(yearMonth, DateTimeFormatter.ofPattern(YEAR_MONTH_PATTERN)) : null; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java new file mode 100644 index 00000000000..baf68db02f5 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java @@ -0,0 +1,52 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.listener; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import no.nav.person.pdl.leesah.Personhendelse; +import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; + +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.kafka.annotation.KafkaListener; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Slf4j +@Component +@RequiredArgsConstructor +public class DoedsfallListener { + private static final String doedsfallTopic = "pdl.leesah-v1"; + @Autowired + private final ArbeidsforholdService arbeidsforholdService; + private final String oensketHendelsestype = "DOEDSFALL_V1"; + + /** + * Lytter til og konsumerer hendelser fra Kafka hendelsesstrømmen på et gitt topic. + * Behandler også alle hendelser av en gitt hendelsestype. + * @param hendelser - Alle konsumerte hendelser fra hendelsesstrømmen + */ + @KafkaListener(topics = doedsfallTopic) + public void getHendelser(List> hendelser) { + for (ConsumerRecord hendelse: hendelser){ + + String aktoerId = hendelse.key().split("\u001A")[1]; + String hendelsestype = hendelse.value().get(4).toString(); + + if (validerHendelse(hendelsestype)){ + arbeidsforholdService.arbeidsforholdService(aktoerId); + } + } + } + + /** + * Validerer om hendelsen er av ønsket hendelsestype + * @param personhendelse - Hendelse/opplysningstype, f.eks: FOLKEREGISTERIDENTIFIKATOR_V1, NAVN_V1, SIVILSTAND_V1, etc. + * @return true dersom det er av ønsket hendelsestype, false hvis ikke + */ + private Boolean validerHendelse(String personhendelse) { + return personhendelse.equals(oensketHendelsestype); + } +} + diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java new file mode 100644 index 00000000000..4822569213e --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java @@ -0,0 +1,51 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.service; + + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import no.nav.registre.testnorge.levendearbeidsforhold.consumers.AaregConsumer; +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; + +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +public class ArbeidsforholdService { + + private final AaregConsumer aaregConsumer; + private final String sluttAarsaksKode = "arbeidstakerHarSagtOppSelv"; + private final String varslingsKode = "NAVEND"; + + public void arbeidsforholdService(String aktoerId) { + List arbeidsforholdListe = hentArbeidsforhold(aktoerId); + if (!arbeidsforholdListe.isEmpty()) { + arbeidsforholdListe.forEach( + arbeidsforhold -> { + if (arbeidsforhold.getAnsettelsesperiode().getPeriode().getTom() == null){ + endreArbeidsforhold(arbeidsforhold); + } + } + ); + } + } + + public List hentArbeidsforhold(String ident) { + return aaregConsumer.hentArbeidsforhold(ident); + } + + public void endreArbeidsforhold(Arbeidsforhold arbeidsforhold){ + + arbeidsforhold.getAnsettelsesperiode().getPeriode().setTom(LocalDate.now()); + arbeidsforhold.getAnsettelsesperiode().setSluttaarsak(sluttAarsaksKode); + arbeidsforhold.getAnsettelsesperiode().setVarslingskode(varslingsKode); + arbeidsforhold.getArbeidsavtaler().forEach( + arbeidsavtale -> arbeidsavtale.setStillingsprosent(null)); + + aaregConsumer.endreArbeidsforhold(arbeidsforhold); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/utility/CallIdUtil.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/utility/CallIdUtil.java new file mode 100644 index 00000000000..bdc7a0c7662 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/utility/CallIdUtil.java @@ -0,0 +1,17 @@ +package no.nav.registre.testnorge.levendearbeidsforhold.utility; + +import lombok.experimental.UtilityClass; + +import java.util.UUID; + +import static java.lang.String.format; + +@UtilityClass +public final class CallIdUtil { + public static final String HEADER_NAV_CONSUMER_ID = "Nav-Consumer-Id"; + public static final String HEADER_NAV_CALL_ID = "Nav-Call-Id"; + public static final String CONSUMER = "Dolly"; + public static String generateCallId() { + return format("%s-%s", CONSUMER, UUID.randomUUID()); + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application-dev.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application-dev.yml new file mode 100644 index 00000000000..7df314e0e54 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application-dev.yml @@ -0,0 +1,2 @@ +kafka: + group-id: testnav-levende-arbeidsforhold-service diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml new file mode 100644 index 00000000000..381f0bb0fee --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -0,0 +1,55 @@ +AAD_ISSUER_URI: https://login.microsoftonline.com/62366534-1ec3-4962-8869-9b5535279d0b + +spring: + main: + banner-mode: off + application: + name: testnav-levende-arbeidsforhold-service + version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle + description: App for å hente PDL personer. + security: + oauth2: + client: + resourceserver: + aad: + issuer-uri: ${AAD_ISSUER_URI}/v2.0 + jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys + accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} + cloud: + vault: + enabled: false + kafka: + consumer: + group-id: testnav-levende-arbeidsforhold-service +springdoc: + swagger-ui: + disable-swagger-default-url: true + url: /v3/api-docs + +management: + endpoints: + enabled-by-default: true + web: + base-path: /internal + exposure.include: prometheus,heapdump,health + path-mapping: + prometheus: metrics + endpoint: + prometheus.enabled: true + heapdump.enabled: true + prometheus: + metrics: + export: + enabled: true +server: + servlet: + encoding: + charset: UTF-8 + error: + include-message: always +consumers: + testnav-aareg-proxy: + name: testnav-aareg-proxy + namespace: dolly + url: https://testnav-aareg-proxy.dev-fss-pub.nais.io + cluster: dev-fss diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml new file mode 100644 index 00000000000..9583ff2d427 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml @@ -0,0 +1,40 @@ + + + + + + + true + 256 + 10280 + 20 + ^sun\.reflect\..*\.invoke + ^net\.sf\.cglib\.proxy\.MethodProxy\.invoke + java\.util\.concurrent\..* + org\.apache\.catalina\..* + org\.apache\.coyote\..* + org\.apache\.tomcat\..* + + + + + + + + + + + + + %d{HH:mm:ss.SSS} | %5p | %logger{25} | %m%n + + utf8 + + + + + + + + + \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java b/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java new file mode 100644 index 00000000000..4c6f896873e --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java @@ -0,0 +1,20 @@ +package no.nav.registre.testnorge.levendearbeidsforhold; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.security.oauth2.jwt.JwtDecoder; +import org.springframework.test.context.ActiveProfiles; + +@SpringBootTest +@ActiveProfiles("test") +class ApplicationContextTest { + + @MockBean + public JwtDecoder jwtDecoder; + + @Test + @SuppressWarnings("java:S2699") + void load_app_context() { + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/test/resources/application-test.properties b/apps/levende-arbeidsforhold-ansettelse/src/test/resources/application-test.properties new file mode 100644 index 00000000000..e5e55886152 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/test/resources/application-test.properties @@ -0,0 +1 @@ +TOKEN_X_ISSUER=dummy \ No newline at end of file From 4f13baee2e70b53f6ea122fa775cc3eabbacfb43 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Mon, 8 Jul 2024 13:20:23 +0200 Subject: [PATCH 122/161] Added config filene --- .../README.md | 26 --- .../build.gradle | 2 +- .../config.yml | 8 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 59536 -> 43453 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- .../levende-arbeidsforhold-ansettelse/gradlew | 51 +++-- .../gradlew.bat | 181 +++++++++--------- .../gradlewUpdate.sh | 3 - .../settings.gradle | 4 +- ...beidsforholdServiceApplicationStarter.java | 13 -- .../domain/v1/Persontype.java | 6 - ...deArbeidsforholdAnsettelseApplication.java | 13 ++ .../config/ApplicationConfig.java | 2 +- .../config/Consumers.java | 2 +- .../config/DevConfig.java | 2 +- .../config/KafkaConfig.java | 2 +- .../config/OpenApiConfig.java | 5 +- .../config/SecurityConfig.java | 2 +- .../consumers/AaregConsumer.java | 9 +- .../command/EndreArbeidsforholdCommand.java | 2 +- .../command/HentArbeidsforholdCommand.java | 6 +- .../domain/v1/Ansettelsesperiode.java | 9 +- .../domain/v1/AntallTimerForTimeloennet.java | 9 +- .../domain/v1/Arbeidsavtale.java | 14 +- .../domain/v1/Arbeidsavtaletype.java | 2 +- .../domain/v1/Arbeidsforhold.java | 9 +- .../domain/v1/Arbeidsforholdoversikt.java | 9 +- .../ArbeidsgiverArbeidsforholdoversikter.java | 9 +- .../domain/v1/Arbeidsgiveroversikt.java | 9 +- .../domain/v1/Bruksperiode.java | 9 +- ...orenkletOppgjoersordningArbeidsavtale.java | 2 +- .../domain/v1/FrilanserArbeidsavtale.java | 2 +- .../domain/v1/Gyldighetsperiode.java | 2 +- .../domain/v1/MaritimArbeidsavtale.java | 8 +- .../v1/OpplysningspliktigArbeidsgiver.java | 2 +- .../OpplysningspliktigArbeidsgiverType.java | 2 +- .../domain/v1/OrdinaerArbeidsavtale.java | 2 +- .../domain/v1/Organisasjon.java | 9 +- .../domain/v1/Periode.java | 8 +- .../domain/v1/PermisjonPermittering.java | 9 +- .../domain/v1/Person.java | 9 +- .../domain/v1/Persontype.java | 6 + .../domain/v1/README.md | 0 .../domain/v1/Sporingsinformasjon.java | 9 +- .../domain/v1/Utenlandsopphold.java | 9 +- .../domain/v1/Varsel.java | 9 +- .../domain/v1/Varselentitet.java | 2 +- .../domain/v1/util/JavaTimeUtil.java | 2 +- .../listener/DoedsfallListener.java | 7 +- .../service/ArbeidsforholdService.java | 5 +- .../util/CallIdUtil.java | 17 ++ .../src/main/resources/application-dev.yml | 2 - .../src/main/resources/application.properties | 1 + .../src/main/resources/application.yml | 55 ------ .../src/main/resources/logback-spring.xml | 40 ---- .../ApplicationContextTest.java | 20 -- ...eidsforholdAnsettelseApplicationTests.java | 13 ++ .../resources/application-test.properties | 1 - .../utility/CallIdUtil.java | 0 59 files changed, 245 insertions(+), 430 deletions(-) delete mode 100644 apps/levende-arbeidsforhold-ansettelse/README.md delete mode 100755 apps/levende-arbeidsforhold-ansettelse/gradlewUpdate.sh delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Persontype.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/config/ApplicationConfig.java (86%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/config/Consumers.java (93%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/config/DevConfig.java (95%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/config/KafkaConfig.java (98%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/config/OpenApiConfig.java (97%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/config/SecurityConfig.java (96%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/consumers/AaregConsumer.java (97%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/consumers/command/EndreArbeidsforholdCommand.java (96%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/consumers/command/HentArbeidsforholdCommand.java (97%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Ansettelsesperiode.java (83%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/AntallTimerForTimeloennet.java (87%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Arbeidsavtale.java (88%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Arbeidsavtaletype.java (75%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Arbeidsforhold.java (94%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Arbeidsforholdoversikt.java (93%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java (85%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Arbeidsgiveroversikt.java (78%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Bruksperiode.java (89%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java (93%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/FrilanserArbeidsavtale.java (93%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Gyldighetsperiode.java (90%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/MaritimArbeidsavtale.java (87%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/OpplysningspliktigArbeidsgiver.java (91%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/OpplysningspliktigArbeidsgiverType.java (52%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/OrdinaerArbeidsavtale.java (93%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Organisasjon.java (79%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Periode.java (90%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/PermisjonPermittering.java (84%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Person.java (80%) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Persontype.java rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/README.md (100%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Sporingsinformasjon.java (92%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Utenlandsopphold.java (87%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Varsel.java (73%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/Varselentitet.java (73%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/domain/v1/util/JavaTimeUtil.java (94%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/listener/DoedsfallListener.java (95%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{registre/testnorge/levendearbeidsforhold => testnorge/apps/levendearbeidsforholdansettelse}/service/ArbeidsforholdService.java (96%) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/util/CallIdUtil.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/application-dev.yml create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.properties delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplicationTests.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/test/resources/application-test.properties rename apps/{levende-arbeidsforhold-ansettelse => levende-arbeidsforhold-service}/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/utility/CallIdUtil.java (100%) diff --git a/apps/levende-arbeidsforhold-ansettelse/README.md b/apps/levende-arbeidsforhold-ansettelse/README.md deleted file mode 100644 index 8f4c27a0910..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Levende arbeidsforhold-service - -Fyll inn: - -## Swagger - -Swagger finnes under [/swagger](https://levende-arbeidsforhold-service.intern.dev.nav.no/swagger) -endepunktet til -applikasjonen. - -## Lokal kjøring - -Ha naisdevice kjørende og kjør GenererNavnServiceApplicationStarter med følgende argumenter: - -``` --Dspring.cloud.vault.token=[vault-token] --Dspring.profiles.active=dev -``` - -### Utviklerimage - -I utviklerimage brukes ikke naisdevice og du må legge til følgende ekstra argumenter: - -``` --Djavax.net.ssl.trustStore=[path til lokal truststore] --Djavax.net.ssl.trustStorePassword=[passord til lokal truststore] -``` diff --git a/apps/levende-arbeidsforhold-ansettelse/build.gradle b/apps/levende-arbeidsforhold-ansettelse/build.gradle index bd66b0b1376..0034005aa97 100644 --- a/apps/levende-arbeidsforhold-ansettelse/build.gradle +++ b/apps/levende-arbeidsforhold-ansettelse/build.gradle @@ -56,7 +56,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' implementation 'org.springframework.boot:spring-boot-starter-security' - + implementation 'org.springframework.cloud:spring-cloud-starter-vault-config' implementation 'org.springframework.boot:spring-boot-starter-actuator' diff --git a/apps/levende-arbeidsforhold-ansettelse/config.yml b/apps/levende-arbeidsforhold-ansettelse/config.yml index 2129fcfd3eb..759cb8e1edb 100644 --- a/apps/levende-arbeidsforhold-ansettelse/config.yml +++ b/apps/levende-arbeidsforhold-ansettelse/config.yml @@ -1,7 +1,7 @@ -apiVersion: "nais.io/v1alpha1" +apiVersion: "nais.io/v1alpha1" kind: "Application" metadata: - name: testnav-levende-arbeidsforhold-service + name: testnav-levende-arbeidsforholdansettelse-service namespace: dolly labels: team: dolly @@ -19,7 +19,7 @@ spec: external: - host: testnav-aareg-proxy.dev-fss-pub.nais.io rules: - - application: testnav-levende-arbeidsforhold-service + - application: testnav-levende-arbeidsforholdansettelse-service cluster: dev-gcp azure: application: @@ -51,4 +51,4 @@ spec: kafka: pool: nav-dev ingresses: - - "https://testnav-levende-arbeidsforhold-service.intern.dev.nav.no" + - "https://testnav-levende-arbeidsforholdansettelse-service.intern.dev.nav.no" diff --git a/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.jar b/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.jar index 7454180f2ae8848c63b8b4dea2cb829da983f2fa..e6441136f3d4ba8a0da8d277868979cfbc8ad796 100644 GIT binary patch literal 43453 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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
NnX)EH+Nua)3Y(c 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL diff --git a/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.properties b/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.properties index 48c0a02ca41..a4413138c96 100644 --- a/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.properties +++ b/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/apps/levende-arbeidsforhold-ansettelse/gradlew b/apps/levende-arbeidsforhold-ansettelse/gradlew index 3da45c161b0..b740cf13397 100755 --- a/apps/levende-arbeidsforhold-ansettelse/gradlew +++ b/apps/levende-arbeidsforhold-ansettelse/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright ? 2015-2021 the original authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -32,10 +32,10 @@ # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: # * functions; -# * expansions ?$var?, ?${var}?, ?${var:-default}?, ?${var+SET}?, -# ?${var#prefix}?, ?${var%suffix}?, and ?$( cmd )?; -# * compound commands having a testable exit status, especially ?case?; -# * various built-in commands including ?command?, ?set?, and ?ulimit?. +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». # # Important for patching: # @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +80,11 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +131,29 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +198,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ @@ -205,6 +214,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/apps/levende-arbeidsforhold-ansettelse/gradlew.bat b/apps/levende-arbeidsforhold-ansettelse/gradlew.bat index 107acd32c4e..7101f8e4676 100644 --- a/apps/levende-arbeidsforhold-ansettelse/gradlew.bat +++ b/apps/levende-arbeidsforhold-ansettelse/gradlew.bat @@ -1,89 +1,92 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/apps/levende-arbeidsforhold-ansettelse/gradlewUpdate.sh b/apps/levende-arbeidsforhold-ansettelse/gradlewUpdate.sh deleted file mode 100755 index e5ee6361152..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/gradlewUpdate.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -gradle wrapper \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/settings.gradle b/apps/levende-arbeidsforhold-ansettelse/settings.gradle index e7fe9f7600c..01c2d4485b0 100644 --- a/apps/levende-arbeidsforhold-ansettelse/settings.gradle +++ b/apps/levende-arbeidsforhold-ansettelse/settings.gradle @@ -1,8 +1,8 @@ + plugins { id "com.gradle.develocity" version "3.17.4" } - -rootProject.name = 'testnav-levende-arbeidsforhold-service' +rootProject.name = 'levende-arbeidsforhold-ansettelse' includeBuild "../../libs/kafka-config" includeBuild "../../libs/avro-schema" diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java deleted file mode 100644 index 4c1bc1f8bd4..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/LevendeArbeidsforholdServiceApplicationStarter.java +++ /dev/null @@ -1,13 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - - -@SpringBootApplication -public class LevendeArbeidsforholdServiceApplicationStarter { - - public static void main(String[] args) { - SpringApplication.run(LevendeArbeidsforholdServiceApplicationStarter.class, args); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Persontype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Persontype.java deleted file mode 100644 index 516b09ee60f..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Persontype.java +++ /dev/null @@ -1,6 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; - -public interface Persontype { - - String getType(); -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java new file mode 100644 index 00000000000..128da0b610d --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java @@ -0,0 +1,13 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class LevendeArbeidsforholdAnsettelseApplication { + + public static void main(String[] args) { + SpringApplication.run(LevendeArbeidsforholdAnsettelseApplication.class, args); + } + +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/ApplicationConfig.java similarity index 86% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/ApplicationConfig.java index 80a0da22609..aa44f715218 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/ApplicationConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/ApplicationConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.config; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; import no.nav.testnav.libs.servletcore.config.ApplicationCoreConfig; import no.nav.testnav.libs.standalone.servletsecurity.config.InsecureJwtServerToServerConfiguration; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java similarity index 93% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java index c5654aff14d..d08918b83ce 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/Consumers.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.config; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/DevConfig.java similarity index 95% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/DevConfig.java index a5b2cad3c88..756cb9c8dcd 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/DevConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/DevConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.config; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java index 665304c55f6..c923e02520f 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.config; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; import io.confluent.kafka.serializers.AbstractKafkaSchemaSerDeConfig; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/OpenApiConfig.java similarity index 97% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/OpenApiConfig.java index d2dc2940c31..4e9487e6af8 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/OpenApiConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/OpenApiConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.config; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; @@ -7,6 +7,7 @@ import io.swagger.v3.oas.models.info.License; import io.swagger.v3.oas.models.security.SecurityRequirement; import io.swagger.v3.oas.models.security.SecurityScheme; +import no.nav.testnav.libs.servletcore.config.ApplicationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; @@ -14,8 +15,6 @@ import java.util.Arrays; -import no.nav.testnav.libs.servletcore.config.ApplicationProperties; - @Configuration public class OpenApiConfig implements WebMvcConfigurer { diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/SecurityConfig.java similarity index 96% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/SecurityConfig.java index 72420b5ac4a..4f8f0258f7a 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/config/SecurityConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/SecurityConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.config; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java similarity index 97% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java index 9b3f46be9a2..28e86414ab8 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/AaregConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java @@ -1,14 +1,13 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.consumers; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; - +import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.EndreArbeidsforholdCommand; import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; -import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; - import org.springframework.http.MediaType; import org.springframework.http.codec.json.Jackson2JsonDecoder; import org.springframework.http.codec.json.Jackson2JsonEncoder; @@ -21,8 +20,6 @@ import static java.util.Objects.nonNull; -import com.fasterxml.jackson.databind.ObjectMapper; - @Slf4j @Component public class AaregConsumer { diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java similarity index 96% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java index b266a879642..2b449a14a42 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.consumers.command; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java similarity index 97% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java index 63cacc6f7b8..da00d9687bd 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java @@ -1,13 +1,11 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.consumers.command; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; - +import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.commands.utils.WebClientFilter; import no.nav.testnav.libs.servletcore.headers.NavHeaders; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; - import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClientResponseException; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Ansettelsesperiode.java similarity index 83% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Ansettelsesperiode.java index 01cc0c3c0f0..c1a671ccf19 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Ansettelsesperiode.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Ansettelsesperiode.java @@ -1,14 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; @Getter @Setter diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/AntallTimerForTimeloennet.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java similarity index 87% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/AntallTimerForTimeloennet.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java index c82794fe0b3..1b2e99c2d61 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/AntallTimerForTimeloennet.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java @@ -1,16 +1,11 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; import java.time.YearMonth; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java similarity index 88% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtale.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java index f7755b49424..46faa332253 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtale.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java @@ -1,17 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.*; import io.swagger.v3.oas.annotations.media.DiscriminatorMapping; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.ToString; +import lombok.*; import lombok.experimental.SuperBuilder; import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtaletype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtaletype.java similarity index 75% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtaletype.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtaletype.java index 8192cf72ad5..c9118b8d2cd 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsavtaletype.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtaletype.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java similarity index 94% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java index 22010d64b3a..ca47180dd28 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforhold.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java @@ -1,16 +1,11 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforholdoversikt.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java similarity index 93% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforholdoversikt.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java index 629cbbcb307..574c0684893 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsforholdoversikt.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java @@ -1,16 +1,11 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; import java.time.LocalDate; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java similarity index 85% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java index 3dada2aa493..2c45472f686 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java @@ -1,14 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import java.util.List; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsgiveroversikt.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsgiveroversikt.java similarity index 78% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsgiveroversikt.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsgiveroversikt.java index 0e0d4751d83..2ab9ca02c6e 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Arbeidsgiveroversikt.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsgiveroversikt.java @@ -1,14 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; @Getter @Setter diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Bruksperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java similarity index 89% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Bruksperiode.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java index deed61f6e7c..0eab6c1d4b7 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Bruksperiode.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java @@ -1,16 +1,11 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java similarity index 93% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java index 7b9d9832654..10a2ad5848c 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonPropertyOrder; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/FrilanserArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/FrilanserArbeidsavtale.java similarity index 93% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/FrilanserArbeidsavtale.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/FrilanserArbeidsavtale.java index cd7d19156da..174eeef5c56 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/FrilanserArbeidsavtale.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/FrilanserArbeidsavtale.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonPropertyOrder; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Gyldighetsperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Gyldighetsperiode.java similarity index 90% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Gyldighetsperiode.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Gyldighetsperiode.java index f2bac8a4bf0..6ae5d77453e 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Gyldighetsperiode.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Gyldighetsperiode.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.EqualsAndHashCode; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/MaritimArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/MaritimArbeidsavtale.java similarity index 87% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/MaritimArbeidsavtale.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/MaritimArbeidsavtale.java index 2f47ee30ac8..003ecf4efa7 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/MaritimArbeidsavtale.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/MaritimArbeidsavtale.java @@ -1,13 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.ToString; +import lombok.*; import lombok.experimental.SuperBuilder; @Getter diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiver.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiver.java similarity index 91% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiver.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiver.java index 9c25dc335a4..f4f71e186eb 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiver.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiver.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiverType.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiverType.java similarity index 52% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiverType.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiverType.java index 5c97c433b06..ba4206c93db 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OpplysningspliktigArbeidsgiverType.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiverType.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; public interface OpplysningspliktigArbeidsgiverType { diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OrdinaerArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OrdinaerArbeidsavtale.java similarity index 93% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OrdinaerArbeidsavtale.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OrdinaerArbeidsavtale.java index 270f3202a57..78a6cbc9ef3 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/OrdinaerArbeidsavtale.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OrdinaerArbeidsavtale.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonPropertyOrder; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Organisasjon.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Organisasjon.java similarity index 79% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Organisasjon.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Organisasjon.java index 6db83b7e70e..466e82008e0 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Organisasjon.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Organisasjon.java @@ -1,15 +1,10 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; @Getter @Setter diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Periode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java similarity index 90% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Periode.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java index f12a411da09..96bb9ab4c50 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Periode.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java @@ -1,15 +1,11 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import lombok.experimental.SuperBuilder; import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/PermisjonPermittering.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/PermisjonPermittering.java similarity index 84% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/PermisjonPermittering.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/PermisjonPermittering.java index ba22b56fd49..0e9daef3da5 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/PermisjonPermittering.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/PermisjonPermittering.java @@ -1,14 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; @Getter @Setter diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Person.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Person.java similarity index 80% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Person.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Person.java index 129c7a6d2fd..f4c5fc0927f 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Person.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Person.java @@ -1,15 +1,10 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; @Getter @Setter diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Persontype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Persontype.java new file mode 100644 index 00000000000..074425fa0cf --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Persontype.java @@ -0,0 +1,6 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; + +public interface Persontype { + + String getType(); +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/README.md b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/README.md similarity index 100% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/README.md rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/README.md diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Sporingsinformasjon.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java similarity index 92% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Sporingsinformasjon.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java index 05867c0ed3a..23ab23fb6d0 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Sporingsinformasjon.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java @@ -1,16 +1,11 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Utenlandsopphold.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java similarity index 87% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Utenlandsopphold.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java index b295491f066..33b81015ee9 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Utenlandsopphold.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java @@ -1,16 +1,11 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; import java.time.YearMonth; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varsel.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varsel.java similarity index 73% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varsel.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varsel.java index b14eb924ea4..313c7368a4d 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varsel.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varsel.java @@ -1,14 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; @Getter @Setter diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varselentitet.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varselentitet.java similarity index 73% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varselentitet.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varselentitet.java index 73abecce19e..a2cdb3a38b5 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/Varselentitet.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varselentitet.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/util/JavaTimeUtil.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/util/JavaTimeUtil.java similarity index 94% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/util/JavaTimeUtil.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/util/JavaTimeUtil.java index 9ae3d537ed8..286a175f226 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/domain/v1/util/JavaTimeUtil.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/util/JavaTimeUtil.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java similarity index 95% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java index baf68db02f5..1eb9ed4c98a 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java @@ -1,11 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.listener; +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.listener; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; - import no.nav.person.pdl.leesah.Personhendelse; import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; - import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.kafka.annotation.KafkaListener; @@ -27,6 +25,7 @@ public class DoedsfallListener { * Behandler også alle hendelser av en gitt hendelsestype. * @param hendelser - Alle konsumerte hendelser fra hendelsesstrømmen */ + /* @KafkaListener(topics = doedsfallTopic) public void getHendelser(List> hendelser) { for (ConsumerRecord hendelse: hendelser){ @@ -40,6 +39,8 @@ public void getHendelser(List> hendelser) } } + */ + /** * Validerer om hendelsen er av ønsket hendelsestype * @param personhendelse - Hendelse/opplysningstype, f.eks: FOLKEREGISTERIDENTIFIKATOR_V1, NAVN_V1, SIVILSTAND_V1, etc. diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java similarity index 96% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java index 4822569213e..0d29e5adf17 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java @@ -1,12 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforhold.service; - +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; - import no.nav.registre.testnorge.levendearbeidsforhold.consumers.AaregConsumer; import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; - import org.springframework.stereotype.Service; import java.time.LocalDate; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/util/CallIdUtil.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/util/CallIdUtil.java new file mode 100644 index 00000000000..0e3d1fdde93 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/util/CallIdUtil.java @@ -0,0 +1,17 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.util; + +import lombok.experimental.UtilityClass; + +import java.util.UUID; + +import static java.lang.String.format; + +@UtilityClass +public final class CallIdUtil { + public static final String HEADER_NAV_CONSUMER_ID = "Nav-Consumer-Id"; + public static final String HEADER_NAV_CALL_ID = "Nav-Call-Id"; + public static final String CONSUMER = "Dolly"; + public static String generateCallId() { + return format("%s-%s", CONSUMER, UUID.randomUUID()); + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application-dev.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application-dev.yml deleted file mode 100644 index 7df314e0e54..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application-dev.yml +++ /dev/null @@ -1,2 +0,0 @@ -kafka: - group-id: testnav-levende-arbeidsforhold-service diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.properties b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.properties new file mode 100644 index 00000000000..a3b6d8c16b2 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=levende-arbeidsforhold-ansettelse diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml deleted file mode 100644 index 381f0bb0fee..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ /dev/null @@ -1,55 +0,0 @@ -AAD_ISSUER_URI: https://login.microsoftonline.com/62366534-1ec3-4962-8869-9b5535279d0b - -spring: - main: - banner-mode: off - application: - name: testnav-levende-arbeidsforhold-service - version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle - description: App for å hente PDL personer. - security: - oauth2: - client: - resourceserver: - aad: - issuer-uri: ${AAD_ISSUER_URI}/v2.0 - jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys - accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} - cloud: - vault: - enabled: false - kafka: - consumer: - group-id: testnav-levende-arbeidsforhold-service -springdoc: - swagger-ui: - disable-swagger-default-url: true - url: /v3/api-docs - -management: - endpoints: - enabled-by-default: true - web: - base-path: /internal - exposure.include: prometheus,heapdump,health - path-mapping: - prometheus: metrics - endpoint: - prometheus.enabled: true - heapdump.enabled: true - prometheus: - metrics: - export: - enabled: true -server: - servlet: - encoding: - charset: UTF-8 - error: - include-message: always -consumers: - testnav-aareg-proxy: - name: testnav-aareg-proxy - namespace: dolly - url: https://testnav-aareg-proxy.dev-fss-pub.nais.io - cluster: dev-fss diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml deleted file mode 100644 index 9583ff2d427..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - true - 256 - 10280 - 20 - ^sun\.reflect\..*\.invoke - ^net\.sf\.cglib\.proxy\.MethodProxy\.invoke - java\.util\.concurrent\..* - org\.apache\.catalina\..* - org\.apache\.coyote\..* - org\.apache\.tomcat\..* - - - - - - - - - - - - - %d{HH:mm:ss.SSS} | %5p | %logger{25} | %m%n - - utf8 - - - - - - - - - \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java b/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java deleted file mode 100644 index 4c6f896873e..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/registre/testnorge/levendearbeidsforhold/ApplicationContextTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforhold; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.security.oauth2.jwt.JwtDecoder; -import org.springframework.test.context.ActiveProfiles; - -@SpringBootTest -@ActiveProfiles("test") -class ApplicationContextTest { - - @MockBean - public JwtDecoder jwtDecoder; - - @Test - @SuppressWarnings("java:S2699") - void load_app_context() { - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplicationTests.java b/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplicationTests.java new file mode 100644 index 00000000000..9e062d42766 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplicationTests.java @@ -0,0 +1,13 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class LevendeArbeidsforholdAnsettelseApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/test/resources/application-test.properties b/apps/levende-arbeidsforhold-ansettelse/src/test/resources/application-test.properties deleted file mode 100644 index e5e55886152..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/test/resources/application-test.properties +++ /dev/null @@ -1 +0,0 @@ -TOKEN_X_ISSUER=dummy \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/utility/CallIdUtil.java b/apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/utility/CallIdUtil.java similarity index 100% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/utility/CallIdUtil.java rename to apps/levende-arbeidsforhold-service/src/main/java/no/nav/registre/testnorge/levendearbeidsforhold/utility/CallIdUtil.java From df9e55dfef4023fcf92d3dbf1d1834ee8dc6135d Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 07:01:04 +0200 Subject: [PATCH 123/161] Fikset i imports --- .../consumers/AaregConsumer.java | 8 ++++---- .../consumers/command/EndreArbeidsforholdCommand.java | 2 +- .../consumers/command/HentArbeidsforholdCommand.java | 2 +- .../listener/DoedsfallListener.java | 2 +- .../service/ArbeidsforholdService.java | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java index 28e86414ab8..483a1d2ebce 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java @@ -2,10 +2,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; -import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.EndreArbeidsforholdCommand; -import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.config.Consumers; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command.EndreArbeidsforholdCommand; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command.HentArbeidsforholdCommand; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; import org.springframework.http.MediaType; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java index 2b449a14a42..6b6a92b876e 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java @@ -3,7 +3,7 @@ import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.commands.utils.WebClientFilter; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java index da00d9687bd..889edf40918 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java @@ -3,7 +3,7 @@ import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.commands.utils.WebClientFilter; import no.nav.testnav.libs.servletcore.headers.NavHeaders; import org.springframework.http.HttpHeaders; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java index 1eb9ed4c98a..a8735848ad1 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java @@ -3,7 +3,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.person.pdl.leesah.Personhendelse; -import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.service.ArbeidsforholdService; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.kafka.annotation.KafkaListener; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java index 0d29e5adf17..27f0def6072 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java @@ -2,8 +2,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.consumers.AaregConsumer; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.AaregConsumer; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; import org.springframework.stereotype.Service; import java.time.LocalDate; From fbd33e6f0018cf6c4b26e87f48e43247ea91a63b Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 07:01:52 +0200 Subject: [PATCH 124/161] Fjernet ubrukte imports --- .../listener/DoedsfallListener.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java index a8735848ad1..0a962e8af5f 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java @@ -2,15 +2,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.person.pdl.leesah.Personhendelse; import no.nav.testnorge.apps.levendearbeidsforholdansettelse.service.ArbeidsforholdService; -import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; -import java.util.List; - @Slf4j @Component @RequiredArgsConstructor From e69a75f145dedbfd0f195f9ab6c5ed35ba35fbef Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 07:05:06 +0200 Subject: [PATCH 125/161] Fikset domain import paths --- .../domain/v1/AntallTimerForTimeloennet.java | 2 +- .../domain/v1/Arbeidsavtale.java | 2 +- .../domain/v1/Arbeidsforhold.java | 2 +- .../domain/v1/Arbeidsforholdoversikt.java | 2 +- .../levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java | 2 +- .../apps/levendearbeidsforholdansettelse/domain/v1/Periode.java | 2 +- .../domain/v1/Sporingsinformasjon.java | 2 +- .../domain/v1/Utenlandsopphold.java | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java index 1b2e99c2d61..a9875112b1d 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.YearMonth; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java index 46faa332253..3e7e9020f4d 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java @@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.experimental.SuperBuilder; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDate; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java index ca47180dd28..437a842904f 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDateTime; import java.util.List; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java index 574c0684893..e1156c8f740 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java index 0eab6c1d4b7..3cdef463a8a 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java index 96bb9ab4c50..021950c0cf3 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java @@ -7,7 +7,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.experimental.SuperBuilder; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDate; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java index 23ab23fb6d0..4e846a94dcc 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java index 33b81015ee9..20b592321e2 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.YearMonth; From b638060d3075414ba6970b2e0c9580d88a7df549 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 07:08:47 +0200 Subject: [PATCH 126/161] Sletter DoedsfallListener.java --- .../listener/DoedsfallListener.java | 48 ------------------- 1 file changed, 48 deletions(-) delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java deleted file mode 100644 index 0a962e8af5f..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java +++ /dev/null @@ -1,48 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.listener; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.service.ArbeidsforholdService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Slf4j -@Component -@RequiredArgsConstructor -public class DoedsfallListener { - private static final String doedsfallTopic = "pdl.leesah-v1"; - @Autowired - private final ArbeidsforholdService arbeidsforholdService; - private final String oensketHendelsestype = "DOEDSFALL_V1"; - - /** - * Lytter til og konsumerer hendelser fra Kafka hendelsesstrømmen på et gitt topic. - * Behandler også alle hendelser av en gitt hendelsestype. - * @param hendelser - Alle konsumerte hendelser fra hendelsesstrømmen - */ - /* - @KafkaListener(topics = doedsfallTopic) - public void getHendelser(List> hendelser) { - for (ConsumerRecord hendelse: hendelser){ - - String aktoerId = hendelse.key().split("\u001A")[1]; - String hendelsestype = hendelse.value().get(4).toString(); - - if (validerHendelse(hendelsestype)){ - arbeidsforholdService.arbeidsforholdService(aktoerId); - } - } - } - - */ - - /** - * Validerer om hendelsen er av ønsket hendelsestype - * @param personhendelse - Hendelse/opplysningstype, f.eks: FOLKEREGISTERIDENTIFIKATOR_V1, NAVN_V1, SIVILSTAND_V1, etc. - * @return true dersom det er av ønsket hendelsestype, false hvis ikke - */ - private Boolean validerHendelse(String personhendelse) { - return personhendelse.equals(oensketHendelsestype); - } -} - From c6cb10cb4794c9c9edbbd7ef18212d366d98abcb Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 07:14:55 +0200 Subject: [PATCH 127/161] Legger til application.yml og logback-spring.xml som manglet --- .../src/main/resources/application.yml | 56 +++++++++++++++++++ .../src/main/resources/logback-spring.xml | 40 +++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml new file mode 100644 index 00000000000..3d5d20b0cac --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -0,0 +1,56 @@ +AAD_ISSUER_URI: https://login.microsoftonline.com/62366534-1ec3-4962-8869-9b5535279d0b + +spring: + main: + banner-mode: off + application: + name: testnav-levende-arbeidsforhold-service + version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle + description: App for å hente PDL personer. + security: + oauth2: + client: + resourceserver: + aad: + issuer-uri: ${AAD_ISSUER_URI}/v2.0 + jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys + accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} + cloud: + vault: + enabled: false + kafka: + consumer: + group-id: testnav-levende-arbeidsforhold-service +springdoc: + swagger-ui: + disable-swagger-default-url: true + url: /v3/api-docs + +management: + endpoints: + enabled-by-default: true + web: + base-path: /internal + exposure.include: prometheus,heapdump,health + path-mapping: + prometheus: metrics + endpoint: + prometheus.enabled: true + heapdump.enabled: true + prometheus: + metrics: + export: + enabled: true +server: + servlet: + encoding: + charset: UTF-8 + error: + include-message: always +consumers: + testnav-aareg-proxy: + name: testnav-aareg-proxy + namespace: dolly + url: https://testnav-aareg-proxy.dev-fss-pub.nais.io + cluster: dev-fss + diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml new file mode 100644 index 00000000000..5afe492963c --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml @@ -0,0 +1,40 @@ + + + + + + + true + 256 + 10280 + 20 + ^sun\.reflect\..*\.invoke + ^net\.sf\.cglib\.proxy\.MethodProxy\.invoke + java\.util\.concurrent\..* + org\.apache\.catalina\..* + org\.apache\.coyote\..* + org\.apache\.tomcat\..* + + + + + + + + + + + + + %d{HH:mm:ss.SSS} | %5p | %logger{25} | %m%n + + utf8 + + + + + + + + + From d48fc747a13c21de3cbc2a700ac64cf0f0168afa Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 07:18:40 +0200 Subject: [PATCH 128/161] =?UTF-8?q?Endret=20navn=20p=C3=A5=20prosjekt=20i?= =?UTF-8?q?=20application.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml index 3d5d20b0cac..25acc22b68c 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -4,7 +4,7 @@ spring: main: banner-mode: off application: - name: testnav-levende-arbeidsforhold-service + name: testnav-levende-arbeidsforhold-ansettelse version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle description: App for å hente PDL personer. security: @@ -20,7 +20,7 @@ spring: enabled: false kafka: consumer: - group-id: testnav-levende-arbeidsforhold-service + group-id: testnav-levende-arbeidsforhold-ansettelse springdoc: swagger-ui: disable-swagger-default-url: true From 5d089cb6c41ce760f8c8c7dc15d7017a75026b8e Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 08:37:53 +0200 Subject: [PATCH 129/161] Laget MVP av Tenor consumer --- .../build.gradle | 1 + .../consumers/TenorConsumer.java | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java diff --git a/apps/levende-arbeidsforhold-ansettelse/build.gradle b/apps/levende-arbeidsforhold-ansettelse/build.gradle index 0034005aa97..f37f15394f4 100644 --- a/apps/levende-arbeidsforhold-ansettelse/build.gradle +++ b/apps/levende-arbeidsforhold-ansettelse/build.gradle @@ -10,6 +10,7 @@ test { useJUnitPlatform() } + sonarqube { properties { property "sonar.dynamicAnalysis", "reuseReports" diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java new file mode 100644 index 00000000000..b25e4ad6445 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java @@ -0,0 +1,22 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.annotation.Bean; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.WebClient; + +@Slf4j +@Component +public class TenorConsumer { + private static final String TENOR_DOMAIN = "https://vg.no";//"https://testnav-tenor-search-service.intern.dev.nav.no"; + + @EventListener(ApplicationReadyEvent.class) + public void buildRequest(){ + WebClient request = WebClient.builder().baseUrl(TENOR_DOMAIN).build(); + String response = request.get().retrieve().bodyToMono(String.class).block(); + log.info(response); + } + +} From b92bf5997e562149a9836d61c09ff77fbf395fa0 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 07:01:04 +0200 Subject: [PATCH 130/161] Fikset i imports --- .../consumers/AaregConsumer.java | 8 ++++---- .../consumers/command/EndreArbeidsforholdCommand.java | 2 +- .../consumers/command/HentArbeidsforholdCommand.java | 2 +- .../listener/DoedsfallListener.java | 2 +- .../service/ArbeidsforholdService.java | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java index 28e86414ab8..483a1d2ebce 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java @@ -2,10 +2,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.config.Consumers; -import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.EndreArbeidsforholdCommand; -import no.nav.registre.testnorge.levendearbeidsforhold.consumers.command.HentArbeidsforholdCommand; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.config.Consumers; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command.EndreArbeidsforholdCommand; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command.HentArbeidsforholdCommand; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; import org.springframework.http.MediaType; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java index 2b449a14a42..6b6a92b876e 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java @@ -3,7 +3,7 @@ import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.commands.utils.WebClientFilter; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java index da00d9687bd..889edf40918 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java @@ -3,7 +3,7 @@ import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.commands.utils.WebClientFilter; import no.nav.testnav.libs.servletcore.headers.NavHeaders; import org.springframework.http.HttpHeaders; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java index 1eb9ed4c98a..a8735848ad1 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java @@ -3,7 +3,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.person.pdl.leesah.Personhendelse; -import no.nav.registre.testnorge.levendearbeidsforhold.service.ArbeidsforholdService; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.service.ArbeidsforholdService; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.kafka.annotation.KafkaListener; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java index 0d29e5adf17..27f0def6072 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java @@ -2,8 +2,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforhold.consumers.AaregConsumer; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.Arbeidsforhold; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.AaregConsumer; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; import org.springframework.stereotype.Service; import java.time.LocalDate; From 6e7b88897ffe5904f1b4a460d937b87cb8a778e2 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 07:01:52 +0200 Subject: [PATCH 131/161] Fjernet ubrukte imports --- .../listener/DoedsfallListener.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java index a8735848ad1..0a962e8af5f 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java @@ -2,15 +2,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.person.pdl.leesah.Personhendelse; import no.nav.testnorge.apps.levendearbeidsforholdansettelse.service.ArbeidsforholdService; -import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; -import java.util.List; - @Slf4j @Component @RequiredArgsConstructor From f5b21c6a04f27d118ff14d9ab40e5b72b565b796 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 07:05:06 +0200 Subject: [PATCH 132/161] Fikset domain import paths --- .../domain/v1/AntallTimerForTimeloennet.java | 2 +- .../domain/v1/Arbeidsavtale.java | 2 +- .../domain/v1/Arbeidsforhold.java | 2 +- .../domain/v1/Arbeidsforholdoversikt.java | 2 +- .../levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java | 2 +- .../apps/levendearbeidsforholdansettelse/domain/v1/Periode.java | 2 +- .../domain/v1/Sporingsinformasjon.java | 2 +- .../domain/v1/Utenlandsopphold.java | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java index 1b2e99c2d61..a9875112b1d 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.YearMonth; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java index 46faa332253..3e7e9020f4d 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java @@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.experimental.SuperBuilder; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDate; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java index ca47180dd28..437a842904f 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDateTime; import java.util.List; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java index 574c0684893..e1156c8f740 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java index 0eab6c1d4b7..3cdef463a8a 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java index 96bb9ab4c50..021950c0cf3 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java @@ -7,7 +7,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.experimental.SuperBuilder; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDate; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java index 23ab23fb6d0..4e846a94dcc 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java index 33b81015ee9..20b592321e2 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforhold.domain.v1.util.JavaTimeUtil; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.YearMonth; From 5c8ef620ba89e0d19fca3c89989b3bf7ed2cf5c3 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 07:08:47 +0200 Subject: [PATCH 133/161] Sletter DoedsfallListener.java --- .../listener/DoedsfallListener.java | 48 ------------------- 1 file changed, 48 deletions(-) delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java deleted file mode 100644 index 0a962e8af5f..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/listener/DoedsfallListener.java +++ /dev/null @@ -1,48 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.listener; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.service.ArbeidsforholdService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Slf4j -@Component -@RequiredArgsConstructor -public class DoedsfallListener { - private static final String doedsfallTopic = "pdl.leesah-v1"; - @Autowired - private final ArbeidsforholdService arbeidsforholdService; - private final String oensketHendelsestype = "DOEDSFALL_V1"; - - /** - * Lytter til og konsumerer hendelser fra Kafka hendelsesstrømmen på et gitt topic. - * Behandler også alle hendelser av en gitt hendelsestype. - * @param hendelser - Alle konsumerte hendelser fra hendelsesstrømmen - */ - /* - @KafkaListener(topics = doedsfallTopic) - public void getHendelser(List> hendelser) { - for (ConsumerRecord hendelse: hendelser){ - - String aktoerId = hendelse.key().split("\u001A")[1]; - String hendelsestype = hendelse.value().get(4).toString(); - - if (validerHendelse(hendelsestype)){ - arbeidsforholdService.arbeidsforholdService(aktoerId); - } - } - } - - */ - - /** - * Validerer om hendelsen er av ønsket hendelsestype - * @param personhendelse - Hendelse/opplysningstype, f.eks: FOLKEREGISTERIDENTIFIKATOR_V1, NAVN_V1, SIVILSTAND_V1, etc. - * @return true dersom det er av ønsket hendelsestype, false hvis ikke - */ - private Boolean validerHendelse(String personhendelse) { - return personhendelse.equals(oensketHendelsestype); - } -} - From 15a59631b63c709f19154f7826d1cb5500fbea13 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 07:14:55 +0200 Subject: [PATCH 134/161] Legger til application.yml og logback-spring.xml som manglet --- .../src/main/resources/application.yml | 56 +++++++++++++++++++ .../src/main/resources/logback-spring.xml | 40 +++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml new file mode 100644 index 00000000000..3d5d20b0cac --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -0,0 +1,56 @@ +AAD_ISSUER_URI: https://login.microsoftonline.com/62366534-1ec3-4962-8869-9b5535279d0b + +spring: + main: + banner-mode: off + application: + name: testnav-levende-arbeidsforhold-service + version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle + description: App for å hente PDL personer. + security: + oauth2: + client: + resourceserver: + aad: + issuer-uri: ${AAD_ISSUER_URI}/v2.0 + jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys + accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} + cloud: + vault: + enabled: false + kafka: + consumer: + group-id: testnav-levende-arbeidsforhold-service +springdoc: + swagger-ui: + disable-swagger-default-url: true + url: /v3/api-docs + +management: + endpoints: + enabled-by-default: true + web: + base-path: /internal + exposure.include: prometheus,heapdump,health + path-mapping: + prometheus: metrics + endpoint: + prometheus.enabled: true + heapdump.enabled: true + prometheus: + metrics: + export: + enabled: true +server: + servlet: + encoding: + charset: UTF-8 + error: + include-message: always +consumers: + testnav-aareg-proxy: + name: testnav-aareg-proxy + namespace: dolly + url: https://testnav-aareg-proxy.dev-fss-pub.nais.io + cluster: dev-fss + diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml new file mode 100644 index 00000000000..5afe492963c --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml @@ -0,0 +1,40 @@ + + + + + + + true + 256 + 10280 + 20 + ^sun\.reflect\..*\.invoke + ^net\.sf\.cglib\.proxy\.MethodProxy\.invoke + java\.util\.concurrent\..* + org\.apache\.catalina\..* + org\.apache\.coyote\..* + org\.apache\.tomcat\..* + + + + + + + + + + + + + %d{HH:mm:ss.SSS} | %5p | %logger{25} | %m%n + + utf8 + + + + + + + + + From 113463f79be0bb4e437a44807b5cc9ba231d1c11 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 07:18:40 +0200 Subject: [PATCH 135/161] =?UTF-8?q?Endret=20navn=20p=C3=A5=20prosjekt=20i?= =?UTF-8?q?=20application.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml index 3d5d20b0cac..25acc22b68c 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -4,7 +4,7 @@ spring: main: banner-mode: off application: - name: testnav-levende-arbeidsforhold-service + name: testnav-levende-arbeidsforhold-ansettelse version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle description: App for å hente PDL personer. security: @@ -20,7 +20,7 @@ spring: enabled: false kafka: consumer: - group-id: testnav-levende-arbeidsforhold-service + group-id: testnav-levende-arbeidsforhold-ansettelse springdoc: swagger-ui: disable-swagger-default-url: true From a77de09325e87460a9b0ebd3c5b8d8f5cb043404 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 08:37:53 +0200 Subject: [PATCH 136/161] Laget MVP av Tenor consumer --- .../build.gradle | 1 + .../consumers/TenorConsumer.java | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java diff --git a/apps/levende-arbeidsforhold-ansettelse/build.gradle b/apps/levende-arbeidsforhold-ansettelse/build.gradle index 0034005aa97..f37f15394f4 100644 --- a/apps/levende-arbeidsforhold-ansettelse/build.gradle +++ b/apps/levende-arbeidsforhold-ansettelse/build.gradle @@ -10,6 +10,7 @@ test { useJUnitPlatform() } + sonarqube { properties { property "sonar.dynamicAnalysis", "reuseReports" diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java new file mode 100644 index 00000000000..b25e4ad6445 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java @@ -0,0 +1,22 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.annotation.Bean; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.WebClient; + +@Slf4j +@Component +public class TenorConsumer { + private static final String TENOR_DOMAIN = "https://vg.no";//"https://testnav-tenor-search-service.intern.dev.nav.no"; + + @EventListener(ApplicationReadyEvent.class) + public void buildRequest(){ + WebClient request = WebClient.builder().baseUrl(TENOR_DOMAIN).build(); + String response = request.get().retrieve().bodyToMono(String.class).block(); + log.info(response); + } + +} From c38c73369796041659bd8c5c3b754de280278ba8 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 9 Jul 2024 11:55:52 +0200 Subject: [PATCH 137/161] Fungerer ikke --- .../Dockerfile | 8 ++ .../config.yml | 54 +++++++++++ .../config/ApplicationConfig.java | 15 +++ .../config/Consumers.java | 29 ++++++ .../config/DevConfig.java | 36 ++++++++ .../config/KafkaConfig.java | 92 +++++++++++++++++++ .../config/OpenApiConfig.java | 54 +++++++++++ .../config/SecurityConfig.java | 39 ++++++++ .../src/main/resources/application-dev.yml | 2 + .../src/main/resources/application.yml | 55 +++++++++++ .../src/main/resources/logback-spring.xml | 40 ++++++++ .../resources/application-test.properties | 1 + 12 files changed, 425 insertions(+) create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/Dockerfile create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/config.yml create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/ApplicationConfig.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/Consumers.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/DevConfig.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/KafkaConfig.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/OpenApiConfig.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/SecurityConfig.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application-dev.yml create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application.yml create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/logback-spring.xml create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/test/resources/application-test.properties diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/Dockerfile b/apps/levende-arbeidsforhold-ansettelse-v2/Dockerfile new file mode 100644 index 00000000000..4a36f93546f --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/Dockerfile @@ -0,0 +1,8 @@ +FROM ghcr.io/navikt/baseimages/temurin:21 +LABEL maintainer="Team Dolly" + +ENV JAVA_OPTS="-Dspring.profiles.active=prod" + +ADD /build/libs/app.jar /app/app.jar + +EXPOSE 8080 diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/config.yml b/apps/levende-arbeidsforhold-ansettelse-v2/config.yml new file mode 100644 index 00000000000..2613eed9693 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/config.yml @@ -0,0 +1,54 @@ +apiVersion: "nais.io/v1alpha1" +kind: "Application" +metadata: + name: testnav-levende-arbeidsforhold-ansettelse-v2 + namespace: dolly + labels: + team: dolly +spec: + image: "{{image}}" + port: 8080 + accessPolicy: + inbound: + rules: + - application: team-dolly-lokal-app + cluster: dev-gcp + - application: testnav-oversikt-frontend + cluster: dev-gcp + outbound: + external: + - host: testnav-aareg-proxy.dev-fss-pub.nais.io + rules: + - application: testnav-levende-arbeidsforhold-ansettelse-v2 + cluster: dev-gcp + azure: + application: + allowAllUsers: true + enabled: true + tenant: nav.no + liveness: + path: /internal/isAlive + initialDelay: 4 + periodSeconds: 5 + failureThreshold: 500 + readiness: + path: /internal/isReady + initialDelay: 4 + periodSeconds: 5 + failureThreshold: 500 + prometheus: + enabled: true + path: /internal/metrics + replicas: + min: 1 + max: 1 + resources: + requests: + cpu: 200m + memory: 1024Mi + limits: + memory: 2048Mi + kafka: + pool: nav-dev + ingresses: + - "https://testnav-levende-arbeidsforhold-ansettelse-v2.intern.dev.nav.no" diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/ApplicationConfig.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/ApplicationConfig.java new file mode 100644 index 00000000000..136e5473695 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/ApplicationConfig.java @@ -0,0 +1,15 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config; + +import no.nav.testnav.libs.servletcore.config.ApplicationCoreConfig; +import no.nav.testnav.libs.standalone.servletsecurity.config.InsecureJwtServerToServerConfiguration; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@Import({ + ApplicationCoreConfig.class, + InsecureJwtServerToServerConfiguration.class +}) +public class ApplicationConfig { + +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/Consumers.java new file mode 100644 index 00000000000..89457a5b48f --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/Consumers.java @@ -0,0 +1,29 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import static lombok.AccessLevel.PACKAGE; + +/** + * Samler alle placeholders for ulike {@code consumers.*}-konfigurasjon her, dvs. subklasser av {@code ServerProperties}. + *

+ * Husk at Spring Boot bruker
relaxed binding + * mellom configuration properties og field names. + * + * @see ServerProperties + */ +@Configuration +@ConfigurationProperties(prefix = "consumers") +@NoArgsConstructor(access = PACKAGE) +@Getter +@Setter(PACKAGE) +public class Consumers { + + private ServerProperties testnavAaregProxy; + +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/DevConfig.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/DevConfig.java new file mode 100644 index 00000000000..7bacdf94364 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/DevConfig.java @@ -0,0 +1,36 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.vault.annotation.VaultPropertySource; +import org.springframework.vault.authentication.ClientAuthentication; +import org.springframework.vault.authentication.TokenAuthentication; +import org.springframework.vault.client.VaultEndpoint; +import org.springframework.vault.config.AbstractVaultConfiguration; + +import static io.micrometer.common.util.StringUtils.isBlank; + +@Configuration +@Profile("dev") +@VaultPropertySource(value = "secret/dolly/lokal", ignoreSecretNotFound = false) +public class DevConfig extends AbstractVaultConfiguration { + + private static final String VAULT_TOKEN = "spring.cloud.vault.token"; + + @Override + public VaultEndpoint vaultEndpoint() { + return VaultEndpoint.create("vault.adeo.no", 443); + } + + @Override + public ClientAuthentication clientAuthentication() { + if (System.getenv().containsKey("VAULT_TOKEN")) { + System.setProperty(VAULT_TOKEN, System.getenv("VAULT_TOKEN")); + } + var token = System.getProperty(VAULT_TOKEN); + if (isBlank(token)) { + throw new IllegalArgumentException("Påkrevet property 'spring.cloud.vault.token' er ikke satt."); + } + return new TokenAuthentication(System.getProperty(VAULT_TOKEN)); + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/KafkaConfig.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/KafkaConfig.java new file mode 100644 index 00000000000..5a7cd6cca7a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/KafkaConfig.java @@ -0,0 +1,92 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config; + + +import io.confluent.kafka.serializers.AbstractKafkaSchemaSerDeConfig; +import io.confluent.kafka.serializers.KafkaAvroDeserializer; +import io.confluent.kafka.serializers.KafkaAvroDeserializerConfig; +import lombok.extern.slf4j.Slf4j; +import org.apache.kafka.clients.CommonClientConfigs; +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.common.config.SslConfigs; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.kafka.annotation.EnableKafka; +import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; +import org.springframework.kafka.core.ConsumerFactory; +import org.springframework.kafka.core.DefaultKafkaConsumerFactory; +import org.springframework.kafka.listener.CommonLoggingErrorHandler; + +import java.net.InetSocketAddress; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@EnableKafka +@Configuration +@Profile({"dev", "prod"}) +public class KafkaConfig { + + private final String groupId; + + public KafkaConfig(@Value("${spring.kafka.consumer.group-id}") String groupId) { + this.groupId = groupId; + } + + public ConsumerFactory consumerFactory() { + + String randomSuffixGroupID = String.valueOf((int)(Math.random() * 1000)); + + InetSocketAddress inetSocketAddress = new InetSocketAddress(0); + Map props = new HashMap<>(); + props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, System.getenv("KAFKA_BROKERS")); + props.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, System.getenv("KAFKA_KEYSTORE_PATH")); + props.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, System.getenv("KAFKA_CREDSTORE_PASSWORD")); + props.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, System.getenv("KAFKA_TRUSTSTORE_PATH")); + props.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, System.getenv("KAFKA_CREDSTORE_PASSWORD")); + props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SSL"); + props.put(KafkaAvroDeserializerConfig.SPECIFIC_AVRO_READER_CONFIG, true); + + props.put(AbstractKafkaSchemaSerDeConfig.BASIC_AUTH_CREDENTIALS_SOURCE, "USER_INFO"); + var username = System.getenv("KAFKA_SCHEMA_REGISTRY_USER"); + var password = System.getenv("KAFKA_SCHEMA_REGISTRY_PASSWORD"); + + props.put(AbstractKafkaSchemaSerDeConfig.USER_INFO_CONFIG, username + ":" + password); + props.put(AbstractKafkaSchemaSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, System.getenv("KAFKA_SCHEMA_REGISTRY")); + + props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId + randomSuffixGroupID); + props.put(ConsumerConfig.CLIENT_ID_CONFIG, groupId + inetSocketAddress.getHostString()); + props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, true); + props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest"); + props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); + props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 1000 * 60 * 10); + props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class); + + return new DefaultKafkaConsumerFactory<>(props); + } + + @Bean + public ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory() { + + ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory<>(); + var consumerFactory = consumerFactory(); + consumerFactory.addListener(new ConsumerFactory.Listener<>() { + @Override + public void consumerAdded(String id, Consumer consumer) { + log.info("Legger til consumer med id: {}", id); + } + + @Override + public void consumerRemoved(String id, Consumer consumer) { + log.warn("Fjerner consumer med id: {}. Restarter app...", id); + } + }); + factory.setBatchListener(true); + factory.setConsumerFactory(consumerFactory); + factory.setCommonErrorHandler(new CommonLoggingErrorHandler()); + return factory; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/OpenApiConfig.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/OpenApiConfig.java new file mode 100644 index 00000000000..ac7cff0f8b5 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/OpenApiConfig.java @@ -0,0 +1,54 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Contact; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import no.nav.testnav.libs.servletcore.config.ApplicationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.util.Arrays; + +@Configuration +public class OpenApiConfig implements WebMvcConfigurer { + + @Bean + public OpenAPI openApi(ApplicationProperties applicationProperties) { + return new OpenAPI() + .components(new Components().addSecuritySchemes("bearer-jwt", new SecurityScheme() + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("JWT") + .in(SecurityScheme.In.HEADER) + .name("Authorization") + )) + .addSecurityItem( + new SecurityRequirement().addList("bearer-jwt", Arrays.asList("read", "write"))) + .info(new Info() + .title(applicationProperties.getName()) + .version(applicationProperties.getVersion()) + .description(applicationProperties.getDescription()) + .termsOfService("https://nav.no") + .contact(new Contact() + .url("https://nav-it.slack.com/archives/CA3P9NGA2") + .email("dolly@nav.no") + .name("Team Dolly") + ) + .license(new License() + .name("MIT License") + .url("https://opensource.org/licenses/MIT") + ) + ); + } + + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/swagger").setViewName("redirect:/swagger-ui.html"); + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/SecurityConfig.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/SecurityConfig.java new file mode 100644 index 00000000000..3664008f1ce --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/SecurityConfig.java @@ -0,0 +1,39 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.security.config.Customizer; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.web.SecurityFilterChain; + +@EnableWebSecurity +@Configuration +@Profile({ "prod", "dev" }) +public class SecurityConfig { + + @Bean + @SuppressWarnings("java:S4502") + public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { + + httpSecurity.sessionManagement(sessionConfig -> sessionConfig.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) + .csrf(AbstractHttpConfigurer::disable) + .authorizeHttpRequests(authorizeConfig -> authorizeConfig.requestMatchers( + "/internal/**", + "/webjars/**", + "/swagger-resources/**", + "/v3/api-docs/**", + "/swagger-ui/**", + "/swagger", + "/error", + "/swagger-ui.html" + ).permitAll().requestMatchers("/api/**").fullyAuthenticated()) + .oauth2ResourceServer(oauth2RSConfig -> oauth2RSConfig.jwt(Customizer.withDefaults())); + + return httpSecurity.build(); + } +} + diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application-dev.yml b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application-dev.yml new file mode 100644 index 00000000000..0fdd40aa1fc --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application-dev.yml @@ -0,0 +1,2 @@ +kafka: + group-id: testnav-levende-arbeidsforhold-ansettelse-v2 diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application.yml new file mode 100644 index 00000000000..a100820fa47 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application.yml @@ -0,0 +1,55 @@ +AAD_ISSUER_URI: https://login.microsoftonline.com/62366534-1ec3-4962-8869-9b5535279d0b + +spring: + main: + banner-mode: off + application: + name: testnav-levende-arbeidsforhold-ansettelse-v2 + version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle + description: App for å hente PDL personer. + security: + oauth2: + client: + resourceserver: + aad: + issuer-uri: ${AAD_ISSUER_URI}/v2.0 + jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys + accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} + cloud: + vault: + enabled: false + kafka: + consumer: + group-id: testnav-levende-arbeidsforhold-ansettelse-v2 +springdoc: + swagger-ui: + disable-swagger-default-url: true + url: /v3/api-docs + +management: + endpoints: + enabled-by-default: true + web: + base-path: /internal + exposure.include: prometheus,heapdump,health + path-mapping: + prometheus: metrics + endpoint: + prometheus.enabled: true + heapdump.enabled: true + prometheus: + metrics: + export: + enabled: true +server: + servlet: + encoding: + charset: UTF-8 + error: + include-message: always +consumers: + testnav-aareg-proxy: + name: testnav-aareg-proxy + namespace: dolly + url: https://testnav-aareg-proxy.dev-fss-pub.nais.io + cluster: dev-fss diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/logback-spring.xml b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/logback-spring.xml new file mode 100644 index 00000000000..9583ff2d427 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/logback-spring.xml @@ -0,0 +1,40 @@ + + + + + + + true + 256 + 10280 + 20 + ^sun\.reflect\..*\.invoke + ^net\.sf\.cglib\.proxy\.MethodProxy\.invoke + java\.util\.concurrent\..* + org\.apache\.catalina\..* + org\.apache\.coyote\..* + org\.apache\.tomcat\..* + + + + + + + + + + + + + %d{HH:mm:ss.SSS} | %5p | %logger{25} | %m%n + + utf8 + + + + + + + + + \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/test/resources/application-test.properties b/apps/levende-arbeidsforhold-ansettelse-v2/src/test/resources/application-test.properties new file mode 100644 index 00000000000..e5e55886152 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/test/resources/application-test.properties @@ -0,0 +1 @@ +TOKEN_X_ISSUER=dummy \ No newline at end of file From 5fba5423522372493bea42d47ae2b6238fed9e0a Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Tue, 9 Jul 2024 13:13:20 +0200 Subject: [PATCH 138/161] =?UTF-8?q?Spring=20fungerer=20=C3=A5=20kj=C3=B8re?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md | 26 ++ .../build.gradle | 94 +++++++ .../gradlew | 234 ++++++++++++++++++ .../gradlew.bat | 89 +++++++ .../gradlewUpdate.sh | 3 + .../settings.gradle | 24 ++ ...ArbeidsforholdAnsettelseV2Application.java | 13 + .../config/KafkaConfig.java | 4 +- .../consumers/AaregConsumer.java | 74 ++++++ .../command/EndreArbeidsforholdCommand.java | 54 ++++ .../command/HentArbeidsforholdCommand.java | 73 ++++++ .../domain/v1/Ansettelsesperiode.java | 41 +++ .../domain/v1/AntallTimerForTimeloennet.java | 53 ++++ .../domain/v1/Arbeidsavtale.java | 99 ++++++++ .../domain/v1/Arbeidsavtaletype.java | 9 + .../domain/v1/Arbeidsforhold.java | 120 +++++++++ .../domain/v1/Arbeidsforholdoversikt.java | 106 ++++++++ .../ArbeidsgiverArbeidsforholdoversikter.java | 41 +++ .../domain/v1/Arbeidsgiveroversikt.java | 31 +++ .../domain/v1/Bruksperiode.java | 68 +++++ ...orenkletOppgjoersordningArbeidsavtale.java | 38 +++ .../domain/v1/FrilanserArbeidsavtale.java | 38 +++ .../domain/v1/Gyldighetsperiode.java | 19 ++ .../domain/v1/MaritimArbeidsavtale.java | 50 ++++ .../v1/OpplysningspliktigArbeidsgiver.java | 24 ++ .../OpplysningspliktigArbeidsgiverType.java | 6 + .../domain/v1/OrdinaerArbeidsavtale.java | 38 +++ .../domain/v1/Organisasjon.java | 31 +++ .../domain/v1/Periode.java | 68 +++++ .../domain/v1/PermisjonPermittering.java | 41 +++ .../domain/v1/Person.java | 35 +++ .../domain/v1/Persontype.java | 6 + .../domain/v1/README.md | 6 + .../domain/v1/Sporingsinformasjon.java | 86 +++++++ .../domain/v1/Utenlandsopphold.java | 55 ++++ .../domain/v1/Varsel.java | 28 +++ .../domain/v1/Varselentitet.java | 11 + .../domain/v1/util/JavaTimeUtil.java | 38 +++ ...dsforholdAnsettelseV2ApplicationTests.java | 13 + settings.gradle | 1 + 40 files changed, 1887 insertions(+), 1 deletion(-) create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/README.md create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/build.gradle create mode 100755 apps/levende-arbeidsforhold-ansettelse-v2/gradlew create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/gradlew.bat create mode 100755 apps/levende-arbeidsforhold-ansettelse-v2/gradlewUpdate.sh create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/settings.gradle create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2Application.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/AaregConsumer.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/EndreArbeidsforholdCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentArbeidsforholdCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Ansettelsesperiode.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/AntallTimerForTimeloennet.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtaletype.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforhold.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforholdoversikt.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsgiveroversikt.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Bruksperiode.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/FrilanserArbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Gyldighetsperiode.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/MaritimArbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiver.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiverType.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OrdinaerArbeidsavtale.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Organisasjon.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Periode.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/PermisjonPermittering.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Person.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Persontype.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/README.md create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Sporingsinformasjon.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Utenlandsopphold.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varsel.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varselentitet.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/util/JavaTimeUtil.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/test/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2ApplicationTests.java diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/README.md b/apps/levende-arbeidsforhold-ansettelse-v2/README.md new file mode 100644 index 00000000000..8f4c27a0910 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/README.md @@ -0,0 +1,26 @@ +# Levende arbeidsforhold-service + +Fyll inn: + +## Swagger + +Swagger finnes under [/swagger](https://levende-arbeidsforhold-service.intern.dev.nav.no/swagger) -endepunktet til +applikasjonen. + +## Lokal kjøring + +Ha naisdevice kjørende og kjør GenererNavnServiceApplicationStarter med følgende argumenter: + +``` +-Dspring.cloud.vault.token=[vault-token] +-Dspring.profiles.active=dev +``` + +### Utviklerimage + +I utviklerimage brukes ikke naisdevice og du må legge til følgende ekstra argumenter: + +``` +-Djavax.net.ssl.trustStore=[path til lokal truststore] +-Djavax.net.ssl.trustStorePassword=[passord til lokal truststore] +``` diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/build.gradle b/apps/levende-arbeidsforhold-ansettelse-v2/build.gradle new file mode 100644 index 00000000000..30be05208fc --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/build.gradle @@ -0,0 +1,94 @@ +plugins { + id 'java' + id "org.sonarqube" version "5.0.0.4638" + id 'org.springframework.boot' version "3.2.6" + id 'io.spring.dependency-management' version "1.1.5" + id "jacoco" +} + +test { + useJUnitPlatform() +} + +sonarqube { + properties { + property "sonar.dynamicAnalysis", "reuseReports" + property "sonar.host.url", "https://sonarcloud.io" + property "sonar.java.coveragePlugin", "jacoco" + property "sonar.language", "java" + property "sonar.token", System.getenv("SONAR_TOKEN") + property "sonar.organization", "navikt" + property "sonar.project.monorepo.enabled", true + property "sonar.projectKey", "testnav-levende-arbeidsforhold-ansettelse-v2" + property "sonar.projectName", "testnav-levende-arbeidsforhold-ansettelse-v2" + property "sonar.sourceEncoding", "UTF-8" + } +} +bootJar { + archiveFileName = "app.jar" +} + +dependencyManagement { + applyMavenExclusions = false + imports { + mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2023.0.1' + } +} + +repositories { + mavenCentral() + mavenLocal() + maven { + url = uri('https://packages.confluent.io/maven/') + } +} + +dependencies { + implementation "no.nav.testnav.libs:kafka-config" + implementation 'no.nav.testnav.libs:security-core' + implementation 'no.nav.testnav.libs:reactive-core' + implementation 'no.nav.testnav.libs:servlet-core' + implementation 'no.nav.testnav.libs:commands' + implementation 'no.nav.testnav.libs:data-transfer-objects' + implementation 'no.nav.testnav.libs:servlet-security' + + implementation 'org.springframework.boot:spring-boot-starter-webflux' + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' + implementation 'org.springframework.boot:spring-boot-starter-security' + + implementation 'org.springframework.cloud:spring-cloud-starter-vault-config' + implementation 'org.springframework.boot:spring-boot-starter-actuator' + + implementation 'io.micrometer:micrometer-registry-prometheus' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' + implementation 'io.swagger.core.v3:swagger-annotations-jakarta:2.2.21' + + implementation 'net.logstash.logback:logstash-logback-encoder:7.4' + implementation 'org.hibernate.validator:hibernate-validator' + + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'org.springframework.cloud:spring-cloud-contract-wiremock' + + implementation 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' + testAnnotationProcessor 'org.projectlombok:lombok' + + implementation 'no.nav.testnav.libs:kafka-config' + implementation 'org.apache.kafka:kafka-clients:3.7.0' + implementation 'io.confluent:kafka-avro-serializer:7.6.0' + implementation 'org.springframework.kafka:spring-kafka' + + implementation 'no.nav.testnav.libs:avro-schema' + implementation 'no.nav.testnav.libs:commands' + implementation 'no.nav.testnav.libs:data-transfer-objects' + implementation 'no.nav.testnav.libs:kafka-config' + implementation 'no.nav.testnav.libs:security-core' + implementation 'no.nav.testnav.libs:servlet-insecure-security' + implementation 'no.nav.testnav.libs:servlet-core' +} +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/gradlew b/apps/levende-arbeidsforhold-ansettelse-v2/gradlew new file mode 100755 index 00000000000..3da45c161b0 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright ? 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions ?$var?, ?${var}?, ?${var:-default}?, ?${var+SET}?, +# ?${var#prefix}?, ?${var%suffix}?, and ?$( cmd )?; +# * compound commands having a testable exit status, especially ?case?; +# * various built-in commands including ?command?, ?set?, and ?ulimit?. +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/gradlew.bat b/apps/levende-arbeidsforhold-ansettelse-v2/gradlew.bat new file mode 100644 index 00000000000..107acd32c4e --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/gradlewUpdate.sh b/apps/levende-arbeidsforhold-ansettelse-v2/gradlewUpdate.sh new file mode 100755 index 00000000000..e5ee6361152 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/gradlewUpdate.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +gradle wrapper \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/settings.gradle b/apps/levende-arbeidsforhold-ansettelse-v2/settings.gradle new file mode 100644 index 00000000000..ba04c4f9f5d --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/settings.gradle @@ -0,0 +1,24 @@ +plugins { + id "com.gradle.develocity" version "3.17.4" +} + +rootProject.name = 'testnav-levende-arbeidsforhold-ansettelse-v2' + +includeBuild "../../libs/kafka-config" +includeBuild "../../libs/avro-schema" +includeBuild '../../libs/security-core' +includeBuild '../../libs/servlet-core' +includeBuild '../../libs/reactive-core' +includeBuild '../../libs/commands' +includeBuild '../../libs/data-transfer-objects' +includeBuild '../../libs/servlet-security' +includeBuild '../../libs/servlet-insecure-security' +includeBuild '../../libs/testing' +includeBuild '../../.github/workflows' + +develocity { + buildScan { + termsOfUseUrl = "https://gradle.com/terms-of-service" + termsOfUseAgree = "yes" + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2Application.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2Application.java new file mode 100644 index 00000000000..4c59e39e771 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2Application.java @@ -0,0 +1,13 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class LevendeArbeidsforholdAnsettelseV2Application { + + public static void main(String[] args) { + SpringApplication.run(LevendeArbeidsforholdAnsettelseV2Application.class, args); + } + +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/KafkaConfig.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/KafkaConfig.java index 5a7cd6cca7a..d6ad3f4494a 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/KafkaConfig.java @@ -29,7 +29,7 @@ @Configuration @Profile({"dev", "prod"}) public class KafkaConfig { - +/* private final String groupId; public KafkaConfig(@Value("${spring.kafka.consumer.group-id}") String groupId) { @@ -89,4 +89,6 @@ public void consumerRemoved(String id, Consumer consumer) { factory.setCommonErrorHandler(new CommonLoggingErrorHandler()); return factory; } + + */ } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/AaregConsumer.java new file mode 100644 index 00000000000..0520de8cb79 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/AaregConsumer.java @@ -0,0 +1,74 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers; + +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config.Consumers; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.command.HentArbeidsforholdCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.command.EndreArbeidsforholdCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.Arbeidsforhold; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; +import org.springframework.http.MediaType; +import org.springframework.http.codec.json.Jackson2JsonDecoder; +import org.springframework.http.codec.json.Jackson2JsonEncoder; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.ExchangeStrategies; +import org.springframework.web.reactive.function.client.WebClient; + +import java.util.ArrayList; +import java.util.List; + +import static java.util.Objects.nonNull; + +@Slf4j +@Component +public class AaregConsumer { + + private final WebClient webClient; + private final ServerProperties serverProperties; + private final TokenExchange tokenExchange; + + public AaregConsumer( + Consumers consumers, + TokenExchange tokenExchange, + ObjectMapper objectMapper) { + + this.serverProperties = consumers.getTestnavAaregProxy(); + this.tokenExchange = tokenExchange; + + ExchangeStrategies jacksonStrategy = ExchangeStrategies + .builder() + .codecs( + config -> { + config + .defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + config + .defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + }) + .build(); + + this.webClient = WebClient + .builder() + .exchangeStrategies(jacksonStrategy) + .baseUrl(serverProperties.getUrl()) + .build(); + } + + public List hentArbeidsforhold(String ident) { + var token = tokenExchange.exchange(serverProperties).block(); + if (nonNull(token)) { + return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); + } + return new ArrayList<>(); + } + + public void endreArbeidsforhold(Arbeidsforhold requests) { + var token = tokenExchange.exchange(serverProperties).block(); + if (nonNull(token)) { + new EndreArbeidsforholdCommand(webClient, requests, token.getTokenValue()).call(); + } + } +} + diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/EndreArbeidsforholdCommand.java new file mode 100644 index 00000000000..9285f02d67d --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/EndreArbeidsforholdCommand.java @@ -0,0 +1,54 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.command; + +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.Arbeidsforhold; +import no.nav.testnav.libs.commands.utils.WebClientFilter; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.web.reactive.function.BodyInserters; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; +import reactor.util.retry.Retry; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.concurrent.Callable; + +@Slf4j +@RequiredArgsConstructor +public class EndreArbeidsforholdCommand implements Callable> { + private final WebClient webClient; + private final Arbeidsforhold requests; + private final String token; + private final String miljoe = "q2"; + private final String navArbeidsforholdKilde = "Dolly-doedsfall-hendelse" ; + + @SneakyThrows + @Override + public Mono call() { + + Mono request = webClient + .put() + .uri(builder -> builder.path("/{miljoe}/api/v1/arbeidsforhold/{navArbeidsforholdId}") + .build(miljoe, requests.getNavArbeidsforholdId())) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) + .header("Nav-Arbeidsforhold-Periode", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"))) + .body(BodyInserters.fromValue(requests)) + .retrieve() + .bodyToMono(Arbeidsforhold.class) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .map(arbeidsforhold1 -> Arbeidsforhold.builder().build()); + + request.subscribe(response -> {}, error -> log.error("Feil ved endring av arbeidsforhold: {}", error.getMessage())); + + return request; + } +} + + diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentArbeidsforholdCommand.java new file mode 100644 index 00000000000..e5dee357cc7 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentArbeidsforholdCommand.java @@ -0,0 +1,73 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.command; + +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.Arbeidsforhold; +import no.nav.testnav.libs.commands.utils.WebClientFilter; +import no.nav.testnav.libs.servletcore.headers.NavHeaders; +import org.springframework.http.HttpHeaders; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import reactor.util.retry.Retry; + +import java.time.Duration; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.stream.Collectors; + +import static java.lang.String.format; + + +@Slf4j +@RequiredArgsConstructor +public class HentArbeidsforholdCommand implements Callable> { + private final WebClient webClient; + private final String token; + private final String ident; + private final String miljoe = "q2"; + private static final String NAV_PERSON_IDENT = "Nav-Personident"; + private static final String CONSUMER = "Dolly"; + + + private static String getNavCallId() { + return format("%s %s", CONSUMER, UUID.randomUUID()); + } + + @SneakyThrows + @Override + public List call(){ + + try { + var arbeidsforhold = webClient + .get() + .uri(builder -> builder + .path("/{miljoe}/api/v1/arbeidstaker/arbeidsforhold") + .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") + .build(miljoe)) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .header(NAV_PERSON_IDENT, ident) + .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) + .header(NavHeaders.NAV_CALL_ID, getNavCallId()) + .retrieve() + .bodyToMono(Arbeidsforhold[].class) + .retryWhen(Retry + .backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .block(); + + return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); + } catch (WebClientResponseException.NotFound e) { + return Collections.emptyList(); + } catch (WebClientResponseException e) { + log.error( + "Klarer ikke å hente arbeidsforhold. Feilmelding: {}.", + e.getResponseBodyAsString() + ); + throw e; + } + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Ansettelsesperiode.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Ansettelsesperiode.java new file mode 100644 index 00000000000..564fabfd53c --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Ansettelsesperiode.java @@ -0,0 +1,41 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "periode", + "sluttaarsak", + "varslingskode", + "bruksperiode", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon knyttet til ansettelsesperioden") +public class Ansettelsesperiode { + + private Periode periode; + + @Schema(description = "Årsak for avsluttet ansettelsesperiode (kodeverk: Slutt%C3%A5rsakAareg)", example = "arbeidstakerHarSagtOppSelv") + private String sluttaarsak; + + @Schema(description = "Varslingskode (kodeverk: Varslingskode_5fAa-registeret) - benyttes hvis ansettelsesperiode er lukket maskinelt", example = "ERKONK") + private String varslingskode; + + private Bruksperiode bruksperiode; + + private Sporingsinformasjon sporingsinformasjon; + + @Override + public String toString() { + return ("Ansettelsesforhold: [" + periode.toString() + ", " + sluttaarsak + ", " + varslingskode); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/AntallTimerForTimeloennet.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/AntallTimerForTimeloennet.java new file mode 100644 index 00000000000..af3e210af29 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/AntallTimerForTimeloennet.java @@ -0,0 +1,53 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; + +import java.time.YearMonth; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "periode", + "antallTimer", + "rapporteringsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon om antall timer med timelønn") +public class AntallTimerForTimeloennet { + + private Periode periode; + + @Schema(description = "Antall timer", example = "37.5") + private Double antallTimer; + + private YearMonth rapporteringsperiode; + + private Sporingsinformasjon sporingsinformasjon; + + @JsonIgnore + public YearMonth getRapporteringsperiode() { + return rapporteringsperiode; + } + + @JsonProperty("rapporteringsperiode") + @Schema(description = "Rapporteringsperiode for antall timer med timelønn, format (ISO-8601): yyyy-MM", example = "2018-05") + public String getRapporteringsperiodeAsString() { + return JavaTimeUtil.toString(rapporteringsperiode); + } + + @JsonProperty("rapporteringsperiode") + public void setRapporteringsperiodeAsString(String rapporteringsperiode) { + this.rapporteringsperiode = JavaTimeUtil.toYearMonth(rapporteringsperiode); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtale.java new file mode 100644 index 00000000000..36c9c0a9884 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtale.java @@ -0,0 +1,99 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.*; +import io.swagger.v3.oas.annotations.media.DiscriminatorMapping; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import lombok.experimental.SuperBuilder; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDate; + +@Getter +@Setter +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode +@ToString +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + property = "type" +) +@JsonSubTypes({ + @JsonSubTypes.Type(value = OrdinaerArbeidsavtale.class, name = OrdinaerArbeidsavtale.TYPE), + @JsonSubTypes.Type(value = MaritimArbeidsavtale.class, name = MaritimArbeidsavtale.TYPE), + @JsonSubTypes.Type(value = ForenkletOppgjoersordningArbeidsavtale.class, name = ForenkletOppgjoersordningArbeidsavtale.TYPE), + @JsonSubTypes.Type(value = FrilanserArbeidsavtale.class, name = FrilanserArbeidsavtale.TYPE) +}) +@Schema(description = "Informasjon om arbeidsavtale/ansettelsesdetaljer", + discriminatorProperty = "type", + discriminatorMapping = { + @DiscriminatorMapping(value = OrdinaerArbeidsavtale.TYPE, schema = OrdinaerArbeidsavtale.class), + @DiscriminatorMapping(value = MaritimArbeidsavtale.TYPE, schema = MaritimArbeidsavtale.class), + @DiscriminatorMapping(value = ForenkletOppgjoersordningArbeidsavtale.TYPE, schema = ForenkletOppgjoersordningArbeidsavtale.class), + @DiscriminatorMapping(value = FrilanserArbeidsavtale.TYPE, schema = FrilanserArbeidsavtale.class) + } +) +public abstract class Arbeidsavtale implements Arbeidsavtaletype { + + @Schema(description = "Arbeidstidsordning (kodeverk: Arbeidstidsordninger)", example = "ikkeSkift") + private String arbeidstidsordning; + + @Schema(description = "Ansettelsesform (kodeverk: AnsettelsesformAareg)", example = "fast") + private String ansettelsesform; + + @Schema(description = "Yrke (kodeverk: Yrker)", example = "2130123") + private String yrke; + + @Schema(description = "Stillingsprosent", example = "49.5") + private Double stillingsprosent; + + @Schema(description = "Antall timer per uke", example = "37.5") + private Double antallTimerPrUke; + + @Schema(description = "Beregnet antall timer per uke", example = "37.5") + private Double beregnetAntallTimerPrUke; + + @Schema(description = "Dato for siste lønnsendring, format (ISO-8601): yyyy-MM-dd", example = "2014-07-15") + private LocalDate sistLoennsendring; + + @Schema(description = "Dato for siste stillingsendring, format (ISO-8601): yyyy-MM-dd", example = "2015-12-15") + private LocalDate sistStillingsendring; + + private Bruksperiode bruksperiode; + + private Gyldighetsperiode gyldighetsperiode; + + private Sporingsinformasjon sporingsinformasjon; + + @JsonIgnore + public LocalDate getSistLoennsendring() { + return sistLoennsendring; + } + + @JsonIgnore + public LocalDate getSistStillingsendring() { + return sistStillingsendring; + } + + @JsonProperty("sistLoennsendring") + public String getSistLoennsendringAsString() { + return JavaTimeUtil.toString(sistLoennsendring); + } + + @JsonProperty("sistLoennsendring") + public void setSistLoennsendringAsString(String sistLoennsendring) { + this.sistLoennsendring = JavaTimeUtil.toLocalDate(sistLoennsendring); + } + + @JsonProperty("sistStillingsendring") + public String getSistStillingsendringAsString() { + return JavaTimeUtil.toString(sistStillingsendring); + } + + @JsonProperty("sistStillingsendring") + public void setSistStillingsendringAsString(String sistStillingsendring) { + this.sistStillingsendring = JavaTimeUtil.toLocalDate(sistStillingsendring); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtaletype.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtaletype.java new file mode 100644 index 00000000000..f3f4d628cec --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtaletype.java @@ -0,0 +1,9 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import io.swagger.v3.oas.annotations.media.Schema; + +public interface Arbeidsavtaletype { + + @Schema(description = "Type for arbeidsavtale", allowableValues = "Ordinaer,Maritim,Forenklet,Frilanser") + String getType(); +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforhold.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforhold.java new file mode 100644 index 00000000000..366ab075090 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforhold.java @@ -0,0 +1,120 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "navArbeidsforholdId", + "arbeidsforholdId", + "arbeidstaker", + "arbeidsgiver", + "opplysningspliktig", + "type", + "ansettelsesperiode", + "arbeidsavtaler", + "permisjonPermitteringer", + "antallTimerForTimeloennet", + "utenlandsopphold", + "varsler", + "innrapportertEtterAOrdningen", + "registrert", + "sistBekreftet", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon om arbeidsforhold") +@SuppressWarnings({"pmd:TooManyFields", "fb-contrib:CC_CYCLOMATIC_COMPLEXITY"}) +public class Arbeidsforhold { + + @Schema(description = "Arbeidsforhold-id i AAREG", example = "123456") + private Long navArbeidsforholdId; + + @Schema(description = "Arbeidsforhold-id fra opplysningspliktig", example = "abc-321") + private String arbeidsforholdId; + + private LocalDateTime registrert; + + private Person arbeidstaker; + + private OpplysningspliktigArbeidsgiver arbeidsgiver; + + private OpplysningspliktigArbeidsgiver opplysningspliktig; + + @Schema(description = "Arbeidsforholdtype (kodeverk: Arbeidsforholdtyper)", example = "ordinaertArbeidsforhold") + private String type; + + private Ansettelsesperiode ansettelsesperiode; + + @Schema(description = "Liste av arbeidsavtaler - gjeldende og evt. med historikk") + private List arbeidsavtaler; + + @Schema(description = "Liste av permisjoner og/eller permitteringer") + private List permisjonPermitteringer; + + @Schema(description = "Liste av antall timer med timelønn") + private List antallTimerForTimeloennet; + + @Schema(description = "Liste av utenlandsopphold") + private List utenlandsopphold; + + @Schema(description = "Liste av unike varsler for ulike entiter") + private List varsler; + + @Schema(description = "Er arbeidsforholdet innrapportert via a-ordningen?") + private Boolean innrapportertEtterAOrdningen; + + private LocalDateTime sistBekreftet; + + private Sporingsinformasjon sporingsinformasjon; + + @JsonIgnore + public LocalDateTime getRegistrert() { + return registrert; + } + + @JsonProperty("registrert") + @Schema(description = "Tidspunkt for registrering av arbeidsforhold, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-18T11:12:29") + public String getRegistrertAsString() { + return JavaTimeUtil.toString(registrert); + } + + @JsonProperty("registrert") + public void setRegistrertAsString(String registrert) { + this.registrert = JavaTimeUtil.toLocalDateTime(registrert); + } + + @JsonIgnore + public LocalDateTime getSistBekreftet() { + return sistBekreftet; + } + + @JsonProperty("sistBekreftet") + @Schema(description = "Tidspunkt for siste bekreftelse av arbeidsforhold, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:10:31") + public String getSistBekreftetAsString() { + return JavaTimeUtil.toString(sistBekreftet); + } + + @JsonProperty("sistBekreftet") + public void setSistBekreftetAsString(String sistBekreftet) { + this.sistBekreftet = JavaTimeUtil.toLocalDateTime(sistBekreftet); + } + + @Override + public String toString() { + return ("Arbeidsforhold: [" + navArbeidsforholdId + ", " + arbeidsforholdId + ", " + ansettelsesperiode + ", " + arbeidsavtaler); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforholdoversikt.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforholdoversikt.java new file mode 100644 index 00000000000..84da39b4e21 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforholdoversikt.java @@ -0,0 +1,106 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "navArbeidsforholdId", + "arbeidstaker", + "arbeidsgiver", + "opplysningspliktig", + "type", + "ansattFom", + "ansattTom", + "yrke", + "stillingsprosent", + "permisjonPermitteringsprosent", + "innrapportertEtterAOrdningen", + "sistBekreftet", + "varsler" +}) +@Schema(description = "Informasjon om arbeidsforhold (overordnet)") +@SuppressWarnings("fb-contrib:CC_CYCLOMATIC_COMPLEXITY") +public class Arbeidsforholdoversikt { + + @Schema(description = "Arbeidsforhold-id i AAREG", example = "123456") + private Long navArbeidsforholdId; + + private Person arbeidstaker; + + private OpplysningspliktigArbeidsgiver arbeidsgiver; + + private OpplysningspliktigArbeidsgiver opplysningspliktig; + + @Schema(description = "Arbeidsforholdtype (kodeverk: Arbeidsforholdtyper)", example = "ordinaertArbeidsforhold") + private String type; + + private LocalDate ansattFom; + + private LocalDate ansattTom; + + @Schema(description = "Yrke (kodeverk: Yrker)", example = "2130123") + private String yrke; + + @Schema(description = "Stillingsprosent", example = "49.5") + private Double stillingsprosent; + + @Schema(description = "Prosent for permisjon eller permittering (aggregert)", example = "50.5") + private Double permisjonPermitteringsprosent; + + @Schema(description = "Er arbeidsforholdet innrapportert via a-ordningen?") + private Boolean innrapportertEtterAOrdningen; + + private LocalDateTime sistBekreftet; + + @Schema(description = "Liste av unike varsler for ulike entiter") + private List varsler; + + @JsonIgnore + public LocalDate getAnsattFom() { + return ansattFom; + } + + @JsonProperty("ansattFom") + @Schema(description = "Fra-og-med-dato for ansettelsesperiode, format (ISO-8601): yyyy-MM-dd", example = "2014-07-01") + public String getAnsattFomAsString() { + return JavaTimeUtil.toString(ansattFom); + } + + @JsonIgnore + public LocalDate getAnsattTom() { + return ansattTom; + } + + @JsonProperty("ansattTom") + @Schema(description = "Til-og-med-dato for ansettelsesperiode, format (ISO-8601): yyyy-MM-dd", example = "2015-12-31") + public String getAnsattTomAsString() { + return JavaTimeUtil.toString(ansattTom); + } + + @JsonIgnore + public LocalDateTime getSistBekreftet() { + return sistBekreftet; + } + + @JsonProperty("sistBekreftet") + @Schema(description = "Tidspunkt for siste bekreftelse av arbeidsforhold, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:10:31") + public String getSistBekreftetAsString() { + return JavaTimeUtil.toString(sistBekreftet); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java new file mode 100644 index 00000000000..c161fd852ce --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java @@ -0,0 +1,41 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "arbeidsforholdoversikter", + "startrad", + "antall", + "totalAntall" +}) +@Schema(description = """ + Resultatobjekt for finn-arbeidsforholdoversikter-per-arbeidsgiver + + Arbeidsforholdoversikter er filtrert grunnet tilgangskontroll hvis størrelse på liste er mindre enn (total) antall (forutsatt at antall- og/eller startrad-filter ikke er angitt)""" +) +public class ArbeidsgiverArbeidsforholdoversikter { + + @Schema(description = "Liste av arbeidsforholdoversikter") + private List arbeidsforholdoversikter; + + @Schema(description = "Nummer for første rad i resultatsett (ikke angitt hvis antall er 0)") + private Integer startrad; + + @Schema(description = "Antall arbeidsforholdoversikter i resultatsett - der det er siste resultatsett hvis antall er mindre enn forespurt antall") + private Integer antall; + + @Schema(description = "Total antall arbeidsforholdoversikter") + private Integer totalAntall; +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsgiveroversikt.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsgiveroversikt.java new file mode 100644 index 00000000000..413f5232899 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsgiveroversikt.java @@ -0,0 +1,31 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "arbeidsgiver", + "aktiveArbeidsforhold", + "inaktiveArbeidsforhold" +}) +@Schema(description = "Informasjon knyttet til arbeidsgiver (overordnet)") +public class Arbeidsgiveroversikt { + + private OpplysningspliktigArbeidsgiver arbeidsgiver; + + @Schema(description = "Antall aktive arbeidsforhold, dvs. de som har en gjeldende ansettelsesperiode") + private Integer aktiveArbeidsforhold; + + @Schema(description = "Antall inaktive arbeidsforhold, dvs. de som har en historisk ansettelsesperiode") + private Integer inaktiveArbeidsforhold; + +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Bruksperiode.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Bruksperiode.java new file mode 100644 index 00000000000..168052b07a0 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Bruksperiode.java @@ -0,0 +1,68 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDateTime; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "fom", + "tom" +}) +@Schema(description = "Inneholder informasjon om bruksperiode til objektet") +public class Bruksperiode { + + private LocalDateTime fom; + + private LocalDateTime tom; + + @JsonIgnore + public LocalDateTime getFom() { + return fom; + } + + @JsonIgnore + public LocalDateTime getTom() { + return tom; + } + + @JsonProperty("fom") + @Schema(description = "Fra-tidsstempel for bruksperiode, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2015-01-06T21:44:04.748") + public String getFomAsString() { + return JavaTimeUtil.toString(fom); + } + + @JsonProperty("fom") + public void setFomAsString(String fom) { + this.fom = JavaTimeUtil.toLocalDateTime(fom); + } + + @JsonProperty("tom") + @Schema(description = "Til-tidsstempel for bruksperiode, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2015-12-06T19:45:04") + public String getTomAsString() { + return JavaTimeUtil.toString(tom); + } + + @JsonProperty("tom") + public void setTomAsString(String tom) { + this.tom = JavaTimeUtil.toLocalDateTime(tom); + } + + @Override + @SuppressWarnings({"pmd:ConsecutiveLiteralAppends", "pmd:ConsecutiveAppendsShouldReuse", "fb-contrib:UCPM_USE_CHARACTER_PARAMETERIZED_METHOD", "pmd:AppendCharacterWithChar"}) + public String toString() { + return "Bruksperiode{" + "fom=" + getFomAsString() + ", tom=" + getTomAsString() + "}"; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java new file mode 100644 index 00000000000..7ad8eb042bd --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@JsonPropertyOrder({ + "arbeidstidsordning", + "ansettelsesform", + "yrke", + "stillingsprosent", + "antallTimerPrUke", + "beregnetAntallTimerPrUke", + "sistLoennsendring", + "sistStillingsendring", + "bruksperiode", + "gyldighetsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for forenklet oppgjørsordning arbeidsforhold") +public class ForenkletOppgjoersordningArbeidsavtale extends Arbeidsavtale { + + public static final String TYPE = "Forenklet"; + + @Override + @JsonIgnore + public String getType() { + return TYPE; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/FrilanserArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/FrilanserArbeidsavtale.java new file mode 100644 index 00000000000..cf52a682b61 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/FrilanserArbeidsavtale.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@JsonPropertyOrder({ + "arbeidstidsordning", + "ansettelsesform", + "yrke", + "stillingsprosent", + "antallTimerPrUke", + "beregnetAntallTimerPrUke", + "sistLoennsendring", + "sistStillingsendring", + "bruksperiode", + "gyldighetsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for frilanser arbeidsforhold", allOf = Arbeidsavtale.class) +public class FrilanserArbeidsavtale extends Arbeidsavtale { + + public static final String TYPE = "Frilanser"; + + @Override + @JsonIgnore + public String getType() { + return TYPE; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Gyldighetsperiode.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Gyldighetsperiode.java new file mode 100644 index 00000000000..cb8b0c4c2e6 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Gyldighetsperiode.java @@ -0,0 +1,19 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public class Gyldighetsperiode extends Periode { + + @Override + @SuppressWarnings({"pmd:ConsecutiveLiteralAppends", "pmd:ConsecutiveAppendsShouldReuse", "fb-contrib:UCPM_USE_CHARACTER_PARAMETERIZED_METHOD", "pmd:AppendCharacterWithChar"}) + public String toString() { + return "Gyldighetsperiode{" + "fom=" + getFomAsString() + ", tom=" + getTomAsString() + "}"; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/MaritimArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/MaritimArbeidsavtale.java new file mode 100644 index 00000000000..ba073db2aac --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/MaritimArbeidsavtale.java @@ -0,0 +1,50 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import lombok.experimental.SuperBuilder; + +@Getter +@Setter +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@JsonPropertyOrder({ + "fartsomraade", + "skipsregister", + "fartoeystype", + "arbeidstidsordning", + "ansettelsesform", + "yrke", + "stillingsprosent", + "antallTimerPrUke", + "beregnetAntallTimerPrUke", + "sistLoennsendring", + "sistStillingsendring", + "bruksperiode", + "gyldighetsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for maritime arbeidsforhold", allOf = Arbeidsavtale.class) +public class MaritimArbeidsavtale extends Arbeidsavtale { + + public static final String TYPE = "Maritim"; + + @Schema(description = "Fartsområde (kodeverk: Fartsomraader)", example = "utenriks") + private String fartsomraade; + + @Schema(description = "Skipsregister (kodeverk: Skipsregistre)", example = "nis") + private String skipsregister; + + @Schema(description = "Skipstype (kodeverk: Skipstyper)", example = "turist") + private String skipstype; + + @Override + @JsonIgnore + public String getType() { + return TYPE; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiver.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiver.java new file mode 100644 index 00000000000..42af1706f12 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiver.java @@ -0,0 +1,24 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + property = "type" +) +@JsonSubTypes({ + @JsonSubTypes.Type(value = Organisasjon.class, name = "Organisasjon"), + @JsonSubTypes.Type(value = Person.class, name = "Person") +}) +@Schema(description = "Informasjon om opplysningspliktig eller arbeidsgiver (organisasjon eller person)", oneOf = {Organisasjon.class, Person.class}) +@SuppressWarnings("squid:S1610") +public abstract class OpplysningspliktigArbeidsgiver { + + public abstract String getType(); +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiverType.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiverType.java new file mode 100644 index 00000000000..190de4866e1 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiverType.java @@ -0,0 +1,6 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +public interface OpplysningspliktigArbeidsgiverType { + + String getType(); +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OrdinaerArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OrdinaerArbeidsavtale.java new file mode 100644 index 00000000000..db2d18ca556 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OrdinaerArbeidsavtale.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@JsonPropertyOrder({ + "arbeidstidsordning", + "ansettelsesform", + "yrke", + "stillingsprosent", + "antallTimerPrUke", + "beregnetAntallTimerPrUke", + "sistLoennsendring", + "sistStillingsendring", + "bruksperiode", + "gyldighetsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for ordinære arbeidsforhold", allOf = Arbeidsavtale.class) +public class OrdinaerArbeidsavtale extends Arbeidsavtale { + + public static final String TYPE = "Ordinaer"; + + @Override + @JsonIgnore + public String getType() { + return TYPE; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Organisasjon.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Organisasjon.java new file mode 100644 index 00000000000..4c0eef5d677 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Organisasjon.java @@ -0,0 +1,31 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "type", + "organisasjonsnummer" +}) +@Schema(description = "Informasjon om organisasjon (arbeidsgiver/opplysningspliktig)") +public class Organisasjon extends OpplysningspliktigArbeidsgiver implements OpplysningspliktigArbeidsgiverType { + + @Schema(description = "Organisasjonsnummer fra Enhetsregisteret", example = "987654321") + private String organisasjonsnummer; + + @Override + @JsonIgnore + public String getType() { + return this.getClass().getSimpleName(); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Periode.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Periode.java new file mode 100644 index 00000000000..0459ba1d4a7 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Periode.java @@ -0,0 +1,68 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import lombok.experimental.SuperBuilder; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; +import java.time.LocalDate; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "fom", + "tom" +}) +@Schema(description = "Inneholder informasjon om periode") +public class Periode { + + private LocalDate fom; + + private LocalDate tom; + + @JsonIgnore + public LocalDate getFom() { + return fom; + } + + @JsonIgnore + public LocalDate getTom() { + return tom; + } + + @JsonProperty("fom") + @Schema(description = "Fra-og-med-dato for periode, format (ISO-8601): yyyy-MM-dd", example = "2014-07-01") + public String getFomAsString() { + return JavaTimeUtil.toString(fom); + } + + @JsonProperty("fom") + public void setFomAsString(String fom) { + this.fom = JavaTimeUtil.toLocalDate(fom); + } + + @JsonProperty("tom") + @Schema(description = "Til-og-med-dato for periode, format (ISO-8601): yyyy-MM-dd", example = "2015-12-31") + public String getTomAsString() { + return JavaTimeUtil.toString(tom); + } + + @JsonProperty("tom") + public void setTomAsString(String tom) { + this.tom = JavaTimeUtil.toLocalDate(tom); + } + + @Override + @SuppressWarnings({"pmd:ConsecutiveLiteralAppends", "pmd:ConsecutiveAppendsShouldReuse", "fb-contrib:UCPM_USE_CHARACTER_PARAMETERIZED_METHOD", "pmd:AppendCharacterWithChar"}) + public String toString() { + return "Periode{" + "fom=" + getFomAsString() + ", tom=" + getTomAsString() + "}"; + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/PermisjonPermittering.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/PermisjonPermittering.java new file mode 100644 index 00000000000..83d3888cba3 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/PermisjonPermittering.java @@ -0,0 +1,41 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "permisjonPermitteringId", + "periode", + "prosent", + "type", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon om permisjon eller permittering") +public class PermisjonPermittering { + + @Schema(description = "Id fra opplysningspliktig", example = "123-xyz") + private String permisjonPermitteringId; + + private Periode periode; + + @Schema(description = "Prosent for permisjon eller permittering", example = "50.5") + private Double prosent; + + @Schema(description = "Permisjon-/permitteringstype (kodeverk: PermisjonsOgPermitteringsBeskrivelse)", example = "permisjonMedForeldrepenger") + private String type; + + @Schema(description = "Varslingskode (kodeverk: Varslingskode_5fAa-registeret) - benyttes hvis permisjon/permittering er lukket maskinelt") + private String varslingskode; + + @Schema(description = "Informasjon om opprettelse og endring av objekt") + private Sporingsinformasjon sporingsinformasjon; +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Person.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Person.java new file mode 100644 index 00000000000..55cbd709e63 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Person.java @@ -0,0 +1,35 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "type", + "offentligIdent", + "aktoerId" +}) +@Schema(description = "Informasjon om person (arbeidstaker/arbeidsgiver/opplysningspliktig)") +public class Person extends OpplysningspliktigArbeidsgiver implements Persontype { + + @Schema(description = "Gjeldende offentlig ident", example = "31126700000") + private String offentligIdent; + + @Schema(description = "Aktør-id", example = "1234567890") + private String aktoerId; + + @Override + @JsonIgnore + public String getType() { + return this.getClass().getSimpleName(); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Persontype.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Persontype.java new file mode 100644 index 00000000000..646fb661971 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Persontype.java @@ -0,0 +1,6 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +public interface Persontype { + + String getType(); +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/README.md b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/README.md new file mode 100644 index 00000000000..3df8cc38724 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/README.md @@ -0,0 +1,6 @@ +# /Domain.v1 + +Denne mappen inneholder alle klassene for å hente ut og parse +dokumentene av skjermaet fra [GET](https://aareg-services-q2.intern.dev.nav.no/swagger-ui/index.html#/arbeidstaker/finnArbeidsforholdPrArbeidstaker_1) +og [PUT](https://aareg-vedlikehold-q2.dev.intern.nav.no/swagger-ui/index.html#/arbeidsforhold/endreArbeidsforhold) +endepunktene til AA-reg. Klassene er en eksakt kopi av [AA-reg sin modell](https://github.com/navikt/aareg-services/tree/main/src/main/java/no/nav/aareg/services/provider/rs/api/contract/arbeidsforhold/v1) diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Sporingsinformasjon.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Sporingsinformasjon.java new file mode 100644 index 00000000000..b9664191f65 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Sporingsinformasjon.java @@ -0,0 +1,86 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; + +import java.time.LocalDateTime; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "opprettetTidspunkt", + "opprettetAv", + "opprettetKilde", + "opprettetKildereferanse", + "endretTidspunkt", + "endretAv", + "endretKilde", + "endretKildereferanse" +}) +@Schema(description = "Informasjon om opprettelse og endring av objekt. MERK: Skal IKKE eksponeres i selvbetjeningssonen (SBS).") +public class Sporingsinformasjon { + + private LocalDateTime opprettetTidspunkt; + + @Schema(description = "Brukernavn for opprettelse", example = "srvappserver") + private String opprettetAv; + + @Schema(description = "Kilde for opprettelse", example = "EDAG") + private String opprettetKilde; + + @Schema(description = "Kildereferanse for opprettelse", example = "22a26849-aeef-4b81-9174-e238c11e1081") + private String opprettetKildereferanse; + + private LocalDateTime endretTidspunkt; + + @Schema(description = "Brukernavn for endring", example = "Z990693") + private String endretAv; + + @Schema(description = "Kilde for endring", example = "AAREG") + private String endretKilde; + + @Schema(description = "Kildereferanse for endring", example = "referanse-fra-kilde") + private String endretKildereferanse; + + @JsonIgnore + public LocalDateTime getOpprettetTidspunkt() { + return opprettetTidspunkt; + } + + @JsonIgnore + public LocalDateTime getEndretTidspunkt() { + return endretTidspunkt; + } + + @JsonProperty("opprettetTidspunkt") + @Schema(description = "Tidspunkt for opprettelse, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:10:58.059") + public String getOpprettetTidspunktAsString() { + return JavaTimeUtil.toString(opprettetTidspunkt); + } + + @JsonProperty("opprettetTidspunkt") + public void setOpprettetTidspunktAsString(String opprettetTidspunkt) { + this.opprettetTidspunkt = JavaTimeUtil.toLocalDateTime(opprettetTidspunkt); + } + + @JsonProperty("endretTidspunkt") + @Schema(description = "Tidspunkt for endring, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:11:20.79") + public String getEndretTidspunktAsString() { + return JavaTimeUtil.toString(endretTidspunkt); + } + + @JsonProperty("endretTidspunkt") + public void setEndretTidspunktAsString(String endretTidspunkt) { + this.endretTidspunkt = JavaTimeUtil.toLocalDateTime(endretTidspunkt); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Utenlandsopphold.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Utenlandsopphold.java new file mode 100644 index 00000000000..a75892b9a3a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Utenlandsopphold.java @@ -0,0 +1,55 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; + +import java.time.YearMonth; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "periode", + "landkode", + "rapporteringsperiode", + "sporingsinformasjon" +}) +@Schema(description = "Informasjon om utenlandsopphold") +public class Utenlandsopphold { + + @Schema(description = "Periode for utenlandsopphold") + private Periode periode; + + @Schema(description = "Landkode (kodeverk: Landkoder)", example = "JPN") + private String landkode; + + private YearMonth rapporteringsperiode; + + @Schema(description = "Informasjon om opprettelse og endring av objekt") + private Sporingsinformasjon sporingsinformasjon; + + @JsonIgnore + public YearMonth getRapporteringsperiode() { + return rapporteringsperiode; + } + + @JsonProperty("rapporteringsperiode") + @Schema(description = "Rapporteringsperiode for utenlandsopphold, format (ISO-8601): yyyy-MM", example = "2017-12") + public String getRapporteringsperiodeAsString() { + return JavaTimeUtil.toString(rapporteringsperiode); + } + + @JsonProperty("rapporteringsperiode") + public void setRapporteringsperiodeAsString(String rapporteringsperiode) { + this.rapporteringsperiode = JavaTimeUtil.toYearMonth(rapporteringsperiode); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varsel.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varsel.java new file mode 100644 index 00000000000..01288cb1dd3 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varsel.java @@ -0,0 +1,28 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@EqualsAndHashCode +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonPropertyOrder({ + "entitet", + "type", + "varslingskode" +}) +@Schema(description = "Informasjon om varsel") +public class Varsel { + + @Schema(description = "Entitet for varsel") + private Varselentitet entitet; + + @Schema(description = "Varslingskode (kodeverk: Varslingskode_5fAa-registeret)") + private String varslingskode; +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varselentitet.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varselentitet.java new file mode 100644 index 00000000000..bb9fc4068e0 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varselentitet.java @@ -0,0 +1,11 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; + +import io.swagger.v3.oas.annotations.media.Schema; + +@Schema(description = "Entitet for varsel") +public enum Varselentitet { + + ARBEIDSFORHOLD, + ANSETTELSESPERIODE, + PERMISJONPERMITTERING +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/util/JavaTimeUtil.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/util/JavaTimeUtil.java new file mode 100644 index 00000000000..263567f9513 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/util/JavaTimeUtil.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.YearMonth; +import java.time.format.DateTimeFormatter; + +import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE; +import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME; + +public class JavaTimeUtil { + + private static final String YEAR_MONTH_PATTERN = "yyyy-MM"; + + public static String toString(LocalDate date) { + return date != null ? date.format(ISO_LOCAL_DATE) : null; + } + + public static String toString(LocalDateTime dateTime) { + return dateTime != null ? dateTime.format(ISO_LOCAL_DATE_TIME) : null; + } + + public static String toString(YearMonth yearMonth) { + return yearMonth != null ? yearMonth.format(DateTimeFormatter.ofPattern(YEAR_MONTH_PATTERN)) : null; + } + + public static LocalDate toLocalDate(String date) { + return date != null ? LocalDate.parse(date, ISO_LOCAL_DATE) : null; + } + + public static LocalDateTime toLocalDateTime(String dateTime) { + return dateTime != null ? LocalDateTime.parse(dateTime, ISO_LOCAL_DATE_TIME) : null; + } + + public static YearMonth toYearMonth(String yearMonth) { + return yearMonth != null ? YearMonth.parse(yearMonth, DateTimeFormatter.ofPattern(YEAR_MONTH_PATTERN)) : null; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/test/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2ApplicationTests.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/test/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2ApplicationTests.java new file mode 100644 index 00000000000..41380aa7f47 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/test/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2ApplicationTests.java @@ -0,0 +1,13 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class LevendeArbeidsforholdAnsettelseV2ApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/settings.gradle b/settings.gradle index 6b5d3def7de..39e9ff7e3ab 100644 --- a/settings.gradle +++ b/settings.gradle @@ -126,6 +126,7 @@ includeBuild './apps/varslinger-service' includeBuild './apps/dollystatus' includeBuild './apps/skattekort-service' includeBuild './apps/levende-arbeidsforhold-service' +includeBuild'./apps/levende-arbeidsforhold-ansettelse-v2' includeBuild './xsd/arbeidsforhold-xsd' From a2c48518960d4fc8732cfea4c789fd3519b29d5d Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 15:50:17 +0200 Subject: [PATCH 139/161] Consumer fra riktig domene, legger til riktig klasse som skal parses --- .../build.gradle | 3 +- .../config/Consumers.java | 1 + .../consumers/TenorConsumer.java | 71 ++- .../command/HentPersonerCommand.java | 35 ++ .../domain/tenor/Hendelse.java | 50 ++ .../domain/tenor/Spesifiseringstype.java | 35 ++ .../domain/tenor/TekniskNavn.java | 430 ++++++++++++++++++ .../domain/tenor/TenorOversiktResponse.java | 123 +++++ .../domain/tenor/TenorRawResponse.java | 147 ++++++ .../domain/tenor/TenorRequest.java | 357 +++++++++++++++ .../domain/tenor/TenorResponse.java | 20 + .../mapper/TenorResultMapperService.java | 114 +++++ .../service/TenorPersonService.java | 23 + .../src/main/resources/application.yml | 3 +- 14 files changed, 1400 insertions(+), 12 deletions(-) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/mapper/TenorResultMapperService.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java diff --git a/apps/levende-arbeidsforhold-ansettelse/build.gradle b/apps/levende-arbeidsforhold-ansettelse/build.gradle index f37f15394f4..5569f0d1c95 100644 --- a/apps/levende-arbeidsforhold-ansettelse/build.gradle +++ b/apps/levende-arbeidsforhold-ansettelse/build.gradle @@ -45,7 +45,7 @@ repositories { } dependencies { - implementation "no.nav.testnav.libs:kafka-config" + implementation 'no.nav.testnav.libs:kafka-config' implementation 'no.nav.testnav.libs:security-core' implementation 'no.nav.testnav.libs:reactive-core' implementation 'no.nav.testnav.libs:servlet-core' @@ -87,6 +87,7 @@ dependencies { implementation 'no.nav.testnav.libs:security-core' implementation 'no.nav.testnav.libs:servlet-insecure-security' implementation 'no.nav.testnav.libs:servlet-core' + } java { toolchain { diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java index d08918b83ce..f2a27ba2d5d 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java @@ -25,5 +25,6 @@ public class Consumers { private ServerProperties testnavAaregProxy; + private ServerProperties tenorSearchService; } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java index b25e4ad6445..b8c142e458f 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java @@ -1,22 +1,73 @@ package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.annotation.Bean; -import org.springframework.context.event.EventListener; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.config.Consumers; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command.HentPersonerCommand; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorRawResponse; +import org.springframework.http.MediaType; +import org.springframework.http.codec.json.Jackson2JsonDecoder; +import org.springframework.http.codec.json.Jackson2JsonEncoder; import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.ExchangeStrategies; import org.springframework.web.reactive.function.client.WebClient; +import static java.util.Objects.nonNull; + @Slf4j @Component public class TenorConsumer { - private static final String TENOR_DOMAIN = "https://vg.no";//"https://testnav-tenor-search-service.intern.dev.nav.no"; + private static final String TENOR_DOMAIN = "https://testnav-tenor-search-service.intern.dev.nav.no"; + private final WebClient webClient; + private final TokenExchange tokenExchange; + private final ServerProperties serverProperties; + private final ObjectMapper objectMapper; + + + public TenorConsumer( + TokenExchange tokenExchange, + Consumers consumers, + ObjectMapper objectMapper) { + + this.serverProperties = consumers.getTenorSearchService(); + this.tokenExchange = tokenExchange; + this.objectMapper = objectMapper; - @EventListener(ApplicationReadyEvent.class) - public void buildRequest(){ - WebClient request = WebClient.builder().baseUrl(TENOR_DOMAIN).build(); - String response = request.get().retrieve().bodyToMono(String.class).block(); - log.info(response); + ExchangeStrategies jacksonStrategy = ExchangeStrategies + .builder() + .codecs( + config -> { + config + .defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + config + .defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + }) + .build(); + + this.webClient = WebClient + .builder() + .exchangeStrategies(jacksonStrategy) + .baseUrl(TENOR_DOMAIN) + .build(); } -} + public void consume() throws JsonProcessingException { + System.out.println("Kjører consume"); + var accessToken = tokenExchange.exchange(serverProperties).block(); + System.out.println("Har hentet ut token"); + + if (nonNull(accessToken)) { + var token = accessToken.getTokenValue(); + HentPersonerCommand commander = new HentPersonerCommand(token, webClient); + JsonNode data = commander.hentPersonData(); + var rawResponse = objectMapper.readValue(data.toString(), TenorRawResponse.class); + System.out.println(rawResponse.getDokumentListe().getFirst().getBostedsadresse().toString()); + } + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java new file mode 100644 index 00000000000..ef62213bcec --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java @@ -0,0 +1,35 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorResponse; +import org.springframework.http.HttpHeaders; +import org.springframework.web.reactive.function.client.WebClient; + +@Slf4j +@RequiredArgsConstructor +public class HentPersonerCommand { + private static final String PATH = "/api/v1/tenor/testdata/raw"; + private final String token; + private final WebClient webClient; + + public JsonNode hentPersonData(){ + System.out.println("Henter personer"); + var request = webClient + .get() + .uri(builder -> builder + .path(PATH) + .queryParam("type", "Spesifikt") + .queryParam("fields", "id", "bostedsadresse", "arbeidsforhold") + .build() + ) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .retrieve() + .bodyToMono(TenorResponse.class); + var response = request.block(); + + System.out.println("Fikk respons!"); + return response.getData(); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java new file mode 100644 index 00000000000..1358d4d5c21 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java @@ -0,0 +1,50 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +@SuppressWarnings("java:S115") +public enum Hendelse { + + EndringIAdressebeskyttelse, + EndringIBostedsadresse, + EndringIBostedsadresseUtenFlytting, + EndringIBrukAvSamiskSpraak, + EndringIDeltBosted, + EndringIDoedsfall, + EndringIFalskIdentitet, + EndringIFamilierelasjon, + EndringIFoedsel, + EndringIFoedselINorge, + EndringIForeldreansvar, + EndringIFratattRettsligHandleevne, + EndringIIdentifikasjonsnummer, + EndringIIdentitetsgrunnlag, + EndringIInnflytting, + EndringIKjoenn, + EndringIKontaktinformasjon, + EndringIKontaktopplysningerForDoedsbo, + EndringILegitimasjonsdokument, + EndringINavn, + EndringIOpphold, + EndringIOppholdPaaSvalbard, + EndringIOppholdsadresse, + EndringIPerson, + EndringIRettsligHandleevne, + EndringISametingetsValgmanntall, + EndringISivilstand, + EndringIStatsborgerskap, + EndringIStatus, + EndringIUtenlandskPersonidentifikasjon, + EndringIUtflytting, + EndringIUtlendingsmyndighetenesIdentifikasjonsnummer, + EndringIVergemaal, + PersonErBosatt, + PersonErDoed, + PersonErEndretVedSplitting, + PersonErGjenopprettetVedSplitting, + PersonErOppdatert, + PersonErOpphoert, + PersonErOpphoertSomDublett, + PersonErOpprettet, + PersonErReaktivert, + PersonErUtflyttet, + PersonErViderefoertSomGjeldendeVedSammenslaaing +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java new file mode 100644 index 00000000000..2edbb562948 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java @@ -0,0 +1,35 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +@SuppressWarnings("java:S115") +public enum Spesifiseringstype { + + AksjeIkkeIAksjonaerregisteret, + Aksjesparekonto, + AndreBeloepKnyttetTilBoligOgEiendeler, + AnnenKapitalkostnad, + AnnetFinansprodukt, + DeltakersAndelAvFormueOgInntekt, + Eiendom, + Fondskonto, + Fordring, + FritidsbaatMedSalgsverdiOverSalgsverdigrense, + Generisk, + GrunnlagKnyttetTilLottaker, + KapitalisertFesteavgift, + Kjoeretoey, + KollektivPensjonsordning, + Konto, + Livsforsikring, + LoennOgTilsvarendeYtelser, + Naeringsopplysninger, + ObligasjonOgSertifikat, + OekonomiskeForholdKnyttetTilBoligsameieEllerBoligselskap, + PrivatGjeldsforholdUtenforVirksomhet, + SamletGjeldOgFormuesobjekterINaering, + Skadeforsikring, + SkyldigRestskatt, + SykepengerOgAnnenInntektMvFraOppgavegiver, + Verdipapirfond, + VirtuellEiendel, + VirtuellValuta +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java new file mode 100644 index 00000000000..e6acbc72e70 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java @@ -0,0 +1,430 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +@SuppressWarnings("java:S115") +public enum TekniskNavn { + AaretsFremfoerbareNegativPersoninntekt, + AarsavgiftForKontoIVerdipapirregister, + AlderspensjonFraFolketrygden, + AlderspensjonFraIPAOgIPS, + AlminneligInntektFoerSaerfradrag, + AndelAvFellesgjeldISDF, + AndelAvUnderskuddFraTidligereAarVedDriftAvVaaningshusSomAnvendesIAaret, + AndelIFellesTapVedSalgAvAndelISDF, + AndelIFellesTilleggIAlminneligInntektFraSDF, + AndelIFellesTilleggIAlminneligInntektFraSDFInnenAnnenNaering, + AndelIFellesTilleggIAlminneligInntektFraSDFInnenBarnepassIBarnepasserensHjem, + AndreFradragsberettigedeKostnader, + AnnenArbeidsinntekt, + AnnenGjeld, + AnnenPensjonFoerAlderspensjon, + AnnenSkattepliktigKapitalinntektFraAnnetFinansprodukt, + AnnenSkattepliktigKapitalinntektFraVirtuellValuta, + AnnetInntektsfradrag, + Arbeidsavklaringspenger, + ArbeidsinntektFraKompensasjonsytelseUtbetaltAvNav, + AvkortetFordelVedElektroniskKommunikasjon, + BarnepensjonFraAndreEnnFolketrygden, + BarnepensjonFraFolketrygden, + BarnepensjonFraIPAOgIPS, + BetaltPremieTilSykeOgUlykkesforsikringForNaeringsdrivende, + BetaltUnderholdsbidrag, + BetalteForsinkelsesrenter, + Bruttoformue, + DagpengerForFisker, + DagpengerForNaeringsdrivende, + DagpengerForNaeringsdrivendeOgFisker, + DagpengerVedSykehusoppholdMvFraBarneforsikring, + EktefelletilleggTilPensjon, + EktefelletilleggTilUfoeretrygd, + EngangsutbetalingFraIPSIPA, + EtterlattepensjonFraFolketrygden, + Foederaad, + FormuesverdiAvPrivatUtestaaendeFordring, + FormuesverdiAvUtestaaendeFordring, + FormuesverdiForAndelIRentedelIVerdipapirfond, + FormuesverdiForAnnenFastEiendom, + FormuesverdiForAnnenFastEiendomInnenforInntektsgivendeAktivitet, + FormuesverdiForAnnenFastEiendomUtenforInntektsgivendeAktivitet, + FormuesverdiForAnnetFinansprodukt, + FormuesverdiForBorett, + FormuesverdiForBuskap, + FormuesverdiForEgenFritaksbehandletBolig, + FormuesverdiForFormuesobjekterINaeringIkkeOmfattetAvVerdsettingsrabatt, + FormuesverdiForFritidsbaatMedSalgsverdiOverSalgsverdigrense, + FormuesverdiForGaardsbruk, + FormuesverdiForInnboLoesoereOgFritidsbaatUnderSalgsverdigrense, + FormuesverdiForKjoeretoey, + FormuesverdiForKontanterIAksjesparekonto, + FormuesverdiForKontanterMvIFondskonto, + FormuesverdiForNaeringseiendom, + FormuesverdiForObligasjon, + FormuesverdiForObligasjonerOpsjonerMvIkkeRegistrertIVerdipapirsentralen, + FormuesverdiForObligasjonerOpsjonerMvRegistrertIVerdipapirsentralen, + FormuesverdiForPrimaerbolig, + FormuesverdiForRegnskapsbehandletBolig, + FormuesverdiForRegnskapsbehandletFritidseiendom, + FormuesverdiForSekundaerbolig, + FormuesverdiForSkogeiendom, + FormuesverdiForTomt, + FormuesverdiForUbetingetOpsjonIArbeidsforhold, + FormuesverdiForUtestaaendeFordringerINaering, + FormuesverdiForUtleidFlerboligbygning, + FormuesverdiForVarelager, + FormuesverdiForVirtuellValuta, + Fortsettelsesforsikring, + ForvaltningskostnadKnyttetTilAksjesparekonto, + ForvaltningskostnadKnyttetTilFondskonto, + ForvaltningskostnadKnyttetTilVerdipapirfond, + ForvaltningskostnaderFinans, + FradragForFagforeningskontingent, + FradragForGaverTilFrivilligeOrganisasjoner, + FradragForIndividuellSparingTilPensjon, + FradragForKostnaderKnyttetTilArbeid, + FradragForMerkostnadVedArbeidsoppholdUtenforHjemmet, + FradragForPengetilskudd, + FradragForVergegodtgjoerelse, + FradragsberettigedeFoederaadsytelserOgUnderholdsbidragTilAnnenPerson, + FradragsberettigetTapPaaKapitalforsikringsavtale, + FradragsberettigetTapVedRealisasjonAvFastEiendom, + FradragsberettigetTapVedRealisasjonAvFastEiendomIUtlandet, + FremfoerbartUnderskuddIEnkeltpersonforetak, + GevinstOgAnnenInntektFraVirtuellEiendel, + GevinstValutalaan, + GevinstVedRealisasjonAvAksje, + GevinstVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, + GevinstVedRealisasjonAvAksjesparekonto, + GevinstVedRealisasjonAvAndelIAksjedelIVerdipapirfond, + GevinstVedRealisasjonAvAndelIRentedelIVerdipapirfond, + GevinstVedRealisasjonAvAnnetFinansprodukt, + GevinstVedRealisasjonAvFastEiendomMv, + GevinstVedRealisasjonAvFastEiendomMvIUtlandet, + GevinstVedRealisasjonAvObligasjonVerdipapirfondRentedelMv, + GevinstVedRealisasjonAvObligasjonerSertifikaterMv, + GevinstVedRealisasjonAvOgUttakFraAksjedelIFondskonto, + GevinstVedRealisasjonAvOgUttakFraRentedelIFondskonto, + GevinstVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, + GevinstVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, + GevinstVedRealisasjonAvVirtuellValuta, + GevinstVedSalgAvAndelINOKUS, + GevinstVedSalgAvAndelISDF, + GjeldIInnenlandskeBanker, + GjeldINaering, + GjeldIUtlandet, + GjeldPaaAnnetFinansprodukt, + GjeldsfradragForKapitalisertFesteavgift, + GjeldsreduksjonForFastEiendomIUtlandetUnntattBeskatningINorgeEtterSkatteavtale, + GjeldsreduksjonForFastEiendomUtenforSvalbardUnntattBeskatningPaaSvalbard, + GjeldsrentereduksjonForFormueIUtlandetUnntattBeskatningINorgeEtterSkatteavtale, + GjeldsrentereduksjonForFormueUtenforSvalbardUnntattBeskatningPaaSvalbard, + GjenkjoepsverdiForLivsforsikring, + GrunnlagForKildeskattPaaPensjonOgUfoereytelser, + GrunnlagForSkattPaaAlminneligInntektSvalbard, + GrunnlagForSkattPaaNaeringsoverskuddSvalbard, + Innskudd, + InnskuddIUtlandet, + InntektFraGevinstOgTapskonto, + InntektFraLottEllerPartTilFiskerOgFangstmann, + InntektVedUtleieAvFritidseiendomSomSkattepliktigeHarBrukt, + InntektsfoeringAvNegativSaldo, + InntektsfradragAvRentefordelPaaLaanIArbeidsforhold, + InntektsfradragAvRentefordelPaaLaanIPensjonsforhold, + InntektsfradragFraGevinstOgTapskonto, + InntektsreduksjonVedAvkastningAvEngangserstatning, + Introduksjonsstoenad, + InvesteringIOppstartsselskap, + KaarytelseUtenforJordOgSkogbruksvirksomhet, + KapitalinntektFraSkogbruk, + KapitalkostnadFraSkogbruk, + KompensasjonsytelseUtbetaltAvNavInnenFiskeOgFangst, + Kontantbeloep, + Kvalifiseringsstoenad, + LatentEllerRealisertGevinstPaaAksjeAndelMvVedUtflytting, + LatentEllerRealisertGevinstPaaAnnetFinansproduktMvVedUtflytting, + LatentEllerRealisertTapPaaAksjeAndelMvVedUtflytting, + LatentEllerRealisertTapPaaAnnetFinansproduktMvVedUtflytting, + LivrenterIArbeidsforhold, + LivrenterUtenforArbeidsforhold, + LoennsinntektMedTrygdeavgiftspliktOmfattetAvLoennstrekkordningen, + LoennsinntektPaaSvalbardOver12G, + LoennsinntektTilBarn, + LoennsinntektUtenTrygdeavgiftspliktOgMedTrekkplikt, + LoennsinntektUtenTrygdeavgiftspliktOmfattetAvLoennstrekkordningen, + MinstefradragIBarnepensjon, + MinstefradragIBarnepensjonTilBarn, + MinstefradragIEktefelletillegg, + MinstefradragIInntekt, + MinstefradragIInntektTilBarn, + MottattFesteavgift, + NaeringsinntektFraKompensasjonsytelseUtbetaltAvNavInnenAnnenNaering, + NaeringsinntektFraKompensasjonsytelseUtbetaltAvNavInnenBarnepassIBarnepasserensHjem, + NaeringsinntektFraKompensasjonsytelseUtbetaltAvNavInnenFiskeOgFangst, + NegativAlminneligInntektOverfoertFraEktefelle, + NegativAlminneligInntektOverfoertTilEktefelle, + NegativFormueOverfoertFraEktefelle, + NettoLoennsinntektFraArbeidINorge, + Nettoformue, + NettoinntektVedUtleieAvFastEiendomMv, + OevrigInntekt, + OppjustertTilleggTilAndelIFellesTapVedSalgAvAndelISDF, + OppjustertTilleggTilAndelIFellesTilleggIAlminneligInntektFraSDF, + OppjustertTilleggTilAndelIFellesTilleggIAlminneligInntektFraSDFInnenAnnenNaering, + OppjustertTilleggTilAndelIFellesTilleggIAlminneligInntektFraSDFInnenBarnepassIBarnepasserensHjem, + OppjustertTilleggTilGevinstVedRealisasjonAvAksje, + OppjustertTilleggTilGevinstVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, + OppjustertTilleggTilGevinstVedRealisasjonAvAksjesparekonto, + OppjustertTilleggTilGevinstVedRealisasjonAvAndelIAksjedelIVerdipapirfond, + OppjustertTilleggTilGevinstVedRealisasjonAvOgUttakFraAksjedelIFondskonto, + OppjustertTilleggTilGevinstVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, + OppjustertTilleggTilGevinstVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, + OppjustertTilleggTilGevinstVedSalgAvAndelINOKUS, + OppjustertTilleggTilGevinstVedSalgAvAndelISDF, + OppjustertTilleggTilLatentEllerRealisertGevinstPaaAksjeAndelMvVedUtflytting, + OppjustertTilleggTilLatentEllerRealisertTapPaaAksjeAndelMvVedUtflytting, + OppjustertTilleggTilRenteinntektMedEkstrabeskatningForLaanTilSelskap, + OppjustertTilleggTilSkattepliktigAksjegevinst, + OppjustertTilleggTilSkattepliktigUtbytteFraAksjeINOKUSIkkeRegistrertIVerdipapirsentralen, + OppjustertTilleggTilSkattepliktigUtbytteFraAksjeIkkeRegistrertIVerdipapirsentralen, + OppjustertTilleggTilSkattepliktigUtbytteFraAksjeOgVerdipapirfondAksjedel, + OppjustertTilleggTilSkattepliktigUtbytteFraAksjerRegistrertIVerdipapirsentralen, + OppjustertTilleggTilSkattepliktigUtbytteFraVerdipapirfondsandel, + OppjustertTilleggTilSkattepliktigUtbytteFraVerdipapirfondsandelTilBarn, + OppjustertTilleggTilTapVedRealisajonAvOgUttakFraAksjedelIFondskonto, + OppjustertTilleggTilTapVedRealisasjonAvAksje, + OppjustertTilleggTilTapVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, + OppjustertTilleggTilTapVedRealisasjonAvAksjesparekonto, + OppjustertTilleggTilTapVedRealisasjonAvAndelIAksjedelIVerdipapirfond, + OppjustertTilleggTilTapVedRealisasjonAvOgUttakFraAksjedelIFondskonto, + OppjustertTilleggTilTapVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, + OppjustertTilleggTilTapVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, + OppjustertTilleggTilTapVedSalgAvAndelINOKUS, + OppjustertTilleggTilUtbytteFraAksje, + OppjustertTilleggTilUtbytteFraAksjesparekonto, + OppjustertTilleggTilUtbytteFraVerdipapirfond, + OpptjenteRenterFraPrivatUtestaaendeFordring, + OpptjenteRenterFraUtestaaendeFordring, + OvergangsstoenadTilEnsligForelder, + OverskuddAvEnkeltpersonforetakInnenAnnenNaeringUtenTrygdeavgiftsplikt, + OverskuddAvEnkeltpersonforetakInnenJordbrukGartneriPelsdyrMv, + OverskuddAvEnkeltpersonforetakInnenReindrift, + OverskuddAvEnkeltpersonforetakInnenSkiferproduksjon, + OverskuddAvEnkeltpersonforetakInnenSkogbruk, + OverskuddAvSDF, + OverskuddAvUtgiftsgodtgjoerelseVedSmusstillegg, + OverskuddFraNaeringsinntekt, + PaaloepteRenterFraAnnenGjeld, + PaaloepteRenterFraInkassoselskap, + PaaloepteRenterFraPrivatGjeld, + PensjonFraUtlandetSkattefriINorge, + PensjonFraUtlandetSkattepliktigINorge, + Pensjonsinnbetaling, + PensjonsinntektFritattForSkattEtterSkatteavtale, + PensjonsinntektIEOESTilsvarendeAlderspensjonEllerAFP, + PensjonsinntektOmfattetAvLoennstrekkordningen, + PersoninntektFraKompensasjonsytelseUtbetaltAvNavInnenAnnenNaering, + PersoninntektFraKompensasjonsytelseUtbetaltAvNavInnenBarnepassIBarnepasserensHjem, + PersoninntektFraKompensasjonsytelseUtbetaltAvNavInnenFiskeOgFangst, + PersoninntektFraSDFInnenAnnenNaering, + PersoninntektFraSDFInnenFiskeEllerBarnepassIBarnepasserensHjem, + PersoninntektFraSkattefriLottMedTrygdeavgiftspliktForUtenlandskFisker, + PositivPersoninntektFraEnkeltpersonforetakPaaSvalbard, + PremieTilEgenTilleggstrygdForNaeringsdrivende, + Premiefond, + PremiefondIndividuellPensjonsavtale, + PremiefondLivsforsikring, + PrivatGjeldsbeloep, + Reisefradrag, + RenteinntektAvAnnetFinansprodukt, + RenteinntektAvLivsforsikring, + RenteinntektAvObligasjon, + RenteinntektAvObligasjonVerdipapirfondRentedelMv, + RenteinntektAvObligasjonVerdipapirfondRentedelMvIUtlandet, + RenteinntektAvSkadeforsikring, + RenteinntektAvVerdipapirfondsandel, + RenteinntektMedEkstrabeskatningForLaanTilSelskap, + ReturAvPremieFraIndividuellPensjonssparing, + ReturprovisjonKnyttetTilAksjesparekonto, + ReturprovisjonKnyttetTilFondskonto, + ReturprovisjonKnyttetTilVerdipapirfond, + SaerfradragForEnsligForsoerger, + SaerfradragOverfoertFraBarn, + SaerfradragOverfoertFraEktefelle, + SaerfradragOverfoertTilEktefelle, + SaerfradragOverfoertTilForelder, + SaerskiltFradragForFiskereOgFangstfolk, + SaerskiltFradragForSjoefolk, + SaerskiltInntektsfradragIBarnsInntekt, + SamledeAndreOpptjenteRenter, + SamledeAndrePaaloepteRenter, + SamledeOpptjenteRenterIInnenlandskeBanker, + SamledeOpptjenteRenterIUtenlandskeBanker, + SamledeOpptjenteRenterIUtlandet, + SamledePaaloepteRenter, + SamledePaaloepteRenterPaaGjeldIInnenlandskeBanker, + SamledePaaloepteRenterPaaGjeldIUtlandet, + SamledeUfoererenterOgLivrenter, + SamledeUnderholdsbidrag, + SamletAndelAvFellesgjeldIBoligselskapEllerBoligsameie, + SamletAndelAvFradragsberettigetFelleskostnadForBoligselskapEllerBoligsameie, + SamletAndelAvInntektIBoligselskapEllerBoligsameie, + SamletAnnenGjeld, + SamletAnnenInntektForForskudd, + SamletAnnenPensjonMedTrekkpliktEksklusiveEktefelletillegg, + SamletAnnenPensjonUtenTrekkplikt, + SamletAnnenRenteinntekt, + SamletAvkastningAvKapitalforsikringsavtale, + SamletAvtalefestetPensjon, + SamletBarnepensjonOgLivrente, + SamletBarnepensjonOgLivrenteTilBarn, + SamletFormuesverdiAvPrivatUtestaaendeFordring, + SamletFormuesverdiAvUtestaaendeFordring, + SamletFormuesverdiForAndelAnnenFormueIBoligselskapEllerBoligsameie, + SamletFormuesverdiForAndelerIRentedelAvVerdipapirfond, + SamletFormuesverdiForAnnenFastEiendom, + SamletFormuesverdiForFastEiendomIUtlandet, + SamletFormuesverdiForOevrigFormue, + SamletFormuesverdiForOevrigFormueIUtlandet, + SamletFormuesverdiForSekundaerbolig, + SamletFormuesverdiForSelveidFritidseiendomEllerAndelIFritidsboligselskap, + SamletFradragsberettigetKostnadTilknyttetArbeidMv, + SamletFradragsberettigetUnderskuddVedUtleieAvFastEiendom, + SamletFremfoerbartUnderskuddFraTidligereAar, + SamletGevinstVedRealisasjonAvAndreFinansprodukter, + SamletGevinstVedRealisasjonAvVerdipapirfondsandelKnyttetTilRentedel, + SamletGjeld, + SamletGjenkjoepsverdiForLivsforsikring, + SamletGrunnlagForInntektsskattTilKommuneOgFylkeskommuneStatsskattOgFellesskatt, + SamletInnenlandskGjeld, + SamletInnskuddIInnenlandskeBanker, + SamletInntektSomGirRettTilSaerskiltFradragForSjoefolk, + SamletLoennsinntektMedTrygdeavgiftspliktOgMedTrekkplikt, + SamletLoennsinntektUtenTrygdeavgiftspliktOgMedTrekkplikt, + SamletLoennsinntektUtenTrygdeavgiftspliktOgUtenTrekkplikt, + SamletMerkostnadVedArbeidsoppholdUtenforHjem, + SamletOverskuddAvEnkeltpersonforetakInnenAnnenNaering, + SamletOverskuddAvEnkeltpersonforetakInnenFamiliebarnehageEllerDagmammaIEgetHjem, + SamletOverskuddAvEnkeltpersonforetakInnenFiskeOgFangst, + SamletOverskuddAvSDFInnenAnnenNaering, + SamletOverskuddAvSDFInnenFiskeEllerFamiliebarnehage, + SamletOverskuddPaaUtgiftsgodtgjoerelse, + SamletPensjonFraFolketrygden, + SamletPensjonsinnbetalingTilIndividuellPensjonsordning, + SamletPersoninntektFraEnkeltpersonforetakInnenFamiliebarnehageEllerDagmammaIEgetHjem, + SamletPersoninntektFraEnkeltpersonforetakInnenFiskeOgFangst, + SamletPersoninntektFraEnkeltpersonforetakInnenJordbrukReindriftSkiferproduksjonOgAnnenNaering, + SamletPremiefond, + SamletSaerfradrag, + SamletSaerfradragForStoreSykdomsutgifter, + SamletSaerfradragForUfoerhetIhtOvergangsregel, + SamletSaerskiltFradragForJordbrukReindriftOgSkiferproduksjon, + SamletSkattefriDelAvFormue, + SamletSkattepliktigGevinstVedRealisasjonAvObligasjonEllerVerdipapirfondsandel, + SamletSkattepliktigOverskuddFraUtleieAvFastEiendom, + SamletSkattepliktigOverskuddFraUtleieAvFastEiendomIUtlandet, + SamletTapVedRealisasjonAvVerdipapirfondsandelKnyttetTilRentedel, + SamletUfoeretrygdFraFolketrygdenEksklusiveEktefelletillegg, + SamletUfoereytelseFraAndreEnnFolketrygden, + SamletUnderskuddAvSDF, + SamletUnderskuddAvSDFPaaSvalbard, + SamletUnderskuddINaeringsvirksomhet, + SamletUnderskuddINaeringsvirksomhetPaaSvalbard, + SamletUtgiftsgodtgjoerelseMedTrekkplikt, + SkattefradragForFormuesskattBetaltIUtlandet, + SkattefriLoennsinntektMedTrygdeavgiftspliktOgMedTrekkplikt, + SkattepliktigAksjegevinst, + SkattepliktigAvkastningEllerKundeutbytte, + SkattepliktigEtterloennOgEtterpensjon, + SkattepliktigUtbytteFraAksjeINOKUSIkkeRegistrertIVerdipapirsentralen, + SkattepliktigUtbytteFraAksjeIkkeRegistrertIVerdipapirsentralen, + SkattepliktigUtbytteFraAksjeOgVerdipapirfondAksjedel, + SkattepliktigUtbytteFraAksjerRegistrertIVerdipapirsentralen, + SkattepliktigUtbytteFraVerdipapirfondsandel, + SkattepliktigUtbytteFraVerdipapirfondsandelTilBarn, + Skjermingsfradrag, + SkjermingstilleggTilAlderspensjon, + SkyldigRestskatt, + SkyldigUnderholdsbidrag, + Slitertillegg, + Standardfradrag, + StyrehonorarFraNorskSelskapTilSkattepliktigBosattIUtlandet, + SumFradragIAlminneligInntekt, + SumGjeldsreduksjon, + SumInntekterIAlminneligInntektFoerFordelingsfradrag, + SumMinstefradrag, + SumVerdsettingsrabatt, + SupplerendeStoenad, + SupplerendeStoenadTilUfoerFlyktning, + TapOgAnnenKostnadFraVirtuellEiendel, + TapValutalaan, + TapVedRealisajonAvOgUttakFraAksjedelIFondskonto, + TapVedRealisasjonAvAksje, + TapVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, + TapVedRealisasjonAvAksjesparekonto, + TapVedRealisasjonAvAndelIAksjedelIVerdipapirfond, + TapVedRealisasjonAvAndelIRentedelIVerdipapirfond, + TapVedRealisasjonAvAnnetFinansprodukt, + TapVedRealisasjonAvObligasjonVerdipapirfondRentedelMv, + TapVedRealisasjonAvObligasjoner, + TapVedRealisasjonAvOgUttakFraAksjedelIFondskonto, + TapVedRealisasjonAvOgUttakFraRentedelIFondskonto, + TapVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, + TapVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, + TapVedRealisasjonAvVirtuellValuta, + TapVedSalgAvAndelINOKUS, + UfoererenterOgLivrenterUtenforArbeidsforhold, + UfoeretrygdFoerAlderspensjon, + UfoeretrygdOmfattetAvLoennstrekkordningen, + UfoereytelseFraIPAOgIPS, + UfoereytelseFraUtlandet, + UnderholdsbidragFraTidligereEktefelle, + UnderholdsbidragTilGode, + UnderskuddAvEnkeltpersonforetakFordeltFraEktefelle, + UnderskuddAvEnkeltpersonforetakPaaSvalbard, + UnderskuddFraSDF, + UnderskuddOverfoertFraBarnOgFordelt, + UnderskuddOverfoertTilForeldre, + UnderskuddVedUtleieMvAvFastEiendomUtenforNaering, + UtbetalingFraAvtaleOmSkattefavorisertIndividuellSparingTilPensjonTegnetFomNov2017, + UtbetalingFraSkadeforsikring, + UtbytteFraAksje, + UtbytteFraAksjesparekonto, + UtbytteFraVerdipapirfond, + UtgiftVedRefinansieringAvLaan, + UtgifterTilPassOgStellAvHjemmevaerendeBarn, + VerdiFoerVerdsettingsrabattForAksje, + VerdiFoerVerdsettingsrabattForAksjeIUtlandet, + VerdiFoerVerdsettingsrabattForAksjeIVPS, + VerdiFoerVerdsettingsrabattForAksjeIkkeIVPS, + VerdiFoerVerdsettingsrabattForAksjeOgAksjefondIFondskonto, + VerdiFoerVerdsettingsrabattForAksjedelIAksjesparekonto, + VerdiFoerVerdsettingsrabattForAndelIAksjedelIVerdipapirfond, + VerdiFoerVerdsettingsrabattForAndelIFellesNettoformueISDF, + VerdiFoerVerdsettingsrabattForAndelINOKUS, + VerdiFoerVerdsettingsrabattForAnnenFormueFraDriftsmidlerAndelISDFMvGenerell, + VerdiFoerVerdsettingsrabattForAnnenFormueInnenforInntektsgivendeAktivitet, + VerdiFoerVerdsettingsrabattForBilerMaskinerOgInventar, + VerdiFoerVerdsettingsrabattForFormuesobjekterINaeringOmfattetAvVerdsettingsrabatt, + VerdiFoerVerdsettingsrabattForInventarLoesoereVedUtleie, + VerdiFoerVerdsettingsrabattForKapitalisertFesteavgift, + VerdiFoerVerdsettingsrabattForRettigheterKnyttetTilSkogUtmark, + VerdiFoerVerdsettingsrabattForSkipFiskeOgFangstfartoey, + VerdiFoerVerdsettingsrabattForVerdipapirfondsandel, + VerdiFoerVerdsettingsrabattForVerdipapirfondsandelTilBarn, + VerdsettingsrabattForAksje, + VerdsettingsrabattForAksjeIUtlandet, + VerdsettingsrabattForAksjeIVPS, + VerdsettingsrabattForAksjeIkkeIVPS, + VerdsettingsrabattForAksjeOgAksjefondIFondskonto, + VerdsettingsrabattForAksjedelIAksjesparekonto, + VerdsettingsrabattForAndelIAksjedelIVerdipapirfond, + VerdsettingsrabattForAndelIFellesNettoformueISDF, + VerdsettingsrabattForAndelINOKUS, + VerdsettingsrabattForAnnenFormueInnenforInntektsgivendeAktivitet, + VerdsettingsrabattForBilerMaskinerOgInventar, + VerdsettingsrabattForFormuesobjekterINaeringOmfattetAvVerdsettingsrabatt, + VerdsettingsrabattForInventarLoesoereVedUtleie, + VerdsettingsrabattForKapitalisertFesteavgift, + VerdsettingsrabattForRettigheterKnyttetTilSkogUtmark, + VerdsettingsrabattForSkipFiskeOgFangstfartoey, + VerdsettingsrabattForVerdipapirfondsandel, + VerdsettingsrabattForVerdipapirfondsandelTilBarn +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java new file mode 100644 index 00000000000..38799d2acf4 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java @@ -0,0 +1,123 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.http.HttpStatus; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TenorOversiktResponse { + + private HttpStatus status; + private Data data; + private String query; + private String error; + + @SuppressWarnings("java:S115") + public enum TenorRelasjon { + Arbeidsforhold, + BeregnetSkatt, + BrregErFr, + Freg, + Inntekt, + TestinnsendingSkattPerson, + SamletReskontroinnsyn, + Skattemelding, + Skatteplikt, + SpesifisertSummertSkattegrunnlag, + SummertSkattegrunnlag, + Tilleggsskatt, + Tjenestepensjonsavtale + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Rollegruppe { + private Type type; + private List fritekst; + private List roller; + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Data { + + private Integer treff; + private Integer rader; + private Integer offset; + private Integer nesteSide; + private Integer seed; + private List personer; + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Person { + + private String id; + private String fornavn; + private String etternavn; + private List tenorRelasjoner; + private Boolean iBruk; + } + + public TenorOversiktResponse copy() { + + return TenorOversiktResponse.builder() + .status(this.getStatus()) + .query(this.getQuery()) + .data(Data.builder() + .treff(this.data.getTreff()) + .rader(this.data.getRader()) + .offset(this.data.getOffset()) + .nesteSide(this.data.getNesteSide()) + .seed(this.data.getSeed()) + .personer(this.data.getPersoner()) + .build()) + .error(this.getError()) + .build(); + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Type { + private String kode; + private String beskrivelse; + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Virksomhet { + private String organisasjonsnummer; + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Rolle { + private Type type; + private Person person; + private Virksomhet virksomhet; + private Object valgtAv; + private String fratraadt; + private List fritekst; + private int rekkefolge; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java new file mode 100644 index 00000000000..db3b9134501 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java @@ -0,0 +1,147 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +import static java.util.Objects.isNull; + +@Data +@NoArgsConstructor +public class TenorRawResponse { + + private Integer treff; + private Integer rader; + private Integer offset; + private Integer nesteSide; + private Integer seed; + private List dokumentListe; + + public List getDokumentListe() { + + if (isNull(dokumentListe)) { + dokumentListe = new ArrayList<>(); + } + return dokumentListe; + } + + @Data + @NoArgsConstructor + public static class Dokument { + private String bostedsadresse; + private String id; + private String arbeidsforhold; + } + + @Data + @NoArgsConstructor + public static class TenorRelasjoner { + + private List arbeidsforhold; + private List beregnetSkatt; + private List brregErFr; + private List freg; + private List inntekt; + private List samletReskontroinnsyn; + private List skattemelding; + private List skatteplikt; + private List spesifisertSummertSkattegrunnlag; + private List summertSkattegrunnlag; + private List testinnsendingSkattPerson; + private List tilleggsskatt; + private List tjenestepensjonsavtale; + } + + @Data + @NoArgsConstructor + public static class BrregErFr { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Skattemelding { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Skatteplikt { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Inntekt { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class BeregnetSkatt { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class SummertSkattegrunnlag { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Freg { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class SpesifisertSummertSkattegrunnlag { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Tjenestepensjonsavtale { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Tilleggsskatt { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Arbeidsforhold { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class TestinnsendingSkattPerson { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class SamletReskontroinnsyn { + + private String tenorRelasjonsnavn; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java new file mode 100644 index 00000000000..e0554e5529a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java @@ -0,0 +1,357 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigInteger; +import java.time.LocalDate; +import java.time.YearMonth; +import java.util.ArrayList; +import java.util.List; + +import static java.util.Objects.isNull; + +@Data +@NoArgsConstructor +@SuppressWarnings("java:S115") +public class TenorRequest { + + public enum IdentifikatorType {Foedselsnummer, DNummer, DNummerOgFoedselsnr} + + public enum Kjoenn {Mann, Kvinne} + + public enum Rolle {DagligLeder} + + public enum Personstatus {Bosatt, Doed, Forsvunnet, Foedselsregistrert, IkkeBosatt, Inaktiv, Midlertidig, Opphoert, Utflyttet} + + public enum Sivilstand {EnkeEllerEnkemann, Gift, GjenlevendePartner, RegistrertPartner, Separert, SeparertPartner, Skilt, SkiltPartner, Ugift, Uoppgitt} + + public enum UtenlandskPersonIdentifikasjon {UtenlandskIdentifikasjonsnummer, TaxIdentificationNumber, SocialSecurityNumber, UtlendingsmyndighetenesIdentifikasjonsnummer} + + public enum IdentitetsgrunnlagStatus {IkkeKontrollert, IngenStatus, Kontrollert} + + public enum Adressebeskyttelse {Fortrolig, StrengtFortrolig} + + public enum AdresseGradering {Ugradert, Klientadresse, Fortrolig} + + public enum Relasjon {Barn, Far, Medmor, Mor, Partner} + + public enum Skattemeldingstype {KunUtkast, UtkastOgFastsatt} + + public enum Inntektstype {Loennsinntekt, Naeringsinntekt, PensjonEllerTrygd, YtelseFraOffentlige} + + public enum AOrdningBeskrivelse { + Alderspensjon, AlderspensjonSkjermingstillegg, AndreBeskrivelser, + Arbeidsavklaringspenger, AvtalefestetPensjon, Bil, Bonus, DagpengerVedArbeidsloeshet, Ektefelletillegg, + ElektroniskKommunikasjon, Fagforeningskontingent, FastBilgodtgjoerelse, Fastloenn, FastTillegg, Feriepenger, + Foreldrepenger, IpaEllerIpsPeriodiskeYtelser, Kvalifiseringsstoenad, NyAvtalefestetPensjonPrivatSektor, + PensjonOgLivrenterIArbeidsforhold, ReiseKostMedOvernattingPaaHybelMedKokEllerPrivat, + ReiseKostMedOvernattingPaaHybelUtenKokEllerPensjonatEllerBrakke, Sykepenger, Timeloenn, Ufoeretrygd + } + + public enum Forskuddstrekk { + OrdinaertForskuddstrekk, Barnepensjon, KildeskattPaaPensjon, Svalbard, + JanMayenOgBilandene, BetaltTrygdeavgiftTilJanMayen + } + + public enum Skattepliktstype {SkattepliktTilNorge, SkattepliktTilSvalbard} + + public enum SaerskiltSkatteplikt { + KildeskattepliktPaaLoenn, KildeskattepliktPaaPensjon, + SkattepliktAvNaeringsdriftEiendomMv, SkattepliktEtterPetroleumsskatteloven, + SkattepliktPaaLoennFraDenNorskeStatOpptjentIUtlandet, SkattepliktSomSjoemann, + SkattepliktSomUtenrikstjenestemann, SkattepliktVedUtenriksoppholdINorskStatstjenesteEllerNato + } + + public enum TilleggsskattType { + FradragForTvangsmulkt, SkjerpetTilleggsskattFraUriktigeOpplysninger, TilleggsskattFraUriktigeOpplysninger, + TilleggsskattFraManglendeInnlevering, SkjerpetTilleggsskattFraManglendeInnlevering + } + + public enum Arbeidsforholdstype { + OrdinaertArbeidsforhold, MaritimtArbeidsforhold, FrilanserOppdragstakerHonorarPersonerMm + } + + public enum Oppgjoerstype {Fastland, Svalbard, KildeskattPaaLoenn} + + public enum Stadietype {Utkast, Fastsatt, Oppgjoer} + + @Schema(description = "Personidentifikator, fødselsnummer eller d-nummer") + private String identifikator; + private IdentifikatorType identifikatorType; + private DatoIntervall foedselsdato; + private DatoIntervall doedsdato; + private Kjoenn kjoenn; + private Personstatus personstatus; + private Sivilstand sivilstand; + private List utenlandskPersonIdentifikasjon; + private IdentitetsgrunnlagStatus identitetsgrunnlagStatus; + private Adressebeskyttelse adressebeskyttelse; + private Boolean harLegitimasjonsdokument; + private Boolean harFalskIdentitet; + private Boolean harNorskStatsborgerskap; + private Boolean harFlereStatsborgerskap; + private Navn navn; + private Adresser adresser; + private Relasjoner relasjoner; + private Hendelser hendelser; + + private List roller; + private Tjenestepensjonsavtale tjenestepensjonsavtale; + private Skattemelding skattemelding; + private Inntekt inntekt; + private Skatteplikt skatteplikt; + private Tilleggsskatt tilleggsskatt; + private Arbeidsforhold arbeidsforhold; + private BeregnetSkatt beregnetSkatt; + private TestinnsendingSkattPerson testinnsendingSkattPerson; + private SamletReskontroInnsyn samletReskontroInnsyn; + private SummertSkattegrunnlag summertSkattegrunnlag; + private SpesisfisertSummertSkattegrunnlag spesifisertSummertSkattegrunnlag; + + public List getUtenlandskPersonIdentifikasjon() { + + if (isNull(utenlandskPersonIdentifikasjon)) { + utenlandskPersonIdentifikasjon = new ArrayList<>(); + } + return utenlandskPersonIdentifikasjon; + } + + public List getRoller() { + + if (isNull(roller)) { + roller = new ArrayList<>(); + } + return roller; + } + + @Data + @NoArgsConstructor + public static class DatoIntervall { + + @Schema(type = "string", format = "YYYY-MM-DD", example = "2018-07-01") + private LocalDate fraOgMed; + @Schema(type = "string", format = "YYYY-MM-DD", example = "2020-07-01") + private LocalDate tilOgMed; + } + + @Data + @NoArgsConstructor + public static class Intervall { + + private BigInteger fraOgMed; + private BigInteger tilOgMed; + } + + @Data + @NoArgsConstructor + public static class Navn { + + private Intervall navnLengde; + private Boolean harFlereFornavn; + private Boolean harMellomnavn; + private Boolean harNavnSpesialtegn; + } + + @Data + @NoArgsConstructor + public static class Adresser { + + @Schema(description = "Adressesøk, fritekst") + private AdresseGradering adresseGradering; + private BigInteger kommunenummer; + private Boolean harBostedsadresse; + private Boolean harOppholdAnnetSted; + private Boolean harPostadresseNorge; + private Boolean harPostadresseUtland; + private Boolean harKontaktadresseDoedsbo; + private Boolean harAdresseSpesialtegn; + } + + @Data + @NoArgsConstructor + public static class Relasjoner { + + private Relasjon relasjon; + private Intervall antallBarn; + private Boolean harForeldreAnsvar; + private Intervall relasjonMedFoedselsaar; + private Boolean harDeltBosted; + private Boolean harVergemaalEllerFremtidsfullmakt; + private Boolean borMedMor; + private Boolean borMedFar; + private Boolean borMedMedmor; + private Boolean foreldreHarSammeAdresse; + } + + @Data + @NoArgsConstructor + public static class Hendelser { + + private Hendelse hendelse; + private Hendelse sisteHendelse; + } + + @Data + @NoArgsConstructor + public static class Tjenestepensjonsavtale { + + @Schema(description = "Pensjonsinnretningen organisasjonsnummer, 9 siffre") + private String pensjonsinnretningOrgnr; + @Schema(type = "string", format = "YYYY-MM", example = "2020-07") + private YearMonth periode; + } + + @Data + @NoArgsConstructor + public static class Skattemelding { + + @Schema(description = "Inntektsår, 4 siffre, årene 2018, 2019, 2020, 2021, 2022 ... osv opptil i forfjor") + private BigInteger inntektsaar; + private Skattemeldingstype skattemeldingstype; + } + + @Data + @NoArgsConstructor + public static class Inntekt { + + private MonthInterval periode; + private BigInteger opplysningspliktig; + private List inntektstyper; + private AOrdningBeskrivelse beskrivelse; + private List forskuddstrekk; + private Boolean harHistorikk; + + public List getInntektstyper() { + + if (isNull(inntektstyper)) { + inntektstyper = new ArrayList<>(); + } + return inntektstyper; + } + + public List getForskuddstrekk() { + + if (isNull(forskuddstrekk)) { + forskuddstrekk = new ArrayList<>(); + } + return forskuddstrekk; + } + } + + @Data + @NoArgsConstructor + public static class MonthInterval { + + @Schema(type = "string", format = "YYYY-MM", example = "2020-07") + private YearMonth fraOgMed; + @Schema(type = "string", format = "YYYY-MM", example = "2020-07") + private YearMonth tilOgMed; + } + + @Data + @NoArgsConstructor + public static class Skatteplikt { + + @Schema(description = "Inntektsår, 4 siffre, årene 2019, 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + private List skattepliktstyper; + private SaerskiltSkatteplikt saerskiltSkatteplikt; + + public List getSkattepliktstyper() { + + if (isNull(skattepliktstyper)) { + skattepliktstyper = new ArrayList<>(); + } + return skattepliktstyper; + } + } + + @Data + @NoArgsConstructor + public static class Tilleggsskatt { + + private BigInteger inntektsaar; + private List tilleggsskattTyper; + + public List getTilleggsskattTyper() { + + if (isNull(tilleggsskattTyper)) { + tilleggsskattTyper = new ArrayList<>(); + } + return tilleggsskattTyper; + } + } + + @Data + @NoArgsConstructor + public static class Arbeidsforhold { + + private DatoIntervall startDatoPeriode; + private DatoIntervall sluttDatoPeriode; + private Boolean harPermisjoner; + private Boolean harPermitteringer; + private Boolean harArbeidsgiver; + private Boolean harTimerMedTimeloenn; + private Boolean harUtenlandsopphold; + private Boolean harHistorikk; + private Arbeidsforholdstype arbeidsforholdstype; + } + + @Data + @NoArgsConstructor + public static class BeregnetSkatt { + + @Schema(description = "Inntektsår, 4 siffre, årene 2018, 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + private Oppgjoerstype oppgjoerstype; + private Boolean pensjonsgivendeInntekt; + } + + @Data + @NoArgsConstructor + @Schema(description = "Opplysninger fra skatteetatens innsendingsmiljoe") + public static class TestinnsendingSkattPerson { + + @Schema(description = "Inntektsår, 4 siffre, årene 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + @Schema(description = "Skattemelding utkast, merk at false indikerer har ikke skatteMeldingUtkast") + private Boolean harSkattemeldingUtkast; + @Schema(description = "Skattemelding fastsatt, merk at false indikerer har ikke skatteMeldingFastsatt") + private Boolean harSkattemeldingFastsatt; + } + + @Data + @NoArgsConstructor + public static class SamletReskontroInnsyn { + + private Boolean harKrav; + private Boolean harInnbetaling; + } + + @Data + @NoArgsConstructor + public static class SummertSkattegrunnlag { + + @Schema(description = "Inntektsår, 4 siffre, årene 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + private Stadietype stadietype; + private Oppgjoerstype oppgjoerstype; + private TekniskNavn tekniskNavn; + private Intervall alminneligInntektFoerSaerfradragBeloep; + } + + @Data + @NoArgsConstructor + public static class SpesisfisertSummertSkattegrunnlag { + + @Schema(description = "Inntektsår, 4 siffre, årene 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + private Stadietype stadietype; + private Oppgjoerstype oppgjoerstype; + private TekniskNavn tekniskNavn; + private Spesifiseringstype spesifiseringstype; + private Intervall alminneligInntektFoerSaerfradragBeloep; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java new file mode 100644 index 00000000000..c5affb86304 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java @@ -0,0 +1,20 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.http.HttpStatus; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TenorResponse { + + private HttpStatus status; + private JsonNode data; + private String query; + private String error; +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/mapper/TenorResultMapperService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/mapper/TenorResultMapperService.java new file mode 100644 index 00000000000..09ad4097a40 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/mapper/TenorResultMapperService.java @@ -0,0 +1,114 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.mapper; +/* +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.swagger.v3.core.util.Json; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorRawResponse; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorOversiktResponse; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorResponse; +import org.apache.commons.lang3.StringUtils; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; +import org.springframework.web.server.ResponseStatusException; + +import java.lang.reflect.InvocationTargetException; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.StringTokenizer; + +import static java.util.Collections.emptyList; +import static java.util.Objects.nonNull; + +@Slf4j +@Service +@RequiredArgsConstructor +public class TenorResultMapperService { + + private final ObjectMapper objectMapper; + + public TenorOversiktResponse map(TenorResponse resultat, String query) { + + return TenorOversiktResponse.builder() + .status(resultat.getStatus()) + .error(resultat.getError()) + .data(convert(resultat)) + .query(query) + .build(); + } + + private TenorOversiktResponse.Data convert(TenorResponse tenorResponse) { + + if (tenorResponse.getStatus().is2xxSuccessful()) { + log.info("Mottok tenor respons: {}", Json.pretty(tenorResponse.getData())); + try { + var preamble = new StringBuilder(); + var noHyphenCharsInValues = new StringTokenizer(tenorResponse.getData().toString(), "-"); + while (noHyphenCharsInValues.hasMoreTokens()) { + preamble.append(StringUtils.capitalize(noHyphenCharsInValues.nextToken())); + } + + var response = objectMapper.readValue(preamble.toString(), TenorRawResponse.class); + return TenorOversiktResponse.Data.builder() + .rader(response.getRader()) + .treff(response.getTreff()) + .offset(response.getOffset()) + .nesteSide(response.getNesteSide()) + .seed(response.getSeed()) + .personer(map(response)) + .build(); + + } catch (JsonProcessingException e) { + log.error("Feil ved konvertering av tenor respons {}", e.getMessage(), e); + throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, + "Feil ved konvertering av tenor response: %s".formatted(e.getMessage()), e); + } + } else { + return null; + } + } + + private static List map(TenorRawResponse response) { + + return response.getDokumentListe().stream() + .map(TenorResultMapperService::map) + .toList(); + } + + private static TenorOversiktResponse.Person map(TenorRawResponse.Dokument dokument) { + + return TenorOversiktResponse.Person.builder() + .id(dokument.getId()) + .fornavn(dokument.getFornavn()) + .etternavn(dokument.getEtternavn()) + .tenorRelasjoner(map(dokument.getTenorRelasjoner())) + .build(); + } + + private static List map(TenorRawResponse.TenorRelasjoner tenorRelasjoner) { + + return nonNull(tenorRelasjoner) ? + Arrays.stream(tenorRelasjoner.getClass().getMethods()) + .filter(metode -> metode.getName().startsWith("get")) + .filter(metode -> metode.getReturnType().equals(List.class)) + .map(metode -> { + try { + return (List) metode.invoke(tenorRelasjoner); + } catch (IllegalAccessException | InvocationTargetException e) { + log.error("Kunne ikke hente relasjoner", e); + return null; + } + }) + .filter(Objects::nonNull) + .flatMap(List::stream) + .map(tenorRelasjon -> tenorRelasjon.getClass().getSimpleName()) + .distinct() + .sorted() + .map(TenorOversiktResponse.TenorRelasjon::valueOf) + .toList() : + emptyList(); + } +} +*/ \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java new file mode 100644 index 00000000000..0d5bec7d4a5 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java @@ -0,0 +1,23 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.TenorConsumer; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class TenorPersonService { + + private final TenorConsumer tenorConsumer; + + @EventListener(ApplicationReadyEvent.class) + public void tenorPersonService() throws JsonProcessingException { + tenorConsumer.consume(); + System.out.println("TenorPersonService"); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml index 25acc22b68c..fdffffd8d6e 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -53,4 +53,5 @@ consumers: namespace: dolly url: https://testnav-aareg-proxy.dev-fss-pub.nais.io cluster: dev-fss - + tenor-search-service: + url: https://testdata.api.skatteetaten.no From 9c9a2e0e3fc0297b7c8c9d43348cd3bba287f348 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Wed, 10 Jul 2024 07:44:53 +0200 Subject: [PATCH 140/161] Endre til log.info #deploy-levende-arbeidsforhold-ansettelse --- .../levendearbeidsforholdansettelse/config/KafkaConfig.java | 5 +++-- .../consumers/TenorConsumer.java | 6 +++--- .../service/TenorPersonService.java | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java index c923e02520f..de70156a8d5 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java @@ -1,5 +1,5 @@ package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; - +/* import io.confluent.kafka.serializers.AbstractKafkaSchemaSerDeConfig; import io.confluent.kafka.serializers.KafkaAvroDeserializer; @@ -89,4 +89,5 @@ public void consumerRemoved(String id, Consumer consumer) { factory.setCommonErrorHandler(new CommonLoggingErrorHandler()); return factory; } -} \ No newline at end of file +} +*/ \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java index b8c142e458f..9e4499708cd 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java @@ -58,16 +58,16 @@ public TenorConsumer( } public void consume() throws JsonProcessingException { - System.out.println("Kjører consume"); + log.info("Kjører consume"); var accessToken = tokenExchange.exchange(serverProperties).block(); - System.out.println("Har hentet ut token"); + log.info("Har hentet ut token"); if (nonNull(accessToken)) { var token = accessToken.getTokenValue(); HentPersonerCommand commander = new HentPersonerCommand(token, webClient); JsonNode data = commander.hentPersonData(); var rawResponse = objectMapper.readValue(data.toString(), TenorRawResponse.class); - System.out.println(rawResponse.getDokumentListe().getFirst().getBostedsadresse().toString()); + log.info(rawResponse.getDokumentListe().getFirst().getBostedsadresse().toString()); } } } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java index 0d5bec7d4a5..040fa078b5a 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java @@ -17,7 +17,7 @@ public class TenorPersonService { @EventListener(ApplicationReadyEvent.class) public void tenorPersonService() throws JsonProcessingException { + log.info("Henter tenor person"); tenorConsumer.consume(); - System.out.println("TenorPersonService"); } } From b7947a28dddc739d427e50d49d618d089049754f Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Wed, 10 Jul 2024 08:34:30 +0200 Subject: [PATCH 141/161] La til tenor proxy config --- .../apps/levendearbeidsforholdansettelse/config/Consumers.java | 2 +- .../consumers/TenorConsumer.java | 2 +- .../src/main/resources/application.yml | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java index f2a27ba2d5d..889078d6e0c 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java @@ -25,6 +25,6 @@ public class Consumers { private ServerProperties testnavAaregProxy; - private ServerProperties tenorSearchService; + private ServerProperties testnavTenorSearchService; } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java index 9e4499708cd..163d17929a8 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java @@ -33,7 +33,7 @@ public TenorConsumer( Consumers consumers, ObjectMapper objectMapper) { - this.serverProperties = consumers.getTenorSearchService(); + this.serverProperties = consumers.getTestnavTenorSearchService(); this.tokenExchange = tokenExchange; this.objectMapper = objectMapper; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml index b23bfe42b7e..dea8e475143 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -53,5 +53,6 @@ consumers: namespace: dolly url: https://testnav-aareg-proxy.dev-fss-pub.nais.io cluster: dev-fss - tenor-search-service: + testnav-tenor-search-service: + name: testnav-tenor-search-service url: https://testdata.api.skatteetaten.no \ No newline at end of file From 08bbfeb835e5091f4c92d18b9f63f29949d618aa Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Tue, 9 Jul 2024 15:50:17 +0200 Subject: [PATCH 142/161] Consumer fra riktig domene, legger til riktig klasse som skal parses --- .../build.gradle | 3 +- .../config/Consumers.java | 1 + .../consumers/TenorConsumer.java | 71 ++- .../command/HentPersonerCommand.java | 35 ++ .../domain/tenor/Hendelse.java | 50 ++ .../domain/tenor/Spesifiseringstype.java | 35 ++ .../domain/tenor/TekniskNavn.java | 430 ++++++++++++++++++ .../domain/tenor/TenorOversiktResponse.java | 123 +++++ .../domain/tenor/TenorRawResponse.java | 147 ++++++ .../domain/tenor/TenorRequest.java | 357 +++++++++++++++ .../domain/tenor/TenorResponse.java | 20 + .../mapper/TenorResultMapperService.java | 114 +++++ .../service/TenorPersonService.java | 23 + .../src/main/resources/application.yml | 3 +- 14 files changed, 1400 insertions(+), 12 deletions(-) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/mapper/TenorResultMapperService.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java diff --git a/apps/levende-arbeidsforhold-ansettelse/build.gradle b/apps/levende-arbeidsforhold-ansettelse/build.gradle index f37f15394f4..5569f0d1c95 100644 --- a/apps/levende-arbeidsforhold-ansettelse/build.gradle +++ b/apps/levende-arbeidsforhold-ansettelse/build.gradle @@ -45,7 +45,7 @@ repositories { } dependencies { - implementation "no.nav.testnav.libs:kafka-config" + implementation 'no.nav.testnav.libs:kafka-config' implementation 'no.nav.testnav.libs:security-core' implementation 'no.nav.testnav.libs:reactive-core' implementation 'no.nav.testnav.libs:servlet-core' @@ -87,6 +87,7 @@ dependencies { implementation 'no.nav.testnav.libs:security-core' implementation 'no.nav.testnav.libs:servlet-insecure-security' implementation 'no.nav.testnav.libs:servlet-core' + } java { toolchain { diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java index d08918b83ce..f2a27ba2d5d 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java @@ -25,5 +25,6 @@ public class Consumers { private ServerProperties testnavAaregProxy; + private ServerProperties tenorSearchService; } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java index b25e4ad6445..b8c142e458f 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java @@ -1,22 +1,73 @@ package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.annotation.Bean; -import org.springframework.context.event.EventListener; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.config.Consumers; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command.HentPersonerCommand; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorRawResponse; +import org.springframework.http.MediaType; +import org.springframework.http.codec.json.Jackson2JsonDecoder; +import org.springframework.http.codec.json.Jackson2JsonEncoder; import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.ExchangeStrategies; import org.springframework.web.reactive.function.client.WebClient; +import static java.util.Objects.nonNull; + @Slf4j @Component public class TenorConsumer { - private static final String TENOR_DOMAIN = "https://vg.no";//"https://testnav-tenor-search-service.intern.dev.nav.no"; + private static final String TENOR_DOMAIN = "https://testnav-tenor-search-service.intern.dev.nav.no"; + private final WebClient webClient; + private final TokenExchange tokenExchange; + private final ServerProperties serverProperties; + private final ObjectMapper objectMapper; + + + public TenorConsumer( + TokenExchange tokenExchange, + Consumers consumers, + ObjectMapper objectMapper) { + + this.serverProperties = consumers.getTenorSearchService(); + this.tokenExchange = tokenExchange; + this.objectMapper = objectMapper; - @EventListener(ApplicationReadyEvent.class) - public void buildRequest(){ - WebClient request = WebClient.builder().baseUrl(TENOR_DOMAIN).build(); - String response = request.get().retrieve().bodyToMono(String.class).block(); - log.info(response); + ExchangeStrategies jacksonStrategy = ExchangeStrategies + .builder() + .codecs( + config -> { + config + .defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + config + .defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + }) + .build(); + + this.webClient = WebClient + .builder() + .exchangeStrategies(jacksonStrategy) + .baseUrl(TENOR_DOMAIN) + .build(); } -} + public void consume() throws JsonProcessingException { + System.out.println("Kjører consume"); + var accessToken = tokenExchange.exchange(serverProperties).block(); + System.out.println("Har hentet ut token"); + + if (nonNull(accessToken)) { + var token = accessToken.getTokenValue(); + HentPersonerCommand commander = new HentPersonerCommand(token, webClient); + JsonNode data = commander.hentPersonData(); + var rawResponse = objectMapper.readValue(data.toString(), TenorRawResponse.class); + System.out.println(rawResponse.getDokumentListe().getFirst().getBostedsadresse().toString()); + } + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java new file mode 100644 index 00000000000..ef62213bcec --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java @@ -0,0 +1,35 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorResponse; +import org.springframework.http.HttpHeaders; +import org.springframework.web.reactive.function.client.WebClient; + +@Slf4j +@RequiredArgsConstructor +public class HentPersonerCommand { + private static final String PATH = "/api/v1/tenor/testdata/raw"; + private final String token; + private final WebClient webClient; + + public JsonNode hentPersonData(){ + System.out.println("Henter personer"); + var request = webClient + .get() + .uri(builder -> builder + .path(PATH) + .queryParam("type", "Spesifikt") + .queryParam("fields", "id", "bostedsadresse", "arbeidsforhold") + .build() + ) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .retrieve() + .bodyToMono(TenorResponse.class); + var response = request.block(); + + System.out.println("Fikk respons!"); + return response.getData(); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java new file mode 100644 index 00000000000..1358d4d5c21 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java @@ -0,0 +1,50 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +@SuppressWarnings("java:S115") +public enum Hendelse { + + EndringIAdressebeskyttelse, + EndringIBostedsadresse, + EndringIBostedsadresseUtenFlytting, + EndringIBrukAvSamiskSpraak, + EndringIDeltBosted, + EndringIDoedsfall, + EndringIFalskIdentitet, + EndringIFamilierelasjon, + EndringIFoedsel, + EndringIFoedselINorge, + EndringIForeldreansvar, + EndringIFratattRettsligHandleevne, + EndringIIdentifikasjonsnummer, + EndringIIdentitetsgrunnlag, + EndringIInnflytting, + EndringIKjoenn, + EndringIKontaktinformasjon, + EndringIKontaktopplysningerForDoedsbo, + EndringILegitimasjonsdokument, + EndringINavn, + EndringIOpphold, + EndringIOppholdPaaSvalbard, + EndringIOppholdsadresse, + EndringIPerson, + EndringIRettsligHandleevne, + EndringISametingetsValgmanntall, + EndringISivilstand, + EndringIStatsborgerskap, + EndringIStatus, + EndringIUtenlandskPersonidentifikasjon, + EndringIUtflytting, + EndringIUtlendingsmyndighetenesIdentifikasjonsnummer, + EndringIVergemaal, + PersonErBosatt, + PersonErDoed, + PersonErEndretVedSplitting, + PersonErGjenopprettetVedSplitting, + PersonErOppdatert, + PersonErOpphoert, + PersonErOpphoertSomDublett, + PersonErOpprettet, + PersonErReaktivert, + PersonErUtflyttet, + PersonErViderefoertSomGjeldendeVedSammenslaaing +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java new file mode 100644 index 00000000000..2edbb562948 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java @@ -0,0 +1,35 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +@SuppressWarnings("java:S115") +public enum Spesifiseringstype { + + AksjeIkkeIAksjonaerregisteret, + Aksjesparekonto, + AndreBeloepKnyttetTilBoligOgEiendeler, + AnnenKapitalkostnad, + AnnetFinansprodukt, + DeltakersAndelAvFormueOgInntekt, + Eiendom, + Fondskonto, + Fordring, + FritidsbaatMedSalgsverdiOverSalgsverdigrense, + Generisk, + GrunnlagKnyttetTilLottaker, + KapitalisertFesteavgift, + Kjoeretoey, + KollektivPensjonsordning, + Konto, + Livsforsikring, + LoennOgTilsvarendeYtelser, + Naeringsopplysninger, + ObligasjonOgSertifikat, + OekonomiskeForholdKnyttetTilBoligsameieEllerBoligselskap, + PrivatGjeldsforholdUtenforVirksomhet, + SamletGjeldOgFormuesobjekterINaering, + Skadeforsikring, + SkyldigRestskatt, + SykepengerOgAnnenInntektMvFraOppgavegiver, + Verdipapirfond, + VirtuellEiendel, + VirtuellValuta +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java new file mode 100644 index 00000000000..e6acbc72e70 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java @@ -0,0 +1,430 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +@SuppressWarnings("java:S115") +public enum TekniskNavn { + AaretsFremfoerbareNegativPersoninntekt, + AarsavgiftForKontoIVerdipapirregister, + AlderspensjonFraFolketrygden, + AlderspensjonFraIPAOgIPS, + AlminneligInntektFoerSaerfradrag, + AndelAvFellesgjeldISDF, + AndelAvUnderskuddFraTidligereAarVedDriftAvVaaningshusSomAnvendesIAaret, + AndelIFellesTapVedSalgAvAndelISDF, + AndelIFellesTilleggIAlminneligInntektFraSDF, + AndelIFellesTilleggIAlminneligInntektFraSDFInnenAnnenNaering, + AndelIFellesTilleggIAlminneligInntektFraSDFInnenBarnepassIBarnepasserensHjem, + AndreFradragsberettigedeKostnader, + AnnenArbeidsinntekt, + AnnenGjeld, + AnnenPensjonFoerAlderspensjon, + AnnenSkattepliktigKapitalinntektFraAnnetFinansprodukt, + AnnenSkattepliktigKapitalinntektFraVirtuellValuta, + AnnetInntektsfradrag, + Arbeidsavklaringspenger, + ArbeidsinntektFraKompensasjonsytelseUtbetaltAvNav, + AvkortetFordelVedElektroniskKommunikasjon, + BarnepensjonFraAndreEnnFolketrygden, + BarnepensjonFraFolketrygden, + BarnepensjonFraIPAOgIPS, + BetaltPremieTilSykeOgUlykkesforsikringForNaeringsdrivende, + BetaltUnderholdsbidrag, + BetalteForsinkelsesrenter, + Bruttoformue, + DagpengerForFisker, + DagpengerForNaeringsdrivende, + DagpengerForNaeringsdrivendeOgFisker, + DagpengerVedSykehusoppholdMvFraBarneforsikring, + EktefelletilleggTilPensjon, + EktefelletilleggTilUfoeretrygd, + EngangsutbetalingFraIPSIPA, + EtterlattepensjonFraFolketrygden, + Foederaad, + FormuesverdiAvPrivatUtestaaendeFordring, + FormuesverdiAvUtestaaendeFordring, + FormuesverdiForAndelIRentedelIVerdipapirfond, + FormuesverdiForAnnenFastEiendom, + FormuesverdiForAnnenFastEiendomInnenforInntektsgivendeAktivitet, + FormuesverdiForAnnenFastEiendomUtenforInntektsgivendeAktivitet, + FormuesverdiForAnnetFinansprodukt, + FormuesverdiForBorett, + FormuesverdiForBuskap, + FormuesverdiForEgenFritaksbehandletBolig, + FormuesverdiForFormuesobjekterINaeringIkkeOmfattetAvVerdsettingsrabatt, + FormuesverdiForFritidsbaatMedSalgsverdiOverSalgsverdigrense, + FormuesverdiForGaardsbruk, + FormuesverdiForInnboLoesoereOgFritidsbaatUnderSalgsverdigrense, + FormuesverdiForKjoeretoey, + FormuesverdiForKontanterIAksjesparekonto, + FormuesverdiForKontanterMvIFondskonto, + FormuesverdiForNaeringseiendom, + FormuesverdiForObligasjon, + FormuesverdiForObligasjonerOpsjonerMvIkkeRegistrertIVerdipapirsentralen, + FormuesverdiForObligasjonerOpsjonerMvRegistrertIVerdipapirsentralen, + FormuesverdiForPrimaerbolig, + FormuesverdiForRegnskapsbehandletBolig, + FormuesverdiForRegnskapsbehandletFritidseiendom, + FormuesverdiForSekundaerbolig, + FormuesverdiForSkogeiendom, + FormuesverdiForTomt, + FormuesverdiForUbetingetOpsjonIArbeidsforhold, + FormuesverdiForUtestaaendeFordringerINaering, + FormuesverdiForUtleidFlerboligbygning, + FormuesverdiForVarelager, + FormuesverdiForVirtuellValuta, + Fortsettelsesforsikring, + ForvaltningskostnadKnyttetTilAksjesparekonto, + ForvaltningskostnadKnyttetTilFondskonto, + ForvaltningskostnadKnyttetTilVerdipapirfond, + ForvaltningskostnaderFinans, + FradragForFagforeningskontingent, + FradragForGaverTilFrivilligeOrganisasjoner, + FradragForIndividuellSparingTilPensjon, + FradragForKostnaderKnyttetTilArbeid, + FradragForMerkostnadVedArbeidsoppholdUtenforHjemmet, + FradragForPengetilskudd, + FradragForVergegodtgjoerelse, + FradragsberettigedeFoederaadsytelserOgUnderholdsbidragTilAnnenPerson, + FradragsberettigetTapPaaKapitalforsikringsavtale, + FradragsberettigetTapVedRealisasjonAvFastEiendom, + FradragsberettigetTapVedRealisasjonAvFastEiendomIUtlandet, + FremfoerbartUnderskuddIEnkeltpersonforetak, + GevinstOgAnnenInntektFraVirtuellEiendel, + GevinstValutalaan, + GevinstVedRealisasjonAvAksje, + GevinstVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, + GevinstVedRealisasjonAvAksjesparekonto, + GevinstVedRealisasjonAvAndelIAksjedelIVerdipapirfond, + GevinstVedRealisasjonAvAndelIRentedelIVerdipapirfond, + GevinstVedRealisasjonAvAnnetFinansprodukt, + GevinstVedRealisasjonAvFastEiendomMv, + GevinstVedRealisasjonAvFastEiendomMvIUtlandet, + GevinstVedRealisasjonAvObligasjonVerdipapirfondRentedelMv, + GevinstVedRealisasjonAvObligasjonerSertifikaterMv, + GevinstVedRealisasjonAvOgUttakFraAksjedelIFondskonto, + GevinstVedRealisasjonAvOgUttakFraRentedelIFondskonto, + GevinstVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, + GevinstVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, + GevinstVedRealisasjonAvVirtuellValuta, + GevinstVedSalgAvAndelINOKUS, + GevinstVedSalgAvAndelISDF, + GjeldIInnenlandskeBanker, + GjeldINaering, + GjeldIUtlandet, + GjeldPaaAnnetFinansprodukt, + GjeldsfradragForKapitalisertFesteavgift, + GjeldsreduksjonForFastEiendomIUtlandetUnntattBeskatningINorgeEtterSkatteavtale, + GjeldsreduksjonForFastEiendomUtenforSvalbardUnntattBeskatningPaaSvalbard, + GjeldsrentereduksjonForFormueIUtlandetUnntattBeskatningINorgeEtterSkatteavtale, + GjeldsrentereduksjonForFormueUtenforSvalbardUnntattBeskatningPaaSvalbard, + GjenkjoepsverdiForLivsforsikring, + GrunnlagForKildeskattPaaPensjonOgUfoereytelser, + GrunnlagForSkattPaaAlminneligInntektSvalbard, + GrunnlagForSkattPaaNaeringsoverskuddSvalbard, + Innskudd, + InnskuddIUtlandet, + InntektFraGevinstOgTapskonto, + InntektFraLottEllerPartTilFiskerOgFangstmann, + InntektVedUtleieAvFritidseiendomSomSkattepliktigeHarBrukt, + InntektsfoeringAvNegativSaldo, + InntektsfradragAvRentefordelPaaLaanIArbeidsforhold, + InntektsfradragAvRentefordelPaaLaanIPensjonsforhold, + InntektsfradragFraGevinstOgTapskonto, + InntektsreduksjonVedAvkastningAvEngangserstatning, + Introduksjonsstoenad, + InvesteringIOppstartsselskap, + KaarytelseUtenforJordOgSkogbruksvirksomhet, + KapitalinntektFraSkogbruk, + KapitalkostnadFraSkogbruk, + KompensasjonsytelseUtbetaltAvNavInnenFiskeOgFangst, + Kontantbeloep, + Kvalifiseringsstoenad, + LatentEllerRealisertGevinstPaaAksjeAndelMvVedUtflytting, + LatentEllerRealisertGevinstPaaAnnetFinansproduktMvVedUtflytting, + LatentEllerRealisertTapPaaAksjeAndelMvVedUtflytting, + LatentEllerRealisertTapPaaAnnetFinansproduktMvVedUtflytting, + LivrenterIArbeidsforhold, + LivrenterUtenforArbeidsforhold, + LoennsinntektMedTrygdeavgiftspliktOmfattetAvLoennstrekkordningen, + LoennsinntektPaaSvalbardOver12G, + LoennsinntektTilBarn, + LoennsinntektUtenTrygdeavgiftspliktOgMedTrekkplikt, + LoennsinntektUtenTrygdeavgiftspliktOmfattetAvLoennstrekkordningen, + MinstefradragIBarnepensjon, + MinstefradragIBarnepensjonTilBarn, + MinstefradragIEktefelletillegg, + MinstefradragIInntekt, + MinstefradragIInntektTilBarn, + MottattFesteavgift, + NaeringsinntektFraKompensasjonsytelseUtbetaltAvNavInnenAnnenNaering, + NaeringsinntektFraKompensasjonsytelseUtbetaltAvNavInnenBarnepassIBarnepasserensHjem, + NaeringsinntektFraKompensasjonsytelseUtbetaltAvNavInnenFiskeOgFangst, + NegativAlminneligInntektOverfoertFraEktefelle, + NegativAlminneligInntektOverfoertTilEktefelle, + NegativFormueOverfoertFraEktefelle, + NettoLoennsinntektFraArbeidINorge, + Nettoformue, + NettoinntektVedUtleieAvFastEiendomMv, + OevrigInntekt, + OppjustertTilleggTilAndelIFellesTapVedSalgAvAndelISDF, + OppjustertTilleggTilAndelIFellesTilleggIAlminneligInntektFraSDF, + OppjustertTilleggTilAndelIFellesTilleggIAlminneligInntektFraSDFInnenAnnenNaering, + OppjustertTilleggTilAndelIFellesTilleggIAlminneligInntektFraSDFInnenBarnepassIBarnepasserensHjem, + OppjustertTilleggTilGevinstVedRealisasjonAvAksje, + OppjustertTilleggTilGevinstVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, + OppjustertTilleggTilGevinstVedRealisasjonAvAksjesparekonto, + OppjustertTilleggTilGevinstVedRealisasjonAvAndelIAksjedelIVerdipapirfond, + OppjustertTilleggTilGevinstVedRealisasjonAvOgUttakFraAksjedelIFondskonto, + OppjustertTilleggTilGevinstVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, + OppjustertTilleggTilGevinstVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, + OppjustertTilleggTilGevinstVedSalgAvAndelINOKUS, + OppjustertTilleggTilGevinstVedSalgAvAndelISDF, + OppjustertTilleggTilLatentEllerRealisertGevinstPaaAksjeAndelMvVedUtflytting, + OppjustertTilleggTilLatentEllerRealisertTapPaaAksjeAndelMvVedUtflytting, + OppjustertTilleggTilRenteinntektMedEkstrabeskatningForLaanTilSelskap, + OppjustertTilleggTilSkattepliktigAksjegevinst, + OppjustertTilleggTilSkattepliktigUtbytteFraAksjeINOKUSIkkeRegistrertIVerdipapirsentralen, + OppjustertTilleggTilSkattepliktigUtbytteFraAksjeIkkeRegistrertIVerdipapirsentralen, + OppjustertTilleggTilSkattepliktigUtbytteFraAksjeOgVerdipapirfondAksjedel, + OppjustertTilleggTilSkattepliktigUtbytteFraAksjerRegistrertIVerdipapirsentralen, + OppjustertTilleggTilSkattepliktigUtbytteFraVerdipapirfondsandel, + OppjustertTilleggTilSkattepliktigUtbytteFraVerdipapirfondsandelTilBarn, + OppjustertTilleggTilTapVedRealisajonAvOgUttakFraAksjedelIFondskonto, + OppjustertTilleggTilTapVedRealisasjonAvAksje, + OppjustertTilleggTilTapVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, + OppjustertTilleggTilTapVedRealisasjonAvAksjesparekonto, + OppjustertTilleggTilTapVedRealisasjonAvAndelIAksjedelIVerdipapirfond, + OppjustertTilleggTilTapVedRealisasjonAvOgUttakFraAksjedelIFondskonto, + OppjustertTilleggTilTapVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, + OppjustertTilleggTilTapVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, + OppjustertTilleggTilTapVedSalgAvAndelINOKUS, + OppjustertTilleggTilUtbytteFraAksje, + OppjustertTilleggTilUtbytteFraAksjesparekonto, + OppjustertTilleggTilUtbytteFraVerdipapirfond, + OpptjenteRenterFraPrivatUtestaaendeFordring, + OpptjenteRenterFraUtestaaendeFordring, + OvergangsstoenadTilEnsligForelder, + OverskuddAvEnkeltpersonforetakInnenAnnenNaeringUtenTrygdeavgiftsplikt, + OverskuddAvEnkeltpersonforetakInnenJordbrukGartneriPelsdyrMv, + OverskuddAvEnkeltpersonforetakInnenReindrift, + OverskuddAvEnkeltpersonforetakInnenSkiferproduksjon, + OverskuddAvEnkeltpersonforetakInnenSkogbruk, + OverskuddAvSDF, + OverskuddAvUtgiftsgodtgjoerelseVedSmusstillegg, + OverskuddFraNaeringsinntekt, + PaaloepteRenterFraAnnenGjeld, + PaaloepteRenterFraInkassoselskap, + PaaloepteRenterFraPrivatGjeld, + PensjonFraUtlandetSkattefriINorge, + PensjonFraUtlandetSkattepliktigINorge, + Pensjonsinnbetaling, + PensjonsinntektFritattForSkattEtterSkatteavtale, + PensjonsinntektIEOESTilsvarendeAlderspensjonEllerAFP, + PensjonsinntektOmfattetAvLoennstrekkordningen, + PersoninntektFraKompensasjonsytelseUtbetaltAvNavInnenAnnenNaering, + PersoninntektFraKompensasjonsytelseUtbetaltAvNavInnenBarnepassIBarnepasserensHjem, + PersoninntektFraKompensasjonsytelseUtbetaltAvNavInnenFiskeOgFangst, + PersoninntektFraSDFInnenAnnenNaering, + PersoninntektFraSDFInnenFiskeEllerBarnepassIBarnepasserensHjem, + PersoninntektFraSkattefriLottMedTrygdeavgiftspliktForUtenlandskFisker, + PositivPersoninntektFraEnkeltpersonforetakPaaSvalbard, + PremieTilEgenTilleggstrygdForNaeringsdrivende, + Premiefond, + PremiefondIndividuellPensjonsavtale, + PremiefondLivsforsikring, + PrivatGjeldsbeloep, + Reisefradrag, + RenteinntektAvAnnetFinansprodukt, + RenteinntektAvLivsforsikring, + RenteinntektAvObligasjon, + RenteinntektAvObligasjonVerdipapirfondRentedelMv, + RenteinntektAvObligasjonVerdipapirfondRentedelMvIUtlandet, + RenteinntektAvSkadeforsikring, + RenteinntektAvVerdipapirfondsandel, + RenteinntektMedEkstrabeskatningForLaanTilSelskap, + ReturAvPremieFraIndividuellPensjonssparing, + ReturprovisjonKnyttetTilAksjesparekonto, + ReturprovisjonKnyttetTilFondskonto, + ReturprovisjonKnyttetTilVerdipapirfond, + SaerfradragForEnsligForsoerger, + SaerfradragOverfoertFraBarn, + SaerfradragOverfoertFraEktefelle, + SaerfradragOverfoertTilEktefelle, + SaerfradragOverfoertTilForelder, + SaerskiltFradragForFiskereOgFangstfolk, + SaerskiltFradragForSjoefolk, + SaerskiltInntektsfradragIBarnsInntekt, + SamledeAndreOpptjenteRenter, + SamledeAndrePaaloepteRenter, + SamledeOpptjenteRenterIInnenlandskeBanker, + SamledeOpptjenteRenterIUtenlandskeBanker, + SamledeOpptjenteRenterIUtlandet, + SamledePaaloepteRenter, + SamledePaaloepteRenterPaaGjeldIInnenlandskeBanker, + SamledePaaloepteRenterPaaGjeldIUtlandet, + SamledeUfoererenterOgLivrenter, + SamledeUnderholdsbidrag, + SamletAndelAvFellesgjeldIBoligselskapEllerBoligsameie, + SamletAndelAvFradragsberettigetFelleskostnadForBoligselskapEllerBoligsameie, + SamletAndelAvInntektIBoligselskapEllerBoligsameie, + SamletAnnenGjeld, + SamletAnnenInntektForForskudd, + SamletAnnenPensjonMedTrekkpliktEksklusiveEktefelletillegg, + SamletAnnenPensjonUtenTrekkplikt, + SamletAnnenRenteinntekt, + SamletAvkastningAvKapitalforsikringsavtale, + SamletAvtalefestetPensjon, + SamletBarnepensjonOgLivrente, + SamletBarnepensjonOgLivrenteTilBarn, + SamletFormuesverdiAvPrivatUtestaaendeFordring, + SamletFormuesverdiAvUtestaaendeFordring, + SamletFormuesverdiForAndelAnnenFormueIBoligselskapEllerBoligsameie, + SamletFormuesverdiForAndelerIRentedelAvVerdipapirfond, + SamletFormuesverdiForAnnenFastEiendom, + SamletFormuesverdiForFastEiendomIUtlandet, + SamletFormuesverdiForOevrigFormue, + SamletFormuesverdiForOevrigFormueIUtlandet, + SamletFormuesverdiForSekundaerbolig, + SamletFormuesverdiForSelveidFritidseiendomEllerAndelIFritidsboligselskap, + SamletFradragsberettigetKostnadTilknyttetArbeidMv, + SamletFradragsberettigetUnderskuddVedUtleieAvFastEiendom, + SamletFremfoerbartUnderskuddFraTidligereAar, + SamletGevinstVedRealisasjonAvAndreFinansprodukter, + SamletGevinstVedRealisasjonAvVerdipapirfondsandelKnyttetTilRentedel, + SamletGjeld, + SamletGjenkjoepsverdiForLivsforsikring, + SamletGrunnlagForInntektsskattTilKommuneOgFylkeskommuneStatsskattOgFellesskatt, + SamletInnenlandskGjeld, + SamletInnskuddIInnenlandskeBanker, + SamletInntektSomGirRettTilSaerskiltFradragForSjoefolk, + SamletLoennsinntektMedTrygdeavgiftspliktOgMedTrekkplikt, + SamletLoennsinntektUtenTrygdeavgiftspliktOgMedTrekkplikt, + SamletLoennsinntektUtenTrygdeavgiftspliktOgUtenTrekkplikt, + SamletMerkostnadVedArbeidsoppholdUtenforHjem, + SamletOverskuddAvEnkeltpersonforetakInnenAnnenNaering, + SamletOverskuddAvEnkeltpersonforetakInnenFamiliebarnehageEllerDagmammaIEgetHjem, + SamletOverskuddAvEnkeltpersonforetakInnenFiskeOgFangst, + SamletOverskuddAvSDFInnenAnnenNaering, + SamletOverskuddAvSDFInnenFiskeEllerFamiliebarnehage, + SamletOverskuddPaaUtgiftsgodtgjoerelse, + SamletPensjonFraFolketrygden, + SamletPensjonsinnbetalingTilIndividuellPensjonsordning, + SamletPersoninntektFraEnkeltpersonforetakInnenFamiliebarnehageEllerDagmammaIEgetHjem, + SamletPersoninntektFraEnkeltpersonforetakInnenFiskeOgFangst, + SamletPersoninntektFraEnkeltpersonforetakInnenJordbrukReindriftSkiferproduksjonOgAnnenNaering, + SamletPremiefond, + SamletSaerfradrag, + SamletSaerfradragForStoreSykdomsutgifter, + SamletSaerfradragForUfoerhetIhtOvergangsregel, + SamletSaerskiltFradragForJordbrukReindriftOgSkiferproduksjon, + SamletSkattefriDelAvFormue, + SamletSkattepliktigGevinstVedRealisasjonAvObligasjonEllerVerdipapirfondsandel, + SamletSkattepliktigOverskuddFraUtleieAvFastEiendom, + SamletSkattepliktigOverskuddFraUtleieAvFastEiendomIUtlandet, + SamletTapVedRealisasjonAvVerdipapirfondsandelKnyttetTilRentedel, + SamletUfoeretrygdFraFolketrygdenEksklusiveEktefelletillegg, + SamletUfoereytelseFraAndreEnnFolketrygden, + SamletUnderskuddAvSDF, + SamletUnderskuddAvSDFPaaSvalbard, + SamletUnderskuddINaeringsvirksomhet, + SamletUnderskuddINaeringsvirksomhetPaaSvalbard, + SamletUtgiftsgodtgjoerelseMedTrekkplikt, + SkattefradragForFormuesskattBetaltIUtlandet, + SkattefriLoennsinntektMedTrygdeavgiftspliktOgMedTrekkplikt, + SkattepliktigAksjegevinst, + SkattepliktigAvkastningEllerKundeutbytte, + SkattepliktigEtterloennOgEtterpensjon, + SkattepliktigUtbytteFraAksjeINOKUSIkkeRegistrertIVerdipapirsentralen, + SkattepliktigUtbytteFraAksjeIkkeRegistrertIVerdipapirsentralen, + SkattepliktigUtbytteFraAksjeOgVerdipapirfondAksjedel, + SkattepliktigUtbytteFraAksjerRegistrertIVerdipapirsentralen, + SkattepliktigUtbytteFraVerdipapirfondsandel, + SkattepliktigUtbytteFraVerdipapirfondsandelTilBarn, + Skjermingsfradrag, + SkjermingstilleggTilAlderspensjon, + SkyldigRestskatt, + SkyldigUnderholdsbidrag, + Slitertillegg, + Standardfradrag, + StyrehonorarFraNorskSelskapTilSkattepliktigBosattIUtlandet, + SumFradragIAlminneligInntekt, + SumGjeldsreduksjon, + SumInntekterIAlminneligInntektFoerFordelingsfradrag, + SumMinstefradrag, + SumVerdsettingsrabatt, + SupplerendeStoenad, + SupplerendeStoenadTilUfoerFlyktning, + TapOgAnnenKostnadFraVirtuellEiendel, + TapValutalaan, + TapVedRealisajonAvOgUttakFraAksjedelIFondskonto, + TapVedRealisasjonAvAksje, + TapVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, + TapVedRealisasjonAvAksjesparekonto, + TapVedRealisasjonAvAndelIAksjedelIVerdipapirfond, + TapVedRealisasjonAvAndelIRentedelIVerdipapirfond, + TapVedRealisasjonAvAnnetFinansprodukt, + TapVedRealisasjonAvObligasjonVerdipapirfondRentedelMv, + TapVedRealisasjonAvObligasjoner, + TapVedRealisasjonAvOgUttakFraAksjedelIFondskonto, + TapVedRealisasjonAvOgUttakFraRentedelIFondskonto, + TapVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, + TapVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, + TapVedRealisasjonAvVirtuellValuta, + TapVedSalgAvAndelINOKUS, + UfoererenterOgLivrenterUtenforArbeidsforhold, + UfoeretrygdFoerAlderspensjon, + UfoeretrygdOmfattetAvLoennstrekkordningen, + UfoereytelseFraIPAOgIPS, + UfoereytelseFraUtlandet, + UnderholdsbidragFraTidligereEktefelle, + UnderholdsbidragTilGode, + UnderskuddAvEnkeltpersonforetakFordeltFraEktefelle, + UnderskuddAvEnkeltpersonforetakPaaSvalbard, + UnderskuddFraSDF, + UnderskuddOverfoertFraBarnOgFordelt, + UnderskuddOverfoertTilForeldre, + UnderskuddVedUtleieMvAvFastEiendomUtenforNaering, + UtbetalingFraAvtaleOmSkattefavorisertIndividuellSparingTilPensjonTegnetFomNov2017, + UtbetalingFraSkadeforsikring, + UtbytteFraAksje, + UtbytteFraAksjesparekonto, + UtbytteFraVerdipapirfond, + UtgiftVedRefinansieringAvLaan, + UtgifterTilPassOgStellAvHjemmevaerendeBarn, + VerdiFoerVerdsettingsrabattForAksje, + VerdiFoerVerdsettingsrabattForAksjeIUtlandet, + VerdiFoerVerdsettingsrabattForAksjeIVPS, + VerdiFoerVerdsettingsrabattForAksjeIkkeIVPS, + VerdiFoerVerdsettingsrabattForAksjeOgAksjefondIFondskonto, + VerdiFoerVerdsettingsrabattForAksjedelIAksjesparekonto, + VerdiFoerVerdsettingsrabattForAndelIAksjedelIVerdipapirfond, + VerdiFoerVerdsettingsrabattForAndelIFellesNettoformueISDF, + VerdiFoerVerdsettingsrabattForAndelINOKUS, + VerdiFoerVerdsettingsrabattForAnnenFormueFraDriftsmidlerAndelISDFMvGenerell, + VerdiFoerVerdsettingsrabattForAnnenFormueInnenforInntektsgivendeAktivitet, + VerdiFoerVerdsettingsrabattForBilerMaskinerOgInventar, + VerdiFoerVerdsettingsrabattForFormuesobjekterINaeringOmfattetAvVerdsettingsrabatt, + VerdiFoerVerdsettingsrabattForInventarLoesoereVedUtleie, + VerdiFoerVerdsettingsrabattForKapitalisertFesteavgift, + VerdiFoerVerdsettingsrabattForRettigheterKnyttetTilSkogUtmark, + VerdiFoerVerdsettingsrabattForSkipFiskeOgFangstfartoey, + VerdiFoerVerdsettingsrabattForVerdipapirfondsandel, + VerdiFoerVerdsettingsrabattForVerdipapirfondsandelTilBarn, + VerdsettingsrabattForAksje, + VerdsettingsrabattForAksjeIUtlandet, + VerdsettingsrabattForAksjeIVPS, + VerdsettingsrabattForAksjeIkkeIVPS, + VerdsettingsrabattForAksjeOgAksjefondIFondskonto, + VerdsettingsrabattForAksjedelIAksjesparekonto, + VerdsettingsrabattForAndelIAksjedelIVerdipapirfond, + VerdsettingsrabattForAndelIFellesNettoformueISDF, + VerdsettingsrabattForAndelINOKUS, + VerdsettingsrabattForAnnenFormueInnenforInntektsgivendeAktivitet, + VerdsettingsrabattForBilerMaskinerOgInventar, + VerdsettingsrabattForFormuesobjekterINaeringOmfattetAvVerdsettingsrabatt, + VerdsettingsrabattForInventarLoesoereVedUtleie, + VerdsettingsrabattForKapitalisertFesteavgift, + VerdsettingsrabattForRettigheterKnyttetTilSkogUtmark, + VerdsettingsrabattForSkipFiskeOgFangstfartoey, + VerdsettingsrabattForVerdipapirfondsandel, + VerdsettingsrabattForVerdipapirfondsandelTilBarn +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java new file mode 100644 index 00000000000..38799d2acf4 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java @@ -0,0 +1,123 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.http.HttpStatus; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TenorOversiktResponse { + + private HttpStatus status; + private Data data; + private String query; + private String error; + + @SuppressWarnings("java:S115") + public enum TenorRelasjon { + Arbeidsforhold, + BeregnetSkatt, + BrregErFr, + Freg, + Inntekt, + TestinnsendingSkattPerson, + SamletReskontroinnsyn, + Skattemelding, + Skatteplikt, + SpesifisertSummertSkattegrunnlag, + SummertSkattegrunnlag, + Tilleggsskatt, + Tjenestepensjonsavtale + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Rollegruppe { + private Type type; + private List fritekst; + private List roller; + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Data { + + private Integer treff; + private Integer rader; + private Integer offset; + private Integer nesteSide; + private Integer seed; + private List personer; + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Person { + + private String id; + private String fornavn; + private String etternavn; + private List tenorRelasjoner; + private Boolean iBruk; + } + + public TenorOversiktResponse copy() { + + return TenorOversiktResponse.builder() + .status(this.getStatus()) + .query(this.getQuery()) + .data(Data.builder() + .treff(this.data.getTreff()) + .rader(this.data.getRader()) + .offset(this.data.getOffset()) + .nesteSide(this.data.getNesteSide()) + .seed(this.data.getSeed()) + .personer(this.data.getPersoner()) + .build()) + .error(this.getError()) + .build(); + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Type { + private String kode; + private String beskrivelse; + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Virksomhet { + private String organisasjonsnummer; + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Rolle { + private Type type; + private Person person; + private Virksomhet virksomhet; + private Object valgtAv; + private String fratraadt; + private List fritekst; + private int rekkefolge; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java new file mode 100644 index 00000000000..db3b9134501 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java @@ -0,0 +1,147 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +import static java.util.Objects.isNull; + +@Data +@NoArgsConstructor +public class TenorRawResponse { + + private Integer treff; + private Integer rader; + private Integer offset; + private Integer nesteSide; + private Integer seed; + private List dokumentListe; + + public List getDokumentListe() { + + if (isNull(dokumentListe)) { + dokumentListe = new ArrayList<>(); + } + return dokumentListe; + } + + @Data + @NoArgsConstructor + public static class Dokument { + private String bostedsadresse; + private String id; + private String arbeidsforhold; + } + + @Data + @NoArgsConstructor + public static class TenorRelasjoner { + + private List arbeidsforhold; + private List beregnetSkatt; + private List brregErFr; + private List freg; + private List inntekt; + private List samletReskontroinnsyn; + private List skattemelding; + private List skatteplikt; + private List spesifisertSummertSkattegrunnlag; + private List summertSkattegrunnlag; + private List testinnsendingSkattPerson; + private List tilleggsskatt; + private List tjenestepensjonsavtale; + } + + @Data + @NoArgsConstructor + public static class BrregErFr { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Skattemelding { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Skatteplikt { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Inntekt { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class BeregnetSkatt { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class SummertSkattegrunnlag { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Freg { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class SpesifisertSummertSkattegrunnlag { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Tjenestepensjonsavtale { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Tilleggsskatt { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Arbeidsforhold { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class TestinnsendingSkattPerson { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class SamletReskontroinnsyn { + + private String tenorRelasjonsnavn; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java new file mode 100644 index 00000000000..e0554e5529a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java @@ -0,0 +1,357 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigInteger; +import java.time.LocalDate; +import java.time.YearMonth; +import java.util.ArrayList; +import java.util.List; + +import static java.util.Objects.isNull; + +@Data +@NoArgsConstructor +@SuppressWarnings("java:S115") +public class TenorRequest { + + public enum IdentifikatorType {Foedselsnummer, DNummer, DNummerOgFoedselsnr} + + public enum Kjoenn {Mann, Kvinne} + + public enum Rolle {DagligLeder} + + public enum Personstatus {Bosatt, Doed, Forsvunnet, Foedselsregistrert, IkkeBosatt, Inaktiv, Midlertidig, Opphoert, Utflyttet} + + public enum Sivilstand {EnkeEllerEnkemann, Gift, GjenlevendePartner, RegistrertPartner, Separert, SeparertPartner, Skilt, SkiltPartner, Ugift, Uoppgitt} + + public enum UtenlandskPersonIdentifikasjon {UtenlandskIdentifikasjonsnummer, TaxIdentificationNumber, SocialSecurityNumber, UtlendingsmyndighetenesIdentifikasjonsnummer} + + public enum IdentitetsgrunnlagStatus {IkkeKontrollert, IngenStatus, Kontrollert} + + public enum Adressebeskyttelse {Fortrolig, StrengtFortrolig} + + public enum AdresseGradering {Ugradert, Klientadresse, Fortrolig} + + public enum Relasjon {Barn, Far, Medmor, Mor, Partner} + + public enum Skattemeldingstype {KunUtkast, UtkastOgFastsatt} + + public enum Inntektstype {Loennsinntekt, Naeringsinntekt, PensjonEllerTrygd, YtelseFraOffentlige} + + public enum AOrdningBeskrivelse { + Alderspensjon, AlderspensjonSkjermingstillegg, AndreBeskrivelser, + Arbeidsavklaringspenger, AvtalefestetPensjon, Bil, Bonus, DagpengerVedArbeidsloeshet, Ektefelletillegg, + ElektroniskKommunikasjon, Fagforeningskontingent, FastBilgodtgjoerelse, Fastloenn, FastTillegg, Feriepenger, + Foreldrepenger, IpaEllerIpsPeriodiskeYtelser, Kvalifiseringsstoenad, NyAvtalefestetPensjonPrivatSektor, + PensjonOgLivrenterIArbeidsforhold, ReiseKostMedOvernattingPaaHybelMedKokEllerPrivat, + ReiseKostMedOvernattingPaaHybelUtenKokEllerPensjonatEllerBrakke, Sykepenger, Timeloenn, Ufoeretrygd + } + + public enum Forskuddstrekk { + OrdinaertForskuddstrekk, Barnepensjon, KildeskattPaaPensjon, Svalbard, + JanMayenOgBilandene, BetaltTrygdeavgiftTilJanMayen + } + + public enum Skattepliktstype {SkattepliktTilNorge, SkattepliktTilSvalbard} + + public enum SaerskiltSkatteplikt { + KildeskattepliktPaaLoenn, KildeskattepliktPaaPensjon, + SkattepliktAvNaeringsdriftEiendomMv, SkattepliktEtterPetroleumsskatteloven, + SkattepliktPaaLoennFraDenNorskeStatOpptjentIUtlandet, SkattepliktSomSjoemann, + SkattepliktSomUtenrikstjenestemann, SkattepliktVedUtenriksoppholdINorskStatstjenesteEllerNato + } + + public enum TilleggsskattType { + FradragForTvangsmulkt, SkjerpetTilleggsskattFraUriktigeOpplysninger, TilleggsskattFraUriktigeOpplysninger, + TilleggsskattFraManglendeInnlevering, SkjerpetTilleggsskattFraManglendeInnlevering + } + + public enum Arbeidsforholdstype { + OrdinaertArbeidsforhold, MaritimtArbeidsforhold, FrilanserOppdragstakerHonorarPersonerMm + } + + public enum Oppgjoerstype {Fastland, Svalbard, KildeskattPaaLoenn} + + public enum Stadietype {Utkast, Fastsatt, Oppgjoer} + + @Schema(description = "Personidentifikator, fødselsnummer eller d-nummer") + private String identifikator; + private IdentifikatorType identifikatorType; + private DatoIntervall foedselsdato; + private DatoIntervall doedsdato; + private Kjoenn kjoenn; + private Personstatus personstatus; + private Sivilstand sivilstand; + private List utenlandskPersonIdentifikasjon; + private IdentitetsgrunnlagStatus identitetsgrunnlagStatus; + private Adressebeskyttelse adressebeskyttelse; + private Boolean harLegitimasjonsdokument; + private Boolean harFalskIdentitet; + private Boolean harNorskStatsborgerskap; + private Boolean harFlereStatsborgerskap; + private Navn navn; + private Adresser adresser; + private Relasjoner relasjoner; + private Hendelser hendelser; + + private List roller; + private Tjenestepensjonsavtale tjenestepensjonsavtale; + private Skattemelding skattemelding; + private Inntekt inntekt; + private Skatteplikt skatteplikt; + private Tilleggsskatt tilleggsskatt; + private Arbeidsforhold arbeidsforhold; + private BeregnetSkatt beregnetSkatt; + private TestinnsendingSkattPerson testinnsendingSkattPerson; + private SamletReskontroInnsyn samletReskontroInnsyn; + private SummertSkattegrunnlag summertSkattegrunnlag; + private SpesisfisertSummertSkattegrunnlag spesifisertSummertSkattegrunnlag; + + public List getUtenlandskPersonIdentifikasjon() { + + if (isNull(utenlandskPersonIdentifikasjon)) { + utenlandskPersonIdentifikasjon = new ArrayList<>(); + } + return utenlandskPersonIdentifikasjon; + } + + public List getRoller() { + + if (isNull(roller)) { + roller = new ArrayList<>(); + } + return roller; + } + + @Data + @NoArgsConstructor + public static class DatoIntervall { + + @Schema(type = "string", format = "YYYY-MM-DD", example = "2018-07-01") + private LocalDate fraOgMed; + @Schema(type = "string", format = "YYYY-MM-DD", example = "2020-07-01") + private LocalDate tilOgMed; + } + + @Data + @NoArgsConstructor + public static class Intervall { + + private BigInteger fraOgMed; + private BigInteger tilOgMed; + } + + @Data + @NoArgsConstructor + public static class Navn { + + private Intervall navnLengde; + private Boolean harFlereFornavn; + private Boolean harMellomnavn; + private Boolean harNavnSpesialtegn; + } + + @Data + @NoArgsConstructor + public static class Adresser { + + @Schema(description = "Adressesøk, fritekst") + private AdresseGradering adresseGradering; + private BigInteger kommunenummer; + private Boolean harBostedsadresse; + private Boolean harOppholdAnnetSted; + private Boolean harPostadresseNorge; + private Boolean harPostadresseUtland; + private Boolean harKontaktadresseDoedsbo; + private Boolean harAdresseSpesialtegn; + } + + @Data + @NoArgsConstructor + public static class Relasjoner { + + private Relasjon relasjon; + private Intervall antallBarn; + private Boolean harForeldreAnsvar; + private Intervall relasjonMedFoedselsaar; + private Boolean harDeltBosted; + private Boolean harVergemaalEllerFremtidsfullmakt; + private Boolean borMedMor; + private Boolean borMedFar; + private Boolean borMedMedmor; + private Boolean foreldreHarSammeAdresse; + } + + @Data + @NoArgsConstructor + public static class Hendelser { + + private Hendelse hendelse; + private Hendelse sisteHendelse; + } + + @Data + @NoArgsConstructor + public static class Tjenestepensjonsavtale { + + @Schema(description = "Pensjonsinnretningen organisasjonsnummer, 9 siffre") + private String pensjonsinnretningOrgnr; + @Schema(type = "string", format = "YYYY-MM", example = "2020-07") + private YearMonth periode; + } + + @Data + @NoArgsConstructor + public static class Skattemelding { + + @Schema(description = "Inntektsår, 4 siffre, årene 2018, 2019, 2020, 2021, 2022 ... osv opptil i forfjor") + private BigInteger inntektsaar; + private Skattemeldingstype skattemeldingstype; + } + + @Data + @NoArgsConstructor + public static class Inntekt { + + private MonthInterval periode; + private BigInteger opplysningspliktig; + private List inntektstyper; + private AOrdningBeskrivelse beskrivelse; + private List forskuddstrekk; + private Boolean harHistorikk; + + public List getInntektstyper() { + + if (isNull(inntektstyper)) { + inntektstyper = new ArrayList<>(); + } + return inntektstyper; + } + + public List getForskuddstrekk() { + + if (isNull(forskuddstrekk)) { + forskuddstrekk = new ArrayList<>(); + } + return forskuddstrekk; + } + } + + @Data + @NoArgsConstructor + public static class MonthInterval { + + @Schema(type = "string", format = "YYYY-MM", example = "2020-07") + private YearMonth fraOgMed; + @Schema(type = "string", format = "YYYY-MM", example = "2020-07") + private YearMonth tilOgMed; + } + + @Data + @NoArgsConstructor + public static class Skatteplikt { + + @Schema(description = "Inntektsår, 4 siffre, årene 2019, 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + private List skattepliktstyper; + private SaerskiltSkatteplikt saerskiltSkatteplikt; + + public List getSkattepliktstyper() { + + if (isNull(skattepliktstyper)) { + skattepliktstyper = new ArrayList<>(); + } + return skattepliktstyper; + } + } + + @Data + @NoArgsConstructor + public static class Tilleggsskatt { + + private BigInteger inntektsaar; + private List tilleggsskattTyper; + + public List getTilleggsskattTyper() { + + if (isNull(tilleggsskattTyper)) { + tilleggsskattTyper = new ArrayList<>(); + } + return tilleggsskattTyper; + } + } + + @Data + @NoArgsConstructor + public static class Arbeidsforhold { + + private DatoIntervall startDatoPeriode; + private DatoIntervall sluttDatoPeriode; + private Boolean harPermisjoner; + private Boolean harPermitteringer; + private Boolean harArbeidsgiver; + private Boolean harTimerMedTimeloenn; + private Boolean harUtenlandsopphold; + private Boolean harHistorikk; + private Arbeidsforholdstype arbeidsforholdstype; + } + + @Data + @NoArgsConstructor + public static class BeregnetSkatt { + + @Schema(description = "Inntektsår, 4 siffre, årene 2018, 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + private Oppgjoerstype oppgjoerstype; + private Boolean pensjonsgivendeInntekt; + } + + @Data + @NoArgsConstructor + @Schema(description = "Opplysninger fra skatteetatens innsendingsmiljoe") + public static class TestinnsendingSkattPerson { + + @Schema(description = "Inntektsår, 4 siffre, årene 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + @Schema(description = "Skattemelding utkast, merk at false indikerer har ikke skatteMeldingUtkast") + private Boolean harSkattemeldingUtkast; + @Schema(description = "Skattemelding fastsatt, merk at false indikerer har ikke skatteMeldingFastsatt") + private Boolean harSkattemeldingFastsatt; + } + + @Data + @NoArgsConstructor + public static class SamletReskontroInnsyn { + + private Boolean harKrav; + private Boolean harInnbetaling; + } + + @Data + @NoArgsConstructor + public static class SummertSkattegrunnlag { + + @Schema(description = "Inntektsår, 4 siffre, årene 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + private Stadietype stadietype; + private Oppgjoerstype oppgjoerstype; + private TekniskNavn tekniskNavn; + private Intervall alminneligInntektFoerSaerfradragBeloep; + } + + @Data + @NoArgsConstructor + public static class SpesisfisertSummertSkattegrunnlag { + + @Schema(description = "Inntektsår, 4 siffre, årene 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + private Stadietype stadietype; + private Oppgjoerstype oppgjoerstype; + private TekniskNavn tekniskNavn; + private Spesifiseringstype spesifiseringstype; + private Intervall alminneligInntektFoerSaerfradragBeloep; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java new file mode 100644 index 00000000000..c5affb86304 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java @@ -0,0 +1,20 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.http.HttpStatus; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TenorResponse { + + private HttpStatus status; + private JsonNode data; + private String query; + private String error; +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/mapper/TenorResultMapperService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/mapper/TenorResultMapperService.java new file mode 100644 index 00000000000..09ad4097a40 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/mapper/TenorResultMapperService.java @@ -0,0 +1,114 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.mapper; +/* +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.swagger.v3.core.util.Json; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorRawResponse; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorOversiktResponse; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorResponse; +import org.apache.commons.lang3.StringUtils; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; +import org.springframework.web.server.ResponseStatusException; + +import java.lang.reflect.InvocationTargetException; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.StringTokenizer; + +import static java.util.Collections.emptyList; +import static java.util.Objects.nonNull; + +@Slf4j +@Service +@RequiredArgsConstructor +public class TenorResultMapperService { + + private final ObjectMapper objectMapper; + + public TenorOversiktResponse map(TenorResponse resultat, String query) { + + return TenorOversiktResponse.builder() + .status(resultat.getStatus()) + .error(resultat.getError()) + .data(convert(resultat)) + .query(query) + .build(); + } + + private TenorOversiktResponse.Data convert(TenorResponse tenorResponse) { + + if (tenorResponse.getStatus().is2xxSuccessful()) { + log.info("Mottok tenor respons: {}", Json.pretty(tenorResponse.getData())); + try { + var preamble = new StringBuilder(); + var noHyphenCharsInValues = new StringTokenizer(tenorResponse.getData().toString(), "-"); + while (noHyphenCharsInValues.hasMoreTokens()) { + preamble.append(StringUtils.capitalize(noHyphenCharsInValues.nextToken())); + } + + var response = objectMapper.readValue(preamble.toString(), TenorRawResponse.class); + return TenorOversiktResponse.Data.builder() + .rader(response.getRader()) + .treff(response.getTreff()) + .offset(response.getOffset()) + .nesteSide(response.getNesteSide()) + .seed(response.getSeed()) + .personer(map(response)) + .build(); + + } catch (JsonProcessingException e) { + log.error("Feil ved konvertering av tenor respons {}", e.getMessage(), e); + throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, + "Feil ved konvertering av tenor response: %s".formatted(e.getMessage()), e); + } + } else { + return null; + } + } + + private static List map(TenorRawResponse response) { + + return response.getDokumentListe().stream() + .map(TenorResultMapperService::map) + .toList(); + } + + private static TenorOversiktResponse.Person map(TenorRawResponse.Dokument dokument) { + + return TenorOversiktResponse.Person.builder() + .id(dokument.getId()) + .fornavn(dokument.getFornavn()) + .etternavn(dokument.getEtternavn()) + .tenorRelasjoner(map(dokument.getTenorRelasjoner())) + .build(); + } + + private static List map(TenorRawResponse.TenorRelasjoner tenorRelasjoner) { + + return nonNull(tenorRelasjoner) ? + Arrays.stream(tenorRelasjoner.getClass().getMethods()) + .filter(metode -> metode.getName().startsWith("get")) + .filter(metode -> metode.getReturnType().equals(List.class)) + .map(metode -> { + try { + return (List) metode.invoke(tenorRelasjoner); + } catch (IllegalAccessException | InvocationTargetException e) { + log.error("Kunne ikke hente relasjoner", e); + return null; + } + }) + .filter(Objects::nonNull) + .flatMap(List::stream) + .map(tenorRelasjon -> tenorRelasjon.getClass().getSimpleName()) + .distinct() + .sorted() + .map(TenorOversiktResponse.TenorRelasjon::valueOf) + .toList() : + emptyList(); + } +} +*/ \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java new file mode 100644 index 00000000000..0d5bec7d4a5 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java @@ -0,0 +1,23 @@ +package no.nav.testnorge.apps.levendearbeidsforholdansettelse.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.TenorConsumer; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class TenorPersonService { + + private final TenorConsumer tenorConsumer; + + @EventListener(ApplicationReadyEvent.class) + public void tenorPersonService() throws JsonProcessingException { + tenorConsumer.consume(); + System.out.println("TenorPersonService"); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml index 25acc22b68c..fdffffd8d6e 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -53,4 +53,5 @@ consumers: namespace: dolly url: https://testnav-aareg-proxy.dev-fss-pub.nais.io cluster: dev-fss - + tenor-search-service: + url: https://testdata.api.skatteetaten.no From 8936a04e4f4a7d6b3bc421b1d486d4e125ca001b Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Wed, 10 Jul 2024 07:44:53 +0200 Subject: [PATCH 143/161] Endre til log.info #deploy-levende-arbeidsforhold-ansettelse --- .../levendearbeidsforholdansettelse/config/KafkaConfig.java | 5 +++-- .../consumers/TenorConsumer.java | 6 +++--- .../service/TenorPersonService.java | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java index c923e02520f..de70156a8d5 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java @@ -1,5 +1,5 @@ package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; - +/* import io.confluent.kafka.serializers.AbstractKafkaSchemaSerDeConfig; import io.confluent.kafka.serializers.KafkaAvroDeserializer; @@ -89,4 +89,5 @@ public void consumerRemoved(String id, Consumer consumer) { factory.setCommonErrorHandler(new CommonLoggingErrorHandler()); return factory; } -} \ No newline at end of file +} +*/ \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java index b8c142e458f..9e4499708cd 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java @@ -58,16 +58,16 @@ public TenorConsumer( } public void consume() throws JsonProcessingException { - System.out.println("Kjører consume"); + log.info("Kjører consume"); var accessToken = tokenExchange.exchange(serverProperties).block(); - System.out.println("Har hentet ut token"); + log.info("Har hentet ut token"); if (nonNull(accessToken)) { var token = accessToken.getTokenValue(); HentPersonerCommand commander = new HentPersonerCommand(token, webClient); JsonNode data = commander.hentPersonData(); var rawResponse = objectMapper.readValue(data.toString(), TenorRawResponse.class); - System.out.println(rawResponse.getDokumentListe().getFirst().getBostedsadresse().toString()); + log.info(rawResponse.getDokumentListe().getFirst().getBostedsadresse().toString()); } } } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java index 0d5bec7d4a5..040fa078b5a 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java @@ -17,7 +17,7 @@ public class TenorPersonService { @EventListener(ApplicationReadyEvent.class) public void tenorPersonService() throws JsonProcessingException { + log.info("Henter tenor person"); tenorConsumer.consume(); - System.out.println("TenorPersonService"); } } From efae088be62aa42ba8ae0aff101393a304eecf46 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Wed, 10 Jul 2024 08:34:30 +0200 Subject: [PATCH 144/161] La til tenor proxy config --- .../apps/levendearbeidsforholdansettelse/config/Consumers.java | 2 +- .../consumers/TenorConsumer.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java index f2a27ba2d5d..889078d6e0c 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java @@ -25,6 +25,6 @@ public class Consumers { private ServerProperties testnavAaregProxy; - private ServerProperties tenorSearchService; + private ServerProperties testnavTenorSearchService; } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java index 9e4499708cd..163d17929a8 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java @@ -33,7 +33,7 @@ public TenorConsumer( Consumers consumers, ObjectMapper objectMapper) { - this.serverProperties = consumers.getTenorSearchService(); + this.serverProperties = consumers.getTestnavTenorSearchService(); this.tokenExchange = tokenExchange; this.objectMapper = objectMapper; From 137d749e3c6920b724abad3ce62ce6830662c298 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Wed, 10 Jul 2024 09:16:24 +0200 Subject: [PATCH 145/161] Kopiert over til v2 --- .../config/Consumers.java | 2 +- .../consumers/TenorConsumer.java | 74 +++ .../command/HentPersonerCommand.java | 36 ++ .../domain/tenor/Hendelse.java | 50 ++ .../domain/tenor/Spesifiseringstype.java | 35 ++ .../domain/tenor/TekniskNavn.java | 430 ++++++++++++++++++ .../domain/tenor/TenorOversiktResponse.java | 123 +++++ .../domain/tenor/TenorRawResponse.java | 147 ++++++ .../domain/tenor/TenorRequest.java | 357 +++++++++++++++ .../domain/tenor/TenorResponse.java | 20 + .../service/TenorPersonService.java | 24 + 11 files changed, 1297 insertions(+), 1 deletion(-) create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/TenorConsumer.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentPersonerCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Hendelse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Spesifiseringstype.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TekniskNavn.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorOversiktResponse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRawResponse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRequest.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorResponse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/service/TenorPersonService.java diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/Consumers.java index 89457a5b48f..17c6433baf7 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/Consumers.java +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/Consumers.java @@ -25,5 +25,5 @@ public class Consumers { private ServerProperties testnavAaregProxy; - + private ServerProperties testnavTenorSearchService; } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/TenorConsumer.java new file mode 100644 index 00000000000..1e3d6f8bd2f --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/TenorConsumer.java @@ -0,0 +1,74 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.command.HentPersonerCommand; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config.Consumers; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.TenorConsumer; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor.TenorRawResponse; +import org.springframework.http.MediaType; +import org.springframework.http.codec.json.Jackson2JsonDecoder; +import org.springframework.http.codec.json.Jackson2JsonEncoder; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.ExchangeStrategies; +import org.springframework.web.reactive.function.client.WebClient; + +import static java.util.Objects.nonNull; + +@Slf4j +@Component +public class TenorConsumer { + private static final String TENOR_DOMAIN = "https://testnav-tenor-search-service.intern.dev.nav.no"; + private final WebClient webClient; + private final TokenExchange tokenExchange; + private final ServerProperties serverProperties; + private final ObjectMapper objectMapper; + + + public TenorConsumer( + TokenExchange tokenExchange, + Consumers consumers, + ObjectMapper objectMapper) { + + this.serverProperties = consumers.getTestnavTenorSearchService(); + this.tokenExchange = tokenExchange; + this.objectMapper = objectMapper; + + ExchangeStrategies jacksonStrategy = ExchangeStrategies + .builder() + .codecs( + config -> { + config + .defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + config + .defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + }) + .build(); + + this.webClient = WebClient + .builder() + .exchangeStrategies(jacksonStrategy) + .baseUrl(TENOR_DOMAIN) + .build(); + } + + public void consume() throws JsonProcessingException { + log.info("Kjører consume"); + var accessToken = tokenExchange.exchange(serverProperties).block(); + log.info("Har hentet ut token"); + + if (nonNull(accessToken)) { + var token = accessToken.getTokenValue(); + HentPersonerCommand commander = new HentPersonerCommand(token, webClient); + JsonNode data = commander.hentPersonData(); + var rawResponse = objectMapper.readValue(data.toString(), TenorRawResponse.class); + log.info(rawResponse.getDokumentListe().getFirst().getBostedsadresse().toString()); + } + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentPersonerCommand.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentPersonerCommand.java new file mode 100644 index 00000000000..2a4b05e355f --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentPersonerCommand.java @@ -0,0 +1,36 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.command; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor.TenorRawResponse; +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor.TenorResponse; +import org.springframework.http.HttpHeaders; +import org.springframework.web.reactive.function.client.WebClient; + +@Slf4j +@RequiredArgsConstructor +public class HentPersonerCommand { + private static final String PATH = "/api/v1/tenor/testdata/raw"; + private final String token; + private final WebClient webClient; + + public JsonNode hentPersonData(){ + System.out.println("Henter personer"); + var request = webClient + .get() + .uri(builder -> builder + .path(PATH) + .queryParam("type", "Spesifikt") + .queryParam("fields", "id", "bostedsadresse", "arbeidsforhold") + .build() + ) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .retrieve() + .bodyToMono(TenorResponse.class); + var response = request.block(); + + System.out.println("Fikk respons!"); + return response.getData(); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Hendelse.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Hendelse.java new file mode 100644 index 00000000000..24d1b903a90 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Hendelse.java @@ -0,0 +1,50 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; + +@SuppressWarnings("java:S115") +public enum Hendelse { + + EndringIAdressebeskyttelse, + EndringIBostedsadresse, + EndringIBostedsadresseUtenFlytting, + EndringIBrukAvSamiskSpraak, + EndringIDeltBosted, + EndringIDoedsfall, + EndringIFalskIdentitet, + EndringIFamilierelasjon, + EndringIFoedsel, + EndringIFoedselINorge, + EndringIForeldreansvar, + EndringIFratattRettsligHandleevne, + EndringIIdentifikasjonsnummer, + EndringIIdentitetsgrunnlag, + EndringIInnflytting, + EndringIKjoenn, + EndringIKontaktinformasjon, + EndringIKontaktopplysningerForDoedsbo, + EndringILegitimasjonsdokument, + EndringINavn, + EndringIOpphold, + EndringIOppholdPaaSvalbard, + EndringIOppholdsadresse, + EndringIPerson, + EndringIRettsligHandleevne, + EndringISametingetsValgmanntall, + EndringISivilstand, + EndringIStatsborgerskap, + EndringIStatus, + EndringIUtenlandskPersonidentifikasjon, + EndringIUtflytting, + EndringIUtlendingsmyndighetenesIdentifikasjonsnummer, + EndringIVergemaal, + PersonErBosatt, + PersonErDoed, + PersonErEndretVedSplitting, + PersonErGjenopprettetVedSplitting, + PersonErOppdatert, + PersonErOpphoert, + PersonErOpphoertSomDublett, + PersonErOpprettet, + PersonErReaktivert, + PersonErUtflyttet, + PersonErViderefoertSomGjeldendeVedSammenslaaing +} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Spesifiseringstype.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Spesifiseringstype.java new file mode 100644 index 00000000000..44f73ff9da9 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Spesifiseringstype.java @@ -0,0 +1,35 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; + +@SuppressWarnings("java:S115") +public enum Spesifiseringstype { + + AksjeIkkeIAksjonaerregisteret, + Aksjesparekonto, + AndreBeloepKnyttetTilBoligOgEiendeler, + AnnenKapitalkostnad, + AnnetFinansprodukt, + DeltakersAndelAvFormueOgInntekt, + Eiendom, + Fondskonto, + Fordring, + FritidsbaatMedSalgsverdiOverSalgsverdigrense, + Generisk, + GrunnlagKnyttetTilLottaker, + KapitalisertFesteavgift, + Kjoeretoey, + KollektivPensjonsordning, + Konto, + Livsforsikring, + LoennOgTilsvarendeYtelser, + Naeringsopplysninger, + ObligasjonOgSertifikat, + OekonomiskeForholdKnyttetTilBoligsameieEllerBoligselskap, + PrivatGjeldsforholdUtenforVirksomhet, + SamletGjeldOgFormuesobjekterINaering, + Skadeforsikring, + SkyldigRestskatt, + SykepengerOgAnnenInntektMvFraOppgavegiver, + Verdipapirfond, + VirtuellEiendel, + VirtuellValuta +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TekniskNavn.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TekniskNavn.java new file mode 100644 index 00000000000..ae1bd3042b8 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TekniskNavn.java @@ -0,0 +1,430 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; + +@SuppressWarnings("java:S115") +public enum TekniskNavn { + AaretsFremfoerbareNegativPersoninntekt, + AarsavgiftForKontoIVerdipapirregister, + AlderspensjonFraFolketrygden, + AlderspensjonFraIPAOgIPS, + AlminneligInntektFoerSaerfradrag, + AndelAvFellesgjeldISDF, + AndelAvUnderskuddFraTidligereAarVedDriftAvVaaningshusSomAnvendesIAaret, + AndelIFellesTapVedSalgAvAndelISDF, + AndelIFellesTilleggIAlminneligInntektFraSDF, + AndelIFellesTilleggIAlminneligInntektFraSDFInnenAnnenNaering, + AndelIFellesTilleggIAlminneligInntektFraSDFInnenBarnepassIBarnepasserensHjem, + AndreFradragsberettigedeKostnader, + AnnenArbeidsinntekt, + AnnenGjeld, + AnnenPensjonFoerAlderspensjon, + AnnenSkattepliktigKapitalinntektFraAnnetFinansprodukt, + AnnenSkattepliktigKapitalinntektFraVirtuellValuta, + AnnetInntektsfradrag, + Arbeidsavklaringspenger, + ArbeidsinntektFraKompensasjonsytelseUtbetaltAvNav, + AvkortetFordelVedElektroniskKommunikasjon, + BarnepensjonFraAndreEnnFolketrygden, + BarnepensjonFraFolketrygden, + BarnepensjonFraIPAOgIPS, + BetaltPremieTilSykeOgUlykkesforsikringForNaeringsdrivende, + BetaltUnderholdsbidrag, + BetalteForsinkelsesrenter, + Bruttoformue, + DagpengerForFisker, + DagpengerForNaeringsdrivende, + DagpengerForNaeringsdrivendeOgFisker, + DagpengerVedSykehusoppholdMvFraBarneforsikring, + EktefelletilleggTilPensjon, + EktefelletilleggTilUfoeretrygd, + EngangsutbetalingFraIPSIPA, + EtterlattepensjonFraFolketrygden, + Foederaad, + FormuesverdiAvPrivatUtestaaendeFordring, + FormuesverdiAvUtestaaendeFordring, + FormuesverdiForAndelIRentedelIVerdipapirfond, + FormuesverdiForAnnenFastEiendom, + FormuesverdiForAnnenFastEiendomInnenforInntektsgivendeAktivitet, + FormuesverdiForAnnenFastEiendomUtenforInntektsgivendeAktivitet, + FormuesverdiForAnnetFinansprodukt, + FormuesverdiForBorett, + FormuesverdiForBuskap, + FormuesverdiForEgenFritaksbehandletBolig, + FormuesverdiForFormuesobjekterINaeringIkkeOmfattetAvVerdsettingsrabatt, + FormuesverdiForFritidsbaatMedSalgsverdiOverSalgsverdigrense, + FormuesverdiForGaardsbruk, + FormuesverdiForInnboLoesoereOgFritidsbaatUnderSalgsverdigrense, + FormuesverdiForKjoeretoey, + FormuesverdiForKontanterIAksjesparekonto, + FormuesverdiForKontanterMvIFondskonto, + FormuesverdiForNaeringseiendom, + FormuesverdiForObligasjon, + FormuesverdiForObligasjonerOpsjonerMvIkkeRegistrertIVerdipapirsentralen, + FormuesverdiForObligasjonerOpsjonerMvRegistrertIVerdipapirsentralen, + FormuesverdiForPrimaerbolig, + FormuesverdiForRegnskapsbehandletBolig, + FormuesverdiForRegnskapsbehandletFritidseiendom, + FormuesverdiForSekundaerbolig, + FormuesverdiForSkogeiendom, + FormuesverdiForTomt, + FormuesverdiForUbetingetOpsjonIArbeidsforhold, + FormuesverdiForUtestaaendeFordringerINaering, + FormuesverdiForUtleidFlerboligbygning, + FormuesverdiForVarelager, + FormuesverdiForVirtuellValuta, + Fortsettelsesforsikring, + ForvaltningskostnadKnyttetTilAksjesparekonto, + ForvaltningskostnadKnyttetTilFondskonto, + ForvaltningskostnadKnyttetTilVerdipapirfond, + ForvaltningskostnaderFinans, + FradragForFagforeningskontingent, + FradragForGaverTilFrivilligeOrganisasjoner, + FradragForIndividuellSparingTilPensjon, + FradragForKostnaderKnyttetTilArbeid, + FradragForMerkostnadVedArbeidsoppholdUtenforHjemmet, + FradragForPengetilskudd, + FradragForVergegodtgjoerelse, + FradragsberettigedeFoederaadsytelserOgUnderholdsbidragTilAnnenPerson, + FradragsberettigetTapPaaKapitalforsikringsavtale, + FradragsberettigetTapVedRealisasjonAvFastEiendom, + FradragsberettigetTapVedRealisasjonAvFastEiendomIUtlandet, + FremfoerbartUnderskuddIEnkeltpersonforetak, + GevinstOgAnnenInntektFraVirtuellEiendel, + GevinstValutalaan, + GevinstVedRealisasjonAvAksje, + GevinstVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, + GevinstVedRealisasjonAvAksjesparekonto, + GevinstVedRealisasjonAvAndelIAksjedelIVerdipapirfond, + GevinstVedRealisasjonAvAndelIRentedelIVerdipapirfond, + GevinstVedRealisasjonAvAnnetFinansprodukt, + GevinstVedRealisasjonAvFastEiendomMv, + GevinstVedRealisasjonAvFastEiendomMvIUtlandet, + GevinstVedRealisasjonAvObligasjonVerdipapirfondRentedelMv, + GevinstVedRealisasjonAvObligasjonerSertifikaterMv, + GevinstVedRealisasjonAvOgUttakFraAksjedelIFondskonto, + GevinstVedRealisasjonAvOgUttakFraRentedelIFondskonto, + GevinstVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, + GevinstVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, + GevinstVedRealisasjonAvVirtuellValuta, + GevinstVedSalgAvAndelINOKUS, + GevinstVedSalgAvAndelISDF, + GjeldIInnenlandskeBanker, + GjeldINaering, + GjeldIUtlandet, + GjeldPaaAnnetFinansprodukt, + GjeldsfradragForKapitalisertFesteavgift, + GjeldsreduksjonForFastEiendomIUtlandetUnntattBeskatningINorgeEtterSkatteavtale, + GjeldsreduksjonForFastEiendomUtenforSvalbardUnntattBeskatningPaaSvalbard, + GjeldsrentereduksjonForFormueIUtlandetUnntattBeskatningINorgeEtterSkatteavtale, + GjeldsrentereduksjonForFormueUtenforSvalbardUnntattBeskatningPaaSvalbard, + GjenkjoepsverdiForLivsforsikring, + GrunnlagForKildeskattPaaPensjonOgUfoereytelser, + GrunnlagForSkattPaaAlminneligInntektSvalbard, + GrunnlagForSkattPaaNaeringsoverskuddSvalbard, + Innskudd, + InnskuddIUtlandet, + InntektFraGevinstOgTapskonto, + InntektFraLottEllerPartTilFiskerOgFangstmann, + InntektVedUtleieAvFritidseiendomSomSkattepliktigeHarBrukt, + InntektsfoeringAvNegativSaldo, + InntektsfradragAvRentefordelPaaLaanIArbeidsforhold, + InntektsfradragAvRentefordelPaaLaanIPensjonsforhold, + InntektsfradragFraGevinstOgTapskonto, + InntektsreduksjonVedAvkastningAvEngangserstatning, + Introduksjonsstoenad, + InvesteringIOppstartsselskap, + KaarytelseUtenforJordOgSkogbruksvirksomhet, + KapitalinntektFraSkogbruk, + KapitalkostnadFraSkogbruk, + KompensasjonsytelseUtbetaltAvNavInnenFiskeOgFangst, + Kontantbeloep, + Kvalifiseringsstoenad, + LatentEllerRealisertGevinstPaaAksjeAndelMvVedUtflytting, + LatentEllerRealisertGevinstPaaAnnetFinansproduktMvVedUtflytting, + LatentEllerRealisertTapPaaAksjeAndelMvVedUtflytting, + LatentEllerRealisertTapPaaAnnetFinansproduktMvVedUtflytting, + LivrenterIArbeidsforhold, + LivrenterUtenforArbeidsforhold, + LoennsinntektMedTrygdeavgiftspliktOmfattetAvLoennstrekkordningen, + LoennsinntektPaaSvalbardOver12G, + LoennsinntektTilBarn, + LoennsinntektUtenTrygdeavgiftspliktOgMedTrekkplikt, + LoennsinntektUtenTrygdeavgiftspliktOmfattetAvLoennstrekkordningen, + MinstefradragIBarnepensjon, + MinstefradragIBarnepensjonTilBarn, + MinstefradragIEktefelletillegg, + MinstefradragIInntekt, + MinstefradragIInntektTilBarn, + MottattFesteavgift, + NaeringsinntektFraKompensasjonsytelseUtbetaltAvNavInnenAnnenNaering, + NaeringsinntektFraKompensasjonsytelseUtbetaltAvNavInnenBarnepassIBarnepasserensHjem, + NaeringsinntektFraKompensasjonsytelseUtbetaltAvNavInnenFiskeOgFangst, + NegativAlminneligInntektOverfoertFraEktefelle, + NegativAlminneligInntektOverfoertTilEktefelle, + NegativFormueOverfoertFraEktefelle, + NettoLoennsinntektFraArbeidINorge, + Nettoformue, + NettoinntektVedUtleieAvFastEiendomMv, + OevrigInntekt, + OppjustertTilleggTilAndelIFellesTapVedSalgAvAndelISDF, + OppjustertTilleggTilAndelIFellesTilleggIAlminneligInntektFraSDF, + OppjustertTilleggTilAndelIFellesTilleggIAlminneligInntektFraSDFInnenAnnenNaering, + OppjustertTilleggTilAndelIFellesTilleggIAlminneligInntektFraSDFInnenBarnepassIBarnepasserensHjem, + OppjustertTilleggTilGevinstVedRealisasjonAvAksje, + OppjustertTilleggTilGevinstVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, + OppjustertTilleggTilGevinstVedRealisasjonAvAksjesparekonto, + OppjustertTilleggTilGevinstVedRealisasjonAvAndelIAksjedelIVerdipapirfond, + OppjustertTilleggTilGevinstVedRealisasjonAvOgUttakFraAksjedelIFondskonto, + OppjustertTilleggTilGevinstVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, + OppjustertTilleggTilGevinstVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, + OppjustertTilleggTilGevinstVedSalgAvAndelINOKUS, + OppjustertTilleggTilGevinstVedSalgAvAndelISDF, + OppjustertTilleggTilLatentEllerRealisertGevinstPaaAksjeAndelMvVedUtflytting, + OppjustertTilleggTilLatentEllerRealisertTapPaaAksjeAndelMvVedUtflytting, + OppjustertTilleggTilRenteinntektMedEkstrabeskatningForLaanTilSelskap, + OppjustertTilleggTilSkattepliktigAksjegevinst, + OppjustertTilleggTilSkattepliktigUtbytteFraAksjeINOKUSIkkeRegistrertIVerdipapirsentralen, + OppjustertTilleggTilSkattepliktigUtbytteFraAksjeIkkeRegistrertIVerdipapirsentralen, + OppjustertTilleggTilSkattepliktigUtbytteFraAksjeOgVerdipapirfondAksjedel, + OppjustertTilleggTilSkattepliktigUtbytteFraAksjerRegistrertIVerdipapirsentralen, + OppjustertTilleggTilSkattepliktigUtbytteFraVerdipapirfondsandel, + OppjustertTilleggTilSkattepliktigUtbytteFraVerdipapirfondsandelTilBarn, + OppjustertTilleggTilTapVedRealisajonAvOgUttakFraAksjedelIFondskonto, + OppjustertTilleggTilTapVedRealisasjonAvAksje, + OppjustertTilleggTilTapVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, + OppjustertTilleggTilTapVedRealisasjonAvAksjesparekonto, + OppjustertTilleggTilTapVedRealisasjonAvAndelIAksjedelIVerdipapirfond, + OppjustertTilleggTilTapVedRealisasjonAvOgUttakFraAksjedelIFondskonto, + OppjustertTilleggTilTapVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, + OppjustertTilleggTilTapVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, + OppjustertTilleggTilTapVedSalgAvAndelINOKUS, + OppjustertTilleggTilUtbytteFraAksje, + OppjustertTilleggTilUtbytteFraAksjesparekonto, + OppjustertTilleggTilUtbytteFraVerdipapirfond, + OpptjenteRenterFraPrivatUtestaaendeFordring, + OpptjenteRenterFraUtestaaendeFordring, + OvergangsstoenadTilEnsligForelder, + OverskuddAvEnkeltpersonforetakInnenAnnenNaeringUtenTrygdeavgiftsplikt, + OverskuddAvEnkeltpersonforetakInnenJordbrukGartneriPelsdyrMv, + OverskuddAvEnkeltpersonforetakInnenReindrift, + OverskuddAvEnkeltpersonforetakInnenSkiferproduksjon, + OverskuddAvEnkeltpersonforetakInnenSkogbruk, + OverskuddAvSDF, + OverskuddAvUtgiftsgodtgjoerelseVedSmusstillegg, + OverskuddFraNaeringsinntekt, + PaaloepteRenterFraAnnenGjeld, + PaaloepteRenterFraInkassoselskap, + PaaloepteRenterFraPrivatGjeld, + PensjonFraUtlandetSkattefriINorge, + PensjonFraUtlandetSkattepliktigINorge, + Pensjonsinnbetaling, + PensjonsinntektFritattForSkattEtterSkatteavtale, + PensjonsinntektIEOESTilsvarendeAlderspensjonEllerAFP, + PensjonsinntektOmfattetAvLoennstrekkordningen, + PersoninntektFraKompensasjonsytelseUtbetaltAvNavInnenAnnenNaering, + PersoninntektFraKompensasjonsytelseUtbetaltAvNavInnenBarnepassIBarnepasserensHjem, + PersoninntektFraKompensasjonsytelseUtbetaltAvNavInnenFiskeOgFangst, + PersoninntektFraSDFInnenAnnenNaering, + PersoninntektFraSDFInnenFiskeEllerBarnepassIBarnepasserensHjem, + PersoninntektFraSkattefriLottMedTrygdeavgiftspliktForUtenlandskFisker, + PositivPersoninntektFraEnkeltpersonforetakPaaSvalbard, + PremieTilEgenTilleggstrygdForNaeringsdrivende, + Premiefond, + PremiefondIndividuellPensjonsavtale, + PremiefondLivsforsikring, + PrivatGjeldsbeloep, + Reisefradrag, + RenteinntektAvAnnetFinansprodukt, + RenteinntektAvLivsforsikring, + RenteinntektAvObligasjon, + RenteinntektAvObligasjonVerdipapirfondRentedelMv, + RenteinntektAvObligasjonVerdipapirfondRentedelMvIUtlandet, + RenteinntektAvSkadeforsikring, + RenteinntektAvVerdipapirfondsandel, + RenteinntektMedEkstrabeskatningForLaanTilSelskap, + ReturAvPremieFraIndividuellPensjonssparing, + ReturprovisjonKnyttetTilAksjesparekonto, + ReturprovisjonKnyttetTilFondskonto, + ReturprovisjonKnyttetTilVerdipapirfond, + SaerfradragForEnsligForsoerger, + SaerfradragOverfoertFraBarn, + SaerfradragOverfoertFraEktefelle, + SaerfradragOverfoertTilEktefelle, + SaerfradragOverfoertTilForelder, + SaerskiltFradragForFiskereOgFangstfolk, + SaerskiltFradragForSjoefolk, + SaerskiltInntektsfradragIBarnsInntekt, + SamledeAndreOpptjenteRenter, + SamledeAndrePaaloepteRenter, + SamledeOpptjenteRenterIInnenlandskeBanker, + SamledeOpptjenteRenterIUtenlandskeBanker, + SamledeOpptjenteRenterIUtlandet, + SamledePaaloepteRenter, + SamledePaaloepteRenterPaaGjeldIInnenlandskeBanker, + SamledePaaloepteRenterPaaGjeldIUtlandet, + SamledeUfoererenterOgLivrenter, + SamledeUnderholdsbidrag, + SamletAndelAvFellesgjeldIBoligselskapEllerBoligsameie, + SamletAndelAvFradragsberettigetFelleskostnadForBoligselskapEllerBoligsameie, + SamletAndelAvInntektIBoligselskapEllerBoligsameie, + SamletAnnenGjeld, + SamletAnnenInntektForForskudd, + SamletAnnenPensjonMedTrekkpliktEksklusiveEktefelletillegg, + SamletAnnenPensjonUtenTrekkplikt, + SamletAnnenRenteinntekt, + SamletAvkastningAvKapitalforsikringsavtale, + SamletAvtalefestetPensjon, + SamletBarnepensjonOgLivrente, + SamletBarnepensjonOgLivrenteTilBarn, + SamletFormuesverdiAvPrivatUtestaaendeFordring, + SamletFormuesverdiAvUtestaaendeFordring, + SamletFormuesverdiForAndelAnnenFormueIBoligselskapEllerBoligsameie, + SamletFormuesverdiForAndelerIRentedelAvVerdipapirfond, + SamletFormuesverdiForAnnenFastEiendom, + SamletFormuesverdiForFastEiendomIUtlandet, + SamletFormuesverdiForOevrigFormue, + SamletFormuesverdiForOevrigFormueIUtlandet, + SamletFormuesverdiForSekundaerbolig, + SamletFormuesverdiForSelveidFritidseiendomEllerAndelIFritidsboligselskap, + SamletFradragsberettigetKostnadTilknyttetArbeidMv, + SamletFradragsberettigetUnderskuddVedUtleieAvFastEiendom, + SamletFremfoerbartUnderskuddFraTidligereAar, + SamletGevinstVedRealisasjonAvAndreFinansprodukter, + SamletGevinstVedRealisasjonAvVerdipapirfondsandelKnyttetTilRentedel, + SamletGjeld, + SamletGjenkjoepsverdiForLivsforsikring, + SamletGrunnlagForInntektsskattTilKommuneOgFylkeskommuneStatsskattOgFellesskatt, + SamletInnenlandskGjeld, + SamletInnskuddIInnenlandskeBanker, + SamletInntektSomGirRettTilSaerskiltFradragForSjoefolk, + SamletLoennsinntektMedTrygdeavgiftspliktOgMedTrekkplikt, + SamletLoennsinntektUtenTrygdeavgiftspliktOgMedTrekkplikt, + SamletLoennsinntektUtenTrygdeavgiftspliktOgUtenTrekkplikt, + SamletMerkostnadVedArbeidsoppholdUtenforHjem, + SamletOverskuddAvEnkeltpersonforetakInnenAnnenNaering, + SamletOverskuddAvEnkeltpersonforetakInnenFamiliebarnehageEllerDagmammaIEgetHjem, + SamletOverskuddAvEnkeltpersonforetakInnenFiskeOgFangst, + SamletOverskuddAvSDFInnenAnnenNaering, + SamletOverskuddAvSDFInnenFiskeEllerFamiliebarnehage, + SamletOverskuddPaaUtgiftsgodtgjoerelse, + SamletPensjonFraFolketrygden, + SamletPensjonsinnbetalingTilIndividuellPensjonsordning, + SamletPersoninntektFraEnkeltpersonforetakInnenFamiliebarnehageEllerDagmammaIEgetHjem, + SamletPersoninntektFraEnkeltpersonforetakInnenFiskeOgFangst, + SamletPersoninntektFraEnkeltpersonforetakInnenJordbrukReindriftSkiferproduksjonOgAnnenNaering, + SamletPremiefond, + SamletSaerfradrag, + SamletSaerfradragForStoreSykdomsutgifter, + SamletSaerfradragForUfoerhetIhtOvergangsregel, + SamletSaerskiltFradragForJordbrukReindriftOgSkiferproduksjon, + SamletSkattefriDelAvFormue, + SamletSkattepliktigGevinstVedRealisasjonAvObligasjonEllerVerdipapirfondsandel, + SamletSkattepliktigOverskuddFraUtleieAvFastEiendom, + SamletSkattepliktigOverskuddFraUtleieAvFastEiendomIUtlandet, + SamletTapVedRealisasjonAvVerdipapirfondsandelKnyttetTilRentedel, + SamletUfoeretrygdFraFolketrygdenEksklusiveEktefelletillegg, + SamletUfoereytelseFraAndreEnnFolketrygden, + SamletUnderskuddAvSDF, + SamletUnderskuddAvSDFPaaSvalbard, + SamletUnderskuddINaeringsvirksomhet, + SamletUnderskuddINaeringsvirksomhetPaaSvalbard, + SamletUtgiftsgodtgjoerelseMedTrekkplikt, + SkattefradragForFormuesskattBetaltIUtlandet, + SkattefriLoennsinntektMedTrygdeavgiftspliktOgMedTrekkplikt, + SkattepliktigAksjegevinst, + SkattepliktigAvkastningEllerKundeutbytte, + SkattepliktigEtterloennOgEtterpensjon, + SkattepliktigUtbytteFraAksjeINOKUSIkkeRegistrertIVerdipapirsentralen, + SkattepliktigUtbytteFraAksjeIkkeRegistrertIVerdipapirsentralen, + SkattepliktigUtbytteFraAksjeOgVerdipapirfondAksjedel, + SkattepliktigUtbytteFraAksjerRegistrertIVerdipapirsentralen, + SkattepliktigUtbytteFraVerdipapirfondsandel, + SkattepliktigUtbytteFraVerdipapirfondsandelTilBarn, + Skjermingsfradrag, + SkjermingstilleggTilAlderspensjon, + SkyldigRestskatt, + SkyldigUnderholdsbidrag, + Slitertillegg, + Standardfradrag, + StyrehonorarFraNorskSelskapTilSkattepliktigBosattIUtlandet, + SumFradragIAlminneligInntekt, + SumGjeldsreduksjon, + SumInntekterIAlminneligInntektFoerFordelingsfradrag, + SumMinstefradrag, + SumVerdsettingsrabatt, + SupplerendeStoenad, + SupplerendeStoenadTilUfoerFlyktning, + TapOgAnnenKostnadFraVirtuellEiendel, + TapValutalaan, + TapVedRealisajonAvOgUttakFraAksjedelIFondskonto, + TapVedRealisasjonAvAksje, + TapVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, + TapVedRealisasjonAvAksjesparekonto, + TapVedRealisasjonAvAndelIAksjedelIVerdipapirfond, + TapVedRealisasjonAvAndelIRentedelIVerdipapirfond, + TapVedRealisasjonAvAnnetFinansprodukt, + TapVedRealisasjonAvObligasjonVerdipapirfondRentedelMv, + TapVedRealisasjonAvObligasjoner, + TapVedRealisasjonAvOgUttakFraAksjedelIFondskonto, + TapVedRealisasjonAvOgUttakFraRentedelIFondskonto, + TapVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, + TapVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, + TapVedRealisasjonAvVirtuellValuta, + TapVedSalgAvAndelINOKUS, + UfoererenterOgLivrenterUtenforArbeidsforhold, + UfoeretrygdFoerAlderspensjon, + UfoeretrygdOmfattetAvLoennstrekkordningen, + UfoereytelseFraIPAOgIPS, + UfoereytelseFraUtlandet, + UnderholdsbidragFraTidligereEktefelle, + UnderholdsbidragTilGode, + UnderskuddAvEnkeltpersonforetakFordeltFraEktefelle, + UnderskuddAvEnkeltpersonforetakPaaSvalbard, + UnderskuddFraSDF, + UnderskuddOverfoertFraBarnOgFordelt, + UnderskuddOverfoertTilForeldre, + UnderskuddVedUtleieMvAvFastEiendomUtenforNaering, + UtbetalingFraAvtaleOmSkattefavorisertIndividuellSparingTilPensjonTegnetFomNov2017, + UtbetalingFraSkadeforsikring, + UtbytteFraAksje, + UtbytteFraAksjesparekonto, + UtbytteFraVerdipapirfond, + UtgiftVedRefinansieringAvLaan, + UtgifterTilPassOgStellAvHjemmevaerendeBarn, + VerdiFoerVerdsettingsrabattForAksje, + VerdiFoerVerdsettingsrabattForAksjeIUtlandet, + VerdiFoerVerdsettingsrabattForAksjeIVPS, + VerdiFoerVerdsettingsrabattForAksjeIkkeIVPS, + VerdiFoerVerdsettingsrabattForAksjeOgAksjefondIFondskonto, + VerdiFoerVerdsettingsrabattForAksjedelIAksjesparekonto, + VerdiFoerVerdsettingsrabattForAndelIAksjedelIVerdipapirfond, + VerdiFoerVerdsettingsrabattForAndelIFellesNettoformueISDF, + VerdiFoerVerdsettingsrabattForAndelINOKUS, + VerdiFoerVerdsettingsrabattForAnnenFormueFraDriftsmidlerAndelISDFMvGenerell, + VerdiFoerVerdsettingsrabattForAnnenFormueInnenforInntektsgivendeAktivitet, + VerdiFoerVerdsettingsrabattForBilerMaskinerOgInventar, + VerdiFoerVerdsettingsrabattForFormuesobjekterINaeringOmfattetAvVerdsettingsrabatt, + VerdiFoerVerdsettingsrabattForInventarLoesoereVedUtleie, + VerdiFoerVerdsettingsrabattForKapitalisertFesteavgift, + VerdiFoerVerdsettingsrabattForRettigheterKnyttetTilSkogUtmark, + VerdiFoerVerdsettingsrabattForSkipFiskeOgFangstfartoey, + VerdiFoerVerdsettingsrabattForVerdipapirfondsandel, + VerdiFoerVerdsettingsrabattForVerdipapirfondsandelTilBarn, + VerdsettingsrabattForAksje, + VerdsettingsrabattForAksjeIUtlandet, + VerdsettingsrabattForAksjeIVPS, + VerdsettingsrabattForAksjeIkkeIVPS, + VerdsettingsrabattForAksjeOgAksjefondIFondskonto, + VerdsettingsrabattForAksjedelIAksjesparekonto, + VerdsettingsrabattForAndelIAksjedelIVerdipapirfond, + VerdsettingsrabattForAndelIFellesNettoformueISDF, + VerdsettingsrabattForAndelINOKUS, + VerdsettingsrabattForAnnenFormueInnenforInntektsgivendeAktivitet, + VerdsettingsrabattForBilerMaskinerOgInventar, + VerdsettingsrabattForFormuesobjekterINaeringOmfattetAvVerdsettingsrabatt, + VerdsettingsrabattForInventarLoesoereVedUtleie, + VerdsettingsrabattForKapitalisertFesteavgift, + VerdsettingsrabattForRettigheterKnyttetTilSkogUtmark, + VerdsettingsrabattForSkipFiskeOgFangstfartoey, + VerdsettingsrabattForVerdipapirfondsandel, + VerdsettingsrabattForVerdipapirfondsandelTilBarn +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorOversiktResponse.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorOversiktResponse.java new file mode 100644 index 00000000000..4427c758995 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorOversiktResponse.java @@ -0,0 +1,123 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.http.HttpStatus; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TenorOversiktResponse { + + private HttpStatus status; + private Data data; + private String query; + private String error; + + @SuppressWarnings("java:S115") + public enum TenorRelasjon { + Arbeidsforhold, + BeregnetSkatt, + BrregErFr, + Freg, + Inntekt, + TestinnsendingSkattPerson, + SamletReskontroinnsyn, + Skattemelding, + Skatteplikt, + SpesifisertSummertSkattegrunnlag, + SummertSkattegrunnlag, + Tilleggsskatt, + Tjenestepensjonsavtale + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Rollegruppe { + private Type type; + private List fritekst; + private List roller; + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Data { + + private Integer treff; + private Integer rader; + private Integer offset; + private Integer nesteSide; + private Integer seed; + private List personer; + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Person { + + private String id; + private String fornavn; + private String etternavn; + private List tenorRelasjoner; + private Boolean iBruk; + } + + public TenorOversiktResponse copy() { + + return TenorOversiktResponse.builder() + .status(this.getStatus()) + .query(this.getQuery()) + .data(Data.builder() + .treff(this.data.getTreff()) + .rader(this.data.getRader()) + .offset(this.data.getOffset()) + .nesteSide(this.data.getNesteSide()) + .seed(this.data.getSeed()) + .personer(this.data.getPersoner()) + .build()) + .error(this.getError()) + .build(); + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Type { + private String kode; + private String beskrivelse; + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Virksomhet { + private String organisasjonsnummer; + } + + @lombok.Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Rolle { + private Type type; + private Person person; + private Virksomhet virksomhet; + private Object valgtAv; + private String fratraadt; + private List fritekst; + private int rekkefolge; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRawResponse.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRawResponse.java new file mode 100644 index 00000000000..ed855ef735c --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRawResponse.java @@ -0,0 +1,147 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +import static java.util.Objects.isNull; + +@Data +@NoArgsConstructor +public class TenorRawResponse { + + private Integer treff; + private Integer rader; + private Integer offset; + private Integer nesteSide; + private Integer seed; + private List dokumentListe; + + public List getDokumentListe() { + + if (isNull(dokumentListe)) { + dokumentListe = new ArrayList<>(); + } + return dokumentListe; + } + + @Data + @NoArgsConstructor + public static class Dokument { + private String bostedsadresse; + private String id; + private String arbeidsforhold; + } + + @Data + @NoArgsConstructor + public static class TenorRelasjoner { + + private List arbeidsforhold; + private List beregnetSkatt; + private List brregErFr; + private List freg; + private List inntekt; + private List samletReskontroinnsyn; + private List skattemelding; + private List skatteplikt; + private List spesifisertSummertSkattegrunnlag; + private List summertSkattegrunnlag; + private List testinnsendingSkattPerson; + private List tilleggsskatt; + private List tjenestepensjonsavtale; + } + + @Data + @NoArgsConstructor + public static class BrregErFr { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Skattemelding { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Skatteplikt { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Inntekt { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class BeregnetSkatt { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class SummertSkattegrunnlag { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Freg { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class SpesifisertSummertSkattegrunnlag { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Tjenestepensjonsavtale { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Tilleggsskatt { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class Arbeidsforhold { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class TestinnsendingSkattPerson { + + private String tenorRelasjonsnavn; + } + + @Data + @NoArgsConstructor + public static class SamletReskontroinnsyn { + + private String tenorRelasjonsnavn; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRequest.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRequest.java new file mode 100644 index 00000000000..e110ed3ebc1 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRequest.java @@ -0,0 +1,357 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigInteger; +import java.time.LocalDate; +import java.time.YearMonth; +import java.util.ArrayList; +import java.util.List; + +import static java.util.Objects.isNull; + +@Data +@NoArgsConstructor +@SuppressWarnings("java:S115") +public class TenorRequest { + + public enum IdentifikatorType {Foedselsnummer, DNummer, DNummerOgFoedselsnr} + + public enum Kjoenn {Mann, Kvinne} + + public enum Rolle {DagligLeder} + + public enum Personstatus {Bosatt, Doed, Forsvunnet, Foedselsregistrert, IkkeBosatt, Inaktiv, Midlertidig, Opphoert, Utflyttet} + + public enum Sivilstand {EnkeEllerEnkemann, Gift, GjenlevendePartner, RegistrertPartner, Separert, SeparertPartner, Skilt, SkiltPartner, Ugift, Uoppgitt} + + public enum UtenlandskPersonIdentifikasjon {UtenlandskIdentifikasjonsnummer, TaxIdentificationNumber, SocialSecurityNumber, UtlendingsmyndighetenesIdentifikasjonsnummer} + + public enum IdentitetsgrunnlagStatus {IkkeKontrollert, IngenStatus, Kontrollert} + + public enum Adressebeskyttelse {Fortrolig, StrengtFortrolig} + + public enum AdresseGradering {Ugradert, Klientadresse, Fortrolig} + + public enum Relasjon {Barn, Far, Medmor, Mor, Partner} + + public enum Skattemeldingstype {KunUtkast, UtkastOgFastsatt} + + public enum Inntektstype {Loennsinntekt, Naeringsinntekt, PensjonEllerTrygd, YtelseFraOffentlige} + + public enum AOrdningBeskrivelse { + Alderspensjon, AlderspensjonSkjermingstillegg, AndreBeskrivelser, + Arbeidsavklaringspenger, AvtalefestetPensjon, Bil, Bonus, DagpengerVedArbeidsloeshet, Ektefelletillegg, + ElektroniskKommunikasjon, Fagforeningskontingent, FastBilgodtgjoerelse, Fastloenn, FastTillegg, Feriepenger, + Foreldrepenger, IpaEllerIpsPeriodiskeYtelser, Kvalifiseringsstoenad, NyAvtalefestetPensjonPrivatSektor, + PensjonOgLivrenterIArbeidsforhold, ReiseKostMedOvernattingPaaHybelMedKokEllerPrivat, + ReiseKostMedOvernattingPaaHybelUtenKokEllerPensjonatEllerBrakke, Sykepenger, Timeloenn, Ufoeretrygd + } + + public enum Forskuddstrekk { + OrdinaertForskuddstrekk, Barnepensjon, KildeskattPaaPensjon, Svalbard, + JanMayenOgBilandene, BetaltTrygdeavgiftTilJanMayen + } + + public enum Skattepliktstype {SkattepliktTilNorge, SkattepliktTilSvalbard} + + public enum SaerskiltSkatteplikt { + KildeskattepliktPaaLoenn, KildeskattepliktPaaPensjon, + SkattepliktAvNaeringsdriftEiendomMv, SkattepliktEtterPetroleumsskatteloven, + SkattepliktPaaLoennFraDenNorskeStatOpptjentIUtlandet, SkattepliktSomSjoemann, + SkattepliktSomUtenrikstjenestemann, SkattepliktVedUtenriksoppholdINorskStatstjenesteEllerNato + } + + public enum TilleggsskattType { + FradragForTvangsmulkt, SkjerpetTilleggsskattFraUriktigeOpplysninger, TilleggsskattFraUriktigeOpplysninger, + TilleggsskattFraManglendeInnlevering, SkjerpetTilleggsskattFraManglendeInnlevering + } + + public enum Arbeidsforholdstype { + OrdinaertArbeidsforhold, MaritimtArbeidsforhold, FrilanserOppdragstakerHonorarPersonerMm + } + + public enum Oppgjoerstype {Fastland, Svalbard, KildeskattPaaLoenn} + + public enum Stadietype {Utkast, Fastsatt, Oppgjoer} + + @Schema(description = "Personidentifikator, fødselsnummer eller d-nummer") + private String identifikator; + private IdentifikatorType identifikatorType; + private DatoIntervall foedselsdato; + private DatoIntervall doedsdato; + private Kjoenn kjoenn; + private Personstatus personstatus; + private Sivilstand sivilstand; + private List utenlandskPersonIdentifikasjon; + private IdentitetsgrunnlagStatus identitetsgrunnlagStatus; + private Adressebeskyttelse adressebeskyttelse; + private Boolean harLegitimasjonsdokument; + private Boolean harFalskIdentitet; + private Boolean harNorskStatsborgerskap; + private Boolean harFlereStatsborgerskap; + private Navn navn; + private Adresser adresser; + private Relasjoner relasjoner; + private Hendelser hendelser; + + private List roller; + private Tjenestepensjonsavtale tjenestepensjonsavtale; + private Skattemelding skattemelding; + private Inntekt inntekt; + private Skatteplikt skatteplikt; + private Tilleggsskatt tilleggsskatt; + private Arbeidsforhold arbeidsforhold; + private BeregnetSkatt beregnetSkatt; + private TestinnsendingSkattPerson testinnsendingSkattPerson; + private SamletReskontroInnsyn samletReskontroInnsyn; + private SummertSkattegrunnlag summertSkattegrunnlag; + private SpesisfisertSummertSkattegrunnlag spesifisertSummertSkattegrunnlag; + + public List getUtenlandskPersonIdentifikasjon() { + + if (isNull(utenlandskPersonIdentifikasjon)) { + utenlandskPersonIdentifikasjon = new ArrayList<>(); + } + return utenlandskPersonIdentifikasjon; + } + + public List getRoller() { + + if (isNull(roller)) { + roller = new ArrayList<>(); + } + return roller; + } + + @Data + @NoArgsConstructor + public static class DatoIntervall { + + @Schema(type = "string", format = "YYYY-MM-DD", example = "2018-07-01") + private LocalDate fraOgMed; + @Schema(type = "string", format = "YYYY-MM-DD", example = "2020-07-01") + private LocalDate tilOgMed; + } + + @Data + @NoArgsConstructor + public static class Intervall { + + private BigInteger fraOgMed; + private BigInteger tilOgMed; + } + + @Data + @NoArgsConstructor + public static class Navn { + + private Intervall navnLengde; + private Boolean harFlereFornavn; + private Boolean harMellomnavn; + private Boolean harNavnSpesialtegn; + } + + @Data + @NoArgsConstructor + public static class Adresser { + + @Schema(description = "Adressesøk, fritekst") + private AdresseGradering adresseGradering; + private BigInteger kommunenummer; + private Boolean harBostedsadresse; + private Boolean harOppholdAnnetSted; + private Boolean harPostadresseNorge; + private Boolean harPostadresseUtland; + private Boolean harKontaktadresseDoedsbo; + private Boolean harAdresseSpesialtegn; + } + + @Data + @NoArgsConstructor + public static class Relasjoner { + + private Relasjon relasjon; + private Intervall antallBarn; + private Boolean harForeldreAnsvar; + private Intervall relasjonMedFoedselsaar; + private Boolean harDeltBosted; + private Boolean harVergemaalEllerFremtidsfullmakt; + private Boolean borMedMor; + private Boolean borMedFar; + private Boolean borMedMedmor; + private Boolean foreldreHarSammeAdresse; + } + + @Data + @NoArgsConstructor + public static class Hendelser { + + private Hendelse hendelse; + private Hendelse sisteHendelse; + } + + @Data + @NoArgsConstructor + public static class Tjenestepensjonsavtale { + + @Schema(description = "Pensjonsinnretningen organisasjonsnummer, 9 siffre") + private String pensjonsinnretningOrgnr; + @Schema(type = "string", format = "YYYY-MM", example = "2020-07") + private YearMonth periode; + } + + @Data + @NoArgsConstructor + public static class Skattemelding { + + @Schema(description = "Inntektsår, 4 siffre, årene 2018, 2019, 2020, 2021, 2022 ... osv opptil i forfjor") + private BigInteger inntektsaar; + private Skattemeldingstype skattemeldingstype; + } + + @Data + @NoArgsConstructor + public static class Inntekt { + + private MonthInterval periode; + private BigInteger opplysningspliktig; + private List inntektstyper; + private AOrdningBeskrivelse beskrivelse; + private List forskuddstrekk; + private Boolean harHistorikk; + + public List getInntektstyper() { + + if (isNull(inntektstyper)) { + inntektstyper = new ArrayList<>(); + } + return inntektstyper; + } + + public List getForskuddstrekk() { + + if (isNull(forskuddstrekk)) { + forskuddstrekk = new ArrayList<>(); + } + return forskuddstrekk; + } + } + + @Data + @NoArgsConstructor + public static class MonthInterval { + + @Schema(type = "string", format = "YYYY-MM", example = "2020-07") + private YearMonth fraOgMed; + @Schema(type = "string", format = "YYYY-MM", example = "2020-07") + private YearMonth tilOgMed; + } + + @Data + @NoArgsConstructor + public static class Skatteplikt { + + @Schema(description = "Inntektsår, 4 siffre, årene 2019, 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + private List skattepliktstyper; + private SaerskiltSkatteplikt saerskiltSkatteplikt; + + public List getSkattepliktstyper() { + + if (isNull(skattepliktstyper)) { + skattepliktstyper = new ArrayList<>(); + } + return skattepliktstyper; + } + } + + @Data + @NoArgsConstructor + public static class Tilleggsskatt { + + private BigInteger inntektsaar; + private List tilleggsskattTyper; + + public List getTilleggsskattTyper() { + + if (isNull(tilleggsskattTyper)) { + tilleggsskattTyper = new ArrayList<>(); + } + return tilleggsskattTyper; + } + } + + @Data + @NoArgsConstructor + public static class Arbeidsforhold { + + private DatoIntervall startDatoPeriode; + private DatoIntervall sluttDatoPeriode; + private Boolean harPermisjoner; + private Boolean harPermitteringer; + private Boolean harArbeidsgiver; + private Boolean harTimerMedTimeloenn; + private Boolean harUtenlandsopphold; + private Boolean harHistorikk; + private Arbeidsforholdstype arbeidsforholdstype; + } + + @Data + @NoArgsConstructor + public static class BeregnetSkatt { + + @Schema(description = "Inntektsår, 4 siffre, årene 2018, 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + private Oppgjoerstype oppgjoerstype; + private Boolean pensjonsgivendeInntekt; + } + + @Data + @NoArgsConstructor + @Schema(description = "Opplysninger fra skatteetatens innsendingsmiljoe") + public static class TestinnsendingSkattPerson { + + @Schema(description = "Inntektsår, 4 siffre, årene 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + @Schema(description = "Skattemelding utkast, merk at false indikerer har ikke skatteMeldingUtkast") + private Boolean harSkattemeldingUtkast; + @Schema(description = "Skattemelding fastsatt, merk at false indikerer har ikke skatteMeldingFastsatt") + private Boolean harSkattemeldingFastsatt; + } + + @Data + @NoArgsConstructor + public static class SamletReskontroInnsyn { + + private Boolean harKrav; + private Boolean harInnbetaling; + } + + @Data + @NoArgsConstructor + public static class SummertSkattegrunnlag { + + @Schema(description = "Inntektsår, 4 siffre, årene 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + private Stadietype stadietype; + private Oppgjoerstype oppgjoerstype; + private TekniskNavn tekniskNavn; + private Intervall alminneligInntektFoerSaerfradragBeloep; + } + + @Data + @NoArgsConstructor + public static class SpesisfisertSummertSkattegrunnlag { + + @Schema(description = "Inntektsår, 4 siffre, årene 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") + private BigInteger inntektsaar; + private Stadietype stadietype; + private Oppgjoerstype oppgjoerstype; + private TekniskNavn tekniskNavn; + private Spesifiseringstype spesifiseringstype; + private Intervall alminneligInntektFoerSaerfradragBeloep; + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorResponse.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorResponse.java new file mode 100644 index 00000000000..488ff095b5c --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorResponse.java @@ -0,0 +1,20 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.http.HttpStatus; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TenorResponse { + + private HttpStatus status; + private JsonNode data; + private String query; + private String error; +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/service/TenorPersonService.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/service/TenorPersonService.java new file mode 100644 index 00000000000..39c86afbd0a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/service/TenorPersonService.java @@ -0,0 +1,24 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.TenorConsumer; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class TenorPersonService { + + private final TenorConsumer tenorConsumer; + + @EventListener(ApplicationReadyEvent.class) + public void tenorPersonService() throws JsonProcessingException { + log.info("Henter tenor person"); + tenorConsumer.consume(); + } +} From 203a3f8a82448c91cadf8be3c206dd09dfa6d3f7 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Wed, 10 Jul 2024 13:19:14 +0200 Subject: [PATCH 146/161] Legger til bruk av kommunenr for henting av personer --- .../consumers/TenorConsumer.java | 4 ++-- .../consumers/command/HentPersonerCommand.java | 5 +++-- .../domain/tenor/TenorRawResponse.java | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java index 163d17929a8..4b1eac77172 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java @@ -65,9 +65,9 @@ public void consume() throws JsonProcessingException { if (nonNull(accessToken)) { var token = accessToken.getTokenValue(); HentPersonerCommand commander = new HentPersonerCommand(token, webClient); - JsonNode data = commander.hentPersonData(); + JsonNode data = commander.hentPersonData("1520"); var rawResponse = objectMapper.readValue(data.toString(), TenorRawResponse.class); - log.info(rawResponse.getDokumentListe().getFirst().getBostedsadresse().toString()); + log.info(rawResponse.getDokumentListe().getFirst().getKommunenr()); } } } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java index ef62213bcec..64524ac0404 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java @@ -14,14 +14,15 @@ public class HentPersonerCommand { private final String token; private final WebClient webClient; - public JsonNode hentPersonData(){ + public JsonNode hentPersonData(String kommunenr){ System.out.println("Henter personer"); var request = webClient .get() .uri(builder -> builder .path(PATH) .queryParam("type", "Spesifikt") - .queryParam("fields", "id", "bostedsadresse", "arbeidsforhold") + .queryParam("fields", "id", "kommunenr", "arbeidsforhold") + .queryParam("searchData", "kommunenr:" + kommunenr) .build() ) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java index db3b9134501..c2b024ee17c 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java @@ -30,7 +30,7 @@ public List getDokumentListe() { @Data @NoArgsConstructor public static class Dokument { - private String bostedsadresse; + private String kommunenr; private String id; private String arbeidsforhold; } From 7e38173c4b8a13e0660b1b785d7f60edf322f90a Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Wed, 10 Jul 2024 13:26:13 +0200 Subject: [PATCH 147/161] Legger til bruk av kommunenr for henting av personer --- .../consumers/TenorConsumer.java | 4 ++-- .../consumers/command/HentPersonerCommand.java | 6 ++++-- .../domain/tenor/TenorRawResponse.java | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/TenorConsumer.java index 1e3d6f8bd2f..61c41226324 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/TenorConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/TenorConsumer.java @@ -66,9 +66,9 @@ public void consume() throws JsonProcessingException { if (nonNull(accessToken)) { var token = accessToken.getTokenValue(); HentPersonerCommand commander = new HentPersonerCommand(token, webClient); - JsonNode data = commander.hentPersonData(); + JsonNode data = commander.hentPersonData("1520"); var rawResponse = objectMapper.readValue(data.toString(), TenorRawResponse.class); - log.info(rawResponse.getDokumentListe().getFirst().getBostedsadresse().toString()); + log.info(rawResponse.getDokumentListe().getFirst().getKommunenr()); } } } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentPersonerCommand.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentPersonerCommand.java index 2a4b05e355f..520e7175517 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentPersonerCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentPersonerCommand.java @@ -15,14 +15,15 @@ public class HentPersonerCommand { private final String token; private final WebClient webClient; - public JsonNode hentPersonData(){ + public JsonNode hentPersonData(String kommunenr){ System.out.println("Henter personer"); var request = webClient .get() .uri(builder -> builder .path(PATH) .queryParam("type", "Spesifikt") - .queryParam("fields", "id", "bostedsadresse", "arbeidsforhold") + .queryParam("fields", "id", "kommunenr", "arbeidsforhold") + .queryParam("searchData", "kommunenr:" + kommunenr) .build() ) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) @@ -34,3 +35,4 @@ public JsonNode hentPersonData(){ return response.getData(); } } + diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRawResponse.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRawResponse.java index ed855ef735c..71780a27e29 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRawResponse.java +++ b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRawResponse.java @@ -30,7 +30,7 @@ public List getDokumentListe() { @Data @NoArgsConstructor public static class Dokument { - private String bostedsadresse; + private String kommunenr; private String id; private String arbeidsforhold; } From 2dc95c7c30122ab4da3ed7e5d4c7b586f27b9321 Mon Sep 17 00:00:00 2001 From: Martineem Date: Wed, 10 Jul 2024 13:50:57 +0200 Subject: [PATCH 148/161] =?UTF-8?q?Fjerner=20modulen=20som=20ikke=20kj?= =?UTF-8?q?=C3=B8rte=20og=20renamer=20uten=20"v2"=20i=20modulen=20som=20kj?= =?UTF-8?q?=C3=B8rer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dockerfile | 8 - .../build.gradle | 94 ---- .../config.yml | 54 --- .../gradlew | 234 ---------- .../gradlew.bat | 89 ---- .../settings.gradle | 24 - ...ArbeidsforholdAnsettelseV2Application.java | 13 - .../src/main/resources/application-dev.yml | 2 - .../src/main/resources/application.yml | 55 --- .../src/main/resources/logback-spring.xml | 40 -- ...dsforholdAnsettelseV2ApplicationTests.java | 13 - .../README.md | 0 .../build.gradle | 10 +- .../config.yml | 8 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 43453 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 - .../levende-arbeidsforhold-ansettelse/gradlew | 51 +-- .../gradlew.bat | 181 ++++---- .../gradlewUpdate.sh | 0 .../settings.gradle | 4 +- ...deArbeidsforholdAnsettelseApplication.java | 2 +- .../config/ApplicationConfig.java | 2 +- .../config/Consumers.java | 2 +- .../config/DevConfig.java | 2 +- .../config/KafkaConfig.java | 2 +- .../config/OpenApiConfig.java | 2 +- .../config/SecurityConfig.java | 2 +- .../consumers/AaregConsumer.java | 10 +- .../consumers/TenorConsumer.java | 9 +- .../command/EndreArbeidsforholdCommand.java | 4 +- .../command/HentArbeidsforholdCommand.java | 4 +- .../command/HentPersonerCommand.java | 5 +- .../domain/tenor/Hendelse.java | 2 +- .../domain/tenor/Spesifiseringstype.java | 2 +- .../domain/tenor/TekniskNavn.java | 2 +- .../domain/tenor/TenorOversiktResponse.java | 2 +- .../domain/tenor/TenorRawResponse.java | 2 +- .../domain/tenor/TenorRequest.java | 2 +- .../domain/tenor/TenorResponse.java | 2 +- .../domain/v1/Ansettelsesperiode.java | 2 +- .../domain/v1/AntallTimerForTimeloennet.java | 4 +- .../domain/v1/Arbeidsavtale.java | 4 +- .../domain/v1/Arbeidsavtaletype.java | 2 +- .../domain/v1/Arbeidsforhold.java | 4 +- .../domain/v1/Arbeidsforholdoversikt.java | 4 +- .../ArbeidsgiverArbeidsforholdoversikter.java | 2 +- .../domain/v1/Arbeidsgiveroversikt.java | 2 +- .../domain/v1/Bruksperiode.java | 4 +- ...orenkletOppgjoersordningArbeidsavtale.java | 2 +- .../domain/v1/FrilanserArbeidsavtale.java | 2 +- .../domain/v1/Gyldighetsperiode.java | 2 +- .../domain/v1/MaritimArbeidsavtale.java | 2 +- .../v1/OpplysningspliktigArbeidsgiver.java | 2 +- .../OpplysningspliktigArbeidsgiverType.java | 2 +- .../domain/v1/OrdinaerArbeidsavtale.java | 2 +- .../domain/v1/Organisasjon.java | 2 +- .../domain/v1/Periode.java | 4 +- .../domain/v1/PermisjonPermittering.java | 2 +- .../domain/v1/Person.java | 2 +- .../domain/v1/Persontype.java | 2 +- .../domain/v1/README.md | 0 .../domain/v1/Sporingsinformasjon.java | 4 +- .../domain/v1/Utenlandsopphold.java | 4 +- .../domain/v1/Varsel.java | 2 +- .../domain/v1/Varselentitet.java | 2 +- .../domain/v1/util/JavaTimeUtil.java | 2 +- .../service/TenorPersonService.java | 4 +- .../config/ApplicationConfig.java | 15 - .../config/Consumers.java | 30 -- .../config/DevConfig.java | 36 -- .../config/KafkaConfig.java | 93 ---- .../config/OpenApiConfig.java | 54 --- .../config/SecurityConfig.java | 39 -- .../consumers/AaregConsumer.java | 74 --- .../consumers/TenorConsumer.java | 73 --- .../command/EndreArbeidsforholdCommand.java | 54 --- .../command/HentArbeidsforholdCommand.java | 73 --- .../command/HentPersonerCommand.java | 36 -- .../domain/tenor/Hendelse.java | 50 -- .../domain/tenor/Spesifiseringstype.java | 35 -- .../domain/tenor/TekniskNavn.java | 430 ------------------ .../domain/tenor/TenorOversiktResponse.java | 123 ----- .../domain/tenor/TenorRawResponse.java | 147 ------ .../domain/tenor/TenorRequest.java | 357 --------------- .../domain/tenor/TenorResponse.java | 20 - .../domain/v1/Ansettelsesperiode.java | 41 -- .../domain/v1/AntallTimerForTimeloennet.java | 53 --- .../domain/v1/Arbeidsavtale.java | 99 ---- .../domain/v1/Arbeidsavtaletype.java | 9 - .../domain/v1/Arbeidsforhold.java | 120 ----- .../domain/v1/Arbeidsforholdoversikt.java | 106 ----- .../ArbeidsgiverArbeidsforholdoversikter.java | 41 -- .../domain/v1/Arbeidsgiveroversikt.java | 31 -- .../domain/v1/Bruksperiode.java | 68 --- ...orenkletOppgjoersordningArbeidsavtale.java | 38 -- .../domain/v1/FrilanserArbeidsavtale.java | 38 -- .../domain/v1/Gyldighetsperiode.java | 19 - .../domain/v1/MaritimArbeidsavtale.java | 50 -- .../v1/OpplysningspliktigArbeidsgiver.java | 24 - .../OpplysningspliktigArbeidsgiverType.java | 6 - .../domain/v1/OrdinaerArbeidsavtale.java | 38 -- .../domain/v1/Organisasjon.java | 31 -- .../domain/v1/Periode.java | 69 --- .../domain/v1/PermisjonPermittering.java | 41 -- .../domain/v1/Person.java | 35 -- .../domain/v1/Persontype.java | 6 - .../domain/v1/README.md | 6 - .../domain/v1/Sporingsinformasjon.java | 86 ---- .../domain/v1/Utenlandsopphold.java | 55 --- .../domain/v1/Varsel.java | 28 -- .../domain/v1/Varselentitet.java | 11 - .../domain/v1/util/JavaTimeUtil.java | 38 -- .../mapper/TenorResultMapperService.java | 114 ----- .../service/ArbeidsforholdService.java | 48 -- .../service/TenorPersonService.java | 23 - .../util/CallIdUtil.java | 17 - .../src/main/resources/application-dev.yml | 2 + .../src/main/resources/application.properties | 1 - .../src/main/resources/application.yml | 17 +- .../src/main/resources/logback-spring.xml | 2 +- ...eidsforholdAnsettelseApplicationTests.java | 2 +- .../resources/application-test.properties | 0 settings.gradle | 2 +- 123 files changed, 194 insertions(+), 3979 deletions(-) delete mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/Dockerfile delete mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/build.gradle delete mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/config.yml delete mode 100755 apps/levende-arbeidsforhold-ansettelse-v2/gradlew delete mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/gradlew.bat delete mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/settings.gradle delete mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2Application.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application-dev.yml delete mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application.yml delete mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/logback-spring.xml delete mode 100644 apps/levende-arbeidsforhold-ansettelse-v2/src/test/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2ApplicationTests.java rename apps/{levende-arbeidsforhold-ansettelse-v2 => levende-arbeidsforhold-ansettelse}/README.md (100%) delete mode 100644 apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.jar delete mode 100644 apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.properties rename apps/{levende-arbeidsforhold-ansettelse-v2 => levende-arbeidsforhold-ansettelse}/gradlewUpdate.sh (100%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/{testnorge/apps => registre/testnorge}/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java (83%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/config/ApplicationConfig.java (97%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/config/Consumers.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/config/DevConfig.java (99%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/config/KafkaConfig.java (99%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/config/OpenApiConfig.java (99%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/config/SecurityConfig.java (99%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/consumers/AaregConsumer.java (94%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/consumers/TenorConsumer.java (93%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/consumers/command/EndreArbeidsforholdCommand.java (97%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/consumers/command/HentArbeidsforholdCommand.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/consumers/command/HentPersonerCommand.java (89%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/tenor/Hendelse.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/tenor/Spesifiseringstype.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/tenor/TekniskNavn.java (99%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/tenor/TenorOversiktResponse.java (99%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/tenor/TenorRawResponse.java (99%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/tenor/TenorRequest.java (99%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/tenor/TenorResponse.java (96%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Ansettelsesperiode.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/AntallTimerForTimeloennet.java (97%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Arbeidsavtale.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Arbeidsavtaletype.java (95%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Arbeidsforhold.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Arbeidsforholdoversikt.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Arbeidsgiveroversikt.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Bruksperiode.java (97%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/FrilanserArbeidsavtale.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Gyldighetsperiode.java (97%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/MaritimArbeidsavtale.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/OpplysningspliktigArbeidsgiver.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/OpplysningspliktigArbeidsgiverType.java (90%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/OrdinaerArbeidsavtale.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Organisasjon.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Periode.java (97%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/PermisjonPermittering.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Person.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Persontype.java (88%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/README.md (100%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Sporingsinformasjon.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Utenlandsopphold.java (97%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Varsel.java (97%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/Varselentitet.java (94%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/domain/v1/util/JavaTimeUtil.java (98%) rename apps/{levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2 => levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse}/service/TenorPersonService.java (94%) delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/ApplicationConfig.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/DevConfig.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/OpenApiConfig.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/SecurityConfig.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Ansettelsesperiode.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtaletype.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsgiveroversikt.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/FrilanserArbeidsavtale.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Gyldighetsperiode.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/MaritimArbeidsavtale.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiver.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiverType.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OrdinaerArbeidsavtale.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Organisasjon.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/PermisjonPermittering.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Person.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Persontype.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/README.md delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varsel.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varselentitet.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/util/JavaTimeUtil.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/mapper/TenorResultMapperService.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/util/CallIdUtil.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/application-dev.yml delete mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.properties rename apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/{testnorge/apps => registre/testnorge}/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplicationTests.java (76%) rename apps/{levende-arbeidsforhold-ansettelse-v2 => levende-arbeidsforhold-ansettelse}/src/test/resources/application-test.properties (100%) diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/Dockerfile b/apps/levende-arbeidsforhold-ansettelse-v2/Dockerfile deleted file mode 100644 index 4a36f93546f..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse-v2/Dockerfile +++ /dev/null @@ -1,8 +0,0 @@ -FROM ghcr.io/navikt/baseimages/temurin:21 -LABEL maintainer="Team Dolly" - -ENV JAVA_OPTS="-Dspring.profiles.active=prod" - -ADD /build/libs/app.jar /app/app.jar - -EXPOSE 8080 diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/build.gradle b/apps/levende-arbeidsforhold-ansettelse-v2/build.gradle deleted file mode 100644 index 30be05208fc..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse-v2/build.gradle +++ /dev/null @@ -1,94 +0,0 @@ -plugins { - id 'java' - id "org.sonarqube" version "5.0.0.4638" - id 'org.springframework.boot' version "3.2.6" - id 'io.spring.dependency-management' version "1.1.5" - id "jacoco" -} - -test { - useJUnitPlatform() -} - -sonarqube { - properties { - property "sonar.dynamicAnalysis", "reuseReports" - property "sonar.host.url", "https://sonarcloud.io" - property "sonar.java.coveragePlugin", "jacoco" - property "sonar.language", "java" - property "sonar.token", System.getenv("SONAR_TOKEN") - property "sonar.organization", "navikt" - property "sonar.project.monorepo.enabled", true - property "sonar.projectKey", "testnav-levende-arbeidsforhold-ansettelse-v2" - property "sonar.projectName", "testnav-levende-arbeidsforhold-ansettelse-v2" - property "sonar.sourceEncoding", "UTF-8" - } -} -bootJar { - archiveFileName = "app.jar" -} - -dependencyManagement { - applyMavenExclusions = false - imports { - mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2023.0.1' - } -} - -repositories { - mavenCentral() - mavenLocal() - maven { - url = uri('https://packages.confluent.io/maven/') - } -} - -dependencies { - implementation "no.nav.testnav.libs:kafka-config" - implementation 'no.nav.testnav.libs:security-core' - implementation 'no.nav.testnav.libs:reactive-core' - implementation 'no.nav.testnav.libs:servlet-core' - implementation 'no.nav.testnav.libs:commands' - implementation 'no.nav.testnav.libs:data-transfer-objects' - implementation 'no.nav.testnav.libs:servlet-security' - - implementation 'org.springframework.boot:spring-boot-starter-webflux' - implementation 'org.springframework.boot:spring-boot-starter-web' - implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' - implementation 'org.springframework.boot:spring-boot-starter-security' - - implementation 'org.springframework.cloud:spring-cloud-starter-vault-config' - implementation 'org.springframework.boot:spring-boot-starter-actuator' - - implementation 'io.micrometer:micrometer-registry-prometheus' - implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' - implementation 'io.swagger.core.v3:swagger-annotations-jakarta:2.2.21' - - implementation 'net.logstash.logback:logstash-logback-encoder:7.4' - implementation 'org.hibernate.validator:hibernate-validator' - - testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'org.springframework.cloud:spring-cloud-contract-wiremock' - - implementation 'org.projectlombok:lombok' - annotationProcessor 'org.projectlombok:lombok' - testAnnotationProcessor 'org.projectlombok:lombok' - - implementation 'no.nav.testnav.libs:kafka-config' - implementation 'org.apache.kafka:kafka-clients:3.7.0' - implementation 'io.confluent:kafka-avro-serializer:7.6.0' - implementation 'org.springframework.kafka:spring-kafka' - - implementation 'no.nav.testnav.libs:avro-schema' - implementation 'no.nav.testnav.libs:commands' - implementation 'no.nav.testnav.libs:data-transfer-objects' - implementation 'no.nav.testnav.libs:kafka-config' - implementation 'no.nav.testnav.libs:security-core' - implementation 'no.nav.testnav.libs:servlet-insecure-security' - implementation 'no.nav.testnav.libs:servlet-core' -} -java { - toolchain { - languageVersion = JavaLanguageVersion.of(21) - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/config.yml b/apps/levende-arbeidsforhold-ansettelse-v2/config.yml deleted file mode 100644 index 2613eed9693..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse-v2/config.yml +++ /dev/null @@ -1,54 +0,0 @@ -apiVersion: "nais.io/v1alpha1" -kind: "Application" -metadata: - name: testnav-levende-arbeidsforhold-ansettelse-v2 - namespace: dolly - labels: - team: dolly -spec: - image: "{{image}}" - port: 8080 - accessPolicy: - inbound: - rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - outbound: - external: - - host: testnav-aareg-proxy.dev-fss-pub.nais.io - rules: - - application: testnav-levende-arbeidsforhold-ansettelse-v2 - cluster: dev-gcp - azure: - application: - allowAllUsers: true - enabled: true - tenant: nav.no - liveness: - path: /internal/isAlive - initialDelay: 4 - periodSeconds: 5 - failureThreshold: 500 - readiness: - path: /internal/isReady - initialDelay: 4 - periodSeconds: 5 - failureThreshold: 500 - prometheus: - enabled: true - path: /internal/metrics - replicas: - min: 1 - max: 1 - resources: - requests: - cpu: 200m - memory: 1024Mi - limits: - memory: 2048Mi - kafka: - pool: nav-dev - ingresses: - - "https://testnav-levende-arbeidsforhold-ansettelse-v2.intern.dev.nav.no" diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/gradlew b/apps/levende-arbeidsforhold-ansettelse-v2/gradlew deleted file mode 100755 index 3da45c161b0..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse-v2/gradlew +++ /dev/null @@ -1,234 +0,0 @@ -#!/bin/sh - -# -# Copyright ? 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions ?$var?, ?${var}?, ?${var:-default}?, ?${var+SET}?, -# ?${var#prefix}?, ?${var%suffix}?, and ?$( cmd )?; -# * compound commands having a testable exit status, especially ?case?; -# * various built-in commands including ?command?, ?set?, and ?ulimit?. -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" -APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/gradlew.bat b/apps/levende-arbeidsforhold-ansettelse-v2/gradlew.bat deleted file mode 100644 index 107acd32c4e..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse-v2/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/settings.gradle b/apps/levende-arbeidsforhold-ansettelse-v2/settings.gradle deleted file mode 100644 index ba04c4f9f5d..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse-v2/settings.gradle +++ /dev/null @@ -1,24 +0,0 @@ -plugins { - id "com.gradle.develocity" version "3.17.4" -} - -rootProject.name = 'testnav-levende-arbeidsforhold-ansettelse-v2' - -includeBuild "../../libs/kafka-config" -includeBuild "../../libs/avro-schema" -includeBuild '../../libs/security-core' -includeBuild '../../libs/servlet-core' -includeBuild '../../libs/reactive-core' -includeBuild '../../libs/commands' -includeBuild '../../libs/data-transfer-objects' -includeBuild '../../libs/servlet-security' -includeBuild '../../libs/servlet-insecure-security' -includeBuild '../../libs/testing' -includeBuild '../../.github/workflows' - -develocity { - buildScan { - termsOfUseUrl = "https://gradle.com/terms-of-service" - termsOfUseAgree = "yes" - } -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2Application.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2Application.java deleted file mode 100644 index 4c59e39e771..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2Application.java +++ /dev/null @@ -1,13 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class LevendeArbeidsforholdAnsettelseV2Application { - - public static void main(String[] args) { - SpringApplication.run(LevendeArbeidsforholdAnsettelseV2Application.class, args); - } - -} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application-dev.yml b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application-dev.yml deleted file mode 100644 index 0fdd40aa1fc..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application-dev.yml +++ /dev/null @@ -1,2 +0,0 @@ -kafka: - group-id: testnav-levende-arbeidsforhold-ansettelse-v2 diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application.yml deleted file mode 100644 index a100820fa47..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/application.yml +++ /dev/null @@ -1,55 +0,0 @@ -AAD_ISSUER_URI: https://login.microsoftonline.com/62366534-1ec3-4962-8869-9b5535279d0b - -spring: - main: - banner-mode: off - application: - name: testnav-levende-arbeidsforhold-ansettelse-v2 - version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle - description: App for å hente PDL personer. - security: - oauth2: - client: - resourceserver: - aad: - issuer-uri: ${AAD_ISSUER_URI}/v2.0 - jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys - accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} - cloud: - vault: - enabled: false - kafka: - consumer: - group-id: testnav-levende-arbeidsforhold-ansettelse-v2 -springdoc: - swagger-ui: - disable-swagger-default-url: true - url: /v3/api-docs - -management: - endpoints: - enabled-by-default: true - web: - base-path: /internal - exposure.include: prometheus,heapdump,health - path-mapping: - prometheus: metrics - endpoint: - prometheus.enabled: true - heapdump.enabled: true - prometheus: - metrics: - export: - enabled: true -server: - servlet: - encoding: - charset: UTF-8 - error: - include-message: always -consumers: - testnav-aareg-proxy: - name: testnav-aareg-proxy - namespace: dolly - url: https://testnav-aareg-proxy.dev-fss-pub.nais.io - cluster: dev-fss diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/logback-spring.xml b/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/logback-spring.xml deleted file mode 100644 index 9583ff2d427..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/resources/logback-spring.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - true - 256 - 10280 - 20 - ^sun\.reflect\..*\.invoke - ^net\.sf\.cglib\.proxy\.MethodProxy\.invoke - java\.util\.concurrent\..* - org\.apache\.catalina\..* - org\.apache\.coyote\..* - org\.apache\.tomcat\..* - - - - - - - - - - - - - %d{HH:mm:ss.SSS} | %5p | %logger{25} | %m%n - - utf8 - - - - - - - - - \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/test/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2ApplicationTests.java b/apps/levende-arbeidsforhold-ansettelse-v2/src/test/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2ApplicationTests.java deleted file mode 100644 index 41380aa7f47..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/test/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/LevendeArbeidsforholdAnsettelseV2ApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class LevendeArbeidsforholdAnsettelseV2ApplicationTests { - - @Test - void contextLoads() { - } - -} diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/README.md b/apps/levende-arbeidsforhold-ansettelse/README.md similarity index 100% rename from apps/levende-arbeidsforhold-ansettelse-v2/README.md rename to apps/levende-arbeidsforhold-ansettelse/README.md diff --git a/apps/levende-arbeidsforhold-ansettelse/build.gradle b/apps/levende-arbeidsforhold-ansettelse/build.gradle index 5569f0d1c95..f90b176aee5 100644 --- a/apps/levende-arbeidsforhold-ansettelse/build.gradle +++ b/apps/levende-arbeidsforhold-ansettelse/build.gradle @@ -10,7 +10,6 @@ test { useJUnitPlatform() } - sonarqube { properties { property "sonar.dynamicAnalysis", "reuseReports" @@ -20,8 +19,8 @@ sonarqube { property "sonar.token", System.getenv("SONAR_TOKEN") property "sonar.organization", "navikt" property "sonar.project.monorepo.enabled", true - property "sonar.projectKey", "testnav-levende-arbeidsforhold-service" - property "sonar.projectName", "testnav-levende-arbeidsforhold-service" + property "sonar.projectKey", "testnav-levende-arbeidsforhold-ansettelse" + property "sonar.projectName", "testnav-levende-arbeidsforhold-ansettelse" property "sonar.sourceEncoding", "UTF-8" } } @@ -45,7 +44,7 @@ repositories { } dependencies { - implementation 'no.nav.testnav.libs:kafka-config' + implementation "no.nav.testnav.libs:kafka-config" implementation 'no.nav.testnav.libs:security-core' implementation 'no.nav.testnav.libs:reactive-core' implementation 'no.nav.testnav.libs:servlet-core' @@ -57,7 +56,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' implementation 'org.springframework.boot:spring-boot-starter-security' - + implementation 'org.springframework.cloud:spring-cloud-starter-vault-config' implementation 'org.springframework.boot:spring-boot-starter-actuator' @@ -87,7 +86,6 @@ dependencies { implementation 'no.nav.testnav.libs:security-core' implementation 'no.nav.testnav.libs:servlet-insecure-security' implementation 'no.nav.testnav.libs:servlet-core' - } java { toolchain { diff --git a/apps/levende-arbeidsforhold-ansettelse/config.yml b/apps/levende-arbeidsforhold-ansettelse/config.yml index 759cb8e1edb..6def333173b 100644 --- a/apps/levende-arbeidsforhold-ansettelse/config.yml +++ b/apps/levende-arbeidsforhold-ansettelse/config.yml @@ -1,7 +1,7 @@ -apiVersion: "nais.io/v1alpha1" +apiVersion: "nais.io/v1alpha1" kind: "Application" metadata: - name: testnav-levende-arbeidsforholdansettelse-service + name: testnav-levende-arbeidsforhold-ansettelse namespace: dolly labels: team: dolly @@ -19,7 +19,7 @@ spec: external: - host: testnav-aareg-proxy.dev-fss-pub.nais.io rules: - - application: testnav-levende-arbeidsforholdansettelse-service + - application: testnav-levende-arbeidsforhold-ansettelse cluster: dev-gcp azure: application: @@ -51,4 +51,4 @@ spec: kafka: pool: nav-dev ingresses: - - "https://testnav-levende-arbeidsforholdansettelse-service.intern.dev.nav.no" + - "https://testnav-levende-arbeidsforhold-ansettelse.intern.dev.nav.no" diff --git a/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.jar b/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e6441136f3d4ba8a0da8d277868979cfbc8ad796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43453 zcma&N1CXTcmMvW9vTb(Rwr$&4wr$(C?dmSu>@vG-+vuvg^_??!{yS%8zW-#zn-LkA z5&1^$^{lnmUON?}LBF8_K|(?T0Ra(xUH{($5eN!MR#ZihR#HxkUPe+_R8Cn`RRs(P z_^*#_XlXmGv7!4;*Y%p4nw?{bNp@UZHv1?Um8r6)Fei3p@ClJn0ECfg1hkeuUU@Or zDaPa;U3fE=3L}DooL;8f;P0ipPt0Z~9P0)lbStMS)ag54=uL9ia-Lm3nh|@(Y?B`; zx_#arJIpXH!U{fbCbI^17}6Ri*H<>OLR%c|^mh8+)*h~K8Z!9)DPf zR2h?lbDZQ`p9P;&DQ4F0sur@TMa!Y}S8irn(%d-gi0*WxxCSk*A?3lGh=gcYN?FGl z7D=Js!i~0=u3rox^eO3i@$0=n{K1lPNU zwmfjRVmLOCRfe=seV&P*1Iq=^i`502keY8Uy-WNPwVNNtJFx?IwAyRPZo2Wo1+S(xF37LJZ~%i)kpFQ3Fw=mXfd@>%+)RpYQLnr}B~~zoof(JVm^^&f zxKV^+3D3$A1G;qh4gPVjhrC8e(VYUHv#dy^)(RoUFM?o%W-EHxufuWf(l*@-l+7vt z=l`qmR56K~F|v<^Pd*p~1_y^P0P^aPC##d8+HqX4IR1gu+7w#~TBFphJxF)T$2WEa zxa?H&6=Qe7d(#tha?_1uQys2KtHQ{)Qco)qwGjrdNL7thd^G5i8Os)CHqc>iOidS} z%nFEDdm=GXBw=yXe1W-ShHHFb?Cc70+$W~z_+}nAoHFYI1MV1wZegw*0y^tC*s%3h zhD3tN8b=Gv&rj}!SUM6|ajSPp*58KR7MPpI{oAJCtY~JECm)*m_x>AZEu>DFgUcby z1Qaw8lU4jZpQ_$;*7RME+gq1KySGG#Wql>aL~k9tLrSO()LWn*q&YxHEuzmwd1?aAtI zBJ>P=&$=l1efe1CDU;`Fd+_;&wI07?V0aAIgc(!{a z0Jg6Y=inXc3^n!U0Atk`iCFIQooHqcWhO(qrieUOW8X(x?(RD}iYDLMjSwffH2~tB z)oDgNBLB^AJBM1M^c5HdRx6fBfka`(LD-qrlh5jqH~);#nw|iyp)()xVYak3;Ybik z0j`(+69aK*B>)e_p%=wu8XC&9e{AO4c~O1U`5X9}?0mrd*m$_EUek{R?DNSh(=br# z#Q61gBzEpmy`$pA*6!87 zSDD+=@fTY7<4A?GLqpA?Pb2z$pbCc4B4zL{BeZ?F-8`s$?>*lXXtn*NC61>|*w7J* z$?!iB{6R-0=KFmyp1nnEmLsA-H0a6l+1uaH^g%c(p{iT&YFrbQ$&PRb8Up#X3@Zsk zD^^&LK~111%cqlP%!_gFNa^dTYT?rhkGl}5=fL{a`UViaXWI$k-UcHJwmaH1s=S$4 z%4)PdWJX;hh5UoK?6aWoyLxX&NhNRqKam7tcOkLh{%j3K^4Mgx1@i|Pi&}<^5>hs5 zm8?uOS>%)NzT(%PjVPGa?X%`N2TQCKbeH2l;cTnHiHppPSJ<7y-yEIiC!P*ikl&!B z%+?>VttCOQM@ShFguHVjxX^?mHX^hSaO_;pnyh^v9EumqSZTi+#f&_Vaija0Q-e*| z7ulQj6Fs*bbmsWp{`auM04gGwsYYdNNZcg|ph0OgD>7O}Asn7^Z=eI>`$2*v78;sj-}oMoEj&@)9+ycEOo92xSyY344^ z11Hb8^kdOvbf^GNAK++bYioknrpdN>+u8R?JxG=!2Kd9r=YWCOJYXYuM0cOq^FhEd zBg2puKy__7VT3-r*dG4c62Wgxi52EMCQ`bKgf*#*ou(D4-ZN$+mg&7$u!! z-^+Z%;-3IDwqZ|K=ah85OLwkO zKxNBh+4QHh)u9D?MFtpbl)us}9+V!D%w9jfAMYEb>%$A;u)rrI zuBudh;5PN}_6J_}l55P3l_)&RMlH{m!)ai-i$g)&*M`eN$XQMw{v^r@-125^RRCF0 z^2>|DxhQw(mtNEI2Kj(;KblC7x=JlK$@78`O~>V!`|1Lm-^JR$-5pUANAnb(5}B}JGjBsliK4& zk6y(;$e&h)lh2)L=bvZKbvh@>vLlreBdH8No2>$#%_Wp1U0N7Ank!6$dFSi#xzh|( zRi{Uw%-4W!{IXZ)fWx@XX6;&(m_F%c6~X8hx=BN1&q}*( zoaNjWabE{oUPb!Bt$eyd#$5j9rItB-h*5JiNi(v^e|XKAj*8(k<5-2$&ZBR5fF|JA z9&m4fbzNQnAU}r8ab>fFV%J0z5awe#UZ|bz?Ur)U9bCIKWEzi2%A+5CLqh?}K4JHi z4vtM;+uPsVz{Lfr;78W78gC;z*yTch~4YkLr&m-7%-xc ztw6Mh2d>_iO*$Rd8(-Cr1_V8EO1f*^@wRoSozS) zy1UoC@pruAaC8Z_7~_w4Q6n*&B0AjOmMWa;sIav&gu z|J5&|{=a@vR!~k-OjKEgPFCzcJ>#A1uL&7xTDn;{XBdeM}V=l3B8fE1--DHjSaxoSjNKEM9|U9#m2<3>n{Iuo`r3UZp;>GkT2YBNAh|b z^jTq-hJp(ebZh#Lk8hVBP%qXwv-@vbvoREX$TqRGTgEi$%_F9tZES@z8Bx}$#5eeG zk^UsLBH{bc2VBW)*EdS({yw=?qmevwi?BL6*=12k9zM5gJv1>y#ML4!)iiPzVaH9% zgSImetD@dam~e>{LvVh!phhzpW+iFvWpGT#CVE5TQ40n%F|p(sP5mXxna+Ev7PDwA zamaV4m*^~*xV+&p;W749xhb_X=$|LD;FHuB&JL5?*Y2-oIT(wYY2;73<^#46S~Gx| z^cez%V7x$81}UWqS13Gz80379Rj;6~WdiXWOSsdmzY39L;Hg3MH43o*y8ibNBBH`(av4|u;YPq%{R;IuYow<+GEsf@R?=@tT@!}?#>zIIn0CoyV!hq3mw zHj>OOjfJM3F{RG#6ujzo?y32m^tgSXf@v=J$ELdJ+=5j|=F-~hP$G&}tDZsZE?5rX ztGj`!S>)CFmdkccxM9eGIcGnS2AfK#gXwj%esuIBNJQP1WV~b~+D7PJTmWGTSDrR` zEAu4B8l>NPuhsk5a`rReSya2nfV1EK01+G!x8aBdTs3Io$u5!6n6KX%uv@DxAp3F@{4UYg4SWJtQ-W~0MDb|j-$lwVn znAm*Pl!?Ps&3wO=R115RWKb*JKoexo*)uhhHBncEDMSVa_PyA>k{Zm2(wMQ(5NM3# z)jkza|GoWEQo4^s*wE(gHz?Xsg4`}HUAcs42cM1-qq_=+=!Gk^y710j=66(cSWqUe zklbm8+zB_syQv5A2rj!Vbw8;|$@C!vfNmNV!yJIWDQ>{+2x zKjuFX`~~HKG~^6h5FntRpnnHt=D&rq0>IJ9#F0eM)Y-)GpRjiN7gkA8wvnG#K=q{q z9dBn8_~wm4J<3J_vl|9H{7q6u2A!cW{bp#r*-f{gOV^e=8S{nc1DxMHFwuM$;aVI^ zz6A*}m8N-&x8;aunp1w7_vtB*pa+OYBw=TMc6QK=mbA-|Cf* zvyh8D4LRJImooUaSb7t*fVfih<97Gf@VE0|z>NcBwBQze);Rh!k3K_sfunToZY;f2 z^HmC4KjHRVg+eKYj;PRN^|E0>Gj_zagfRbrki68I^#~6-HaHg3BUW%+clM1xQEdPYt_g<2K+z!$>*$9nQ>; zf9Bei{?zY^-e{q_*|W#2rJG`2fy@{%6u0i_VEWTq$*(ZN37|8lFFFt)nCG({r!q#9 z5VK_kkSJ3?zOH)OezMT{!YkCuSSn!K#-Rhl$uUM(bq*jY? zi1xbMVthJ`E>d>(f3)~fozjg^@eheMF6<)I`oeJYx4*+M&%c9VArn(OM-wp%M<-`x z7sLP1&3^%Nld9Dhm@$3f2}87!quhI@nwd@3~fZl_3LYW-B?Ia>ui`ELg z&Qfe!7m6ze=mZ`Ia9$z|ARSw|IdMpooY4YiPN8K z4B(ts3p%2i(Td=tgEHX z0UQ_>URBtG+-?0E;E7Ld^dyZ;jjw0}XZ(}-QzC6+NN=40oDb2^v!L1g9xRvE#@IBR zO!b-2N7wVfLV;mhEaXQ9XAU+>=XVA6f&T4Z-@AX!leJ8obP^P^wP0aICND?~w&NykJ#54x3_@r7IDMdRNy4Hh;h*!u(Ol(#0bJdwEo$5437-UBjQ+j=Ic>Q2z` zJNDf0yO6@mr6y1#n3)s(W|$iE_i8r@Gd@!DWDqZ7J&~gAm1#~maIGJ1sls^gxL9LLG_NhU!pTGty!TbhzQnu)I*S^54U6Yu%ZeCg`R>Q zhBv$n5j0v%O_j{QYWG!R9W?5_b&67KB$t}&e2LdMvd(PxN6Ir!H4>PNlerpBL>Zvyy!yw z-SOo8caEpDt(}|gKPBd$qND5#a5nju^O>V&;f890?yEOfkSG^HQVmEbM3Ugzu+UtH zC(INPDdraBN?P%kE;*Ae%Wto&sgw(crfZ#Qy(<4nk;S|hD3j{IQRI6Yq|f^basLY; z-HB&Je%Gg}Jt@={_C{L$!RM;$$|iD6vu#3w?v?*;&()uB|I-XqEKqZPS!reW9JkLewLb!70T7n`i!gNtb1%vN- zySZj{8-1>6E%H&=V}LM#xmt`J3XQoaD|@XygXjdZ1+P77-=;=eYpoEQ01B@L*a(uW zrZeZz?HJsw_4g0vhUgkg@VF8<-X$B8pOqCuWAl28uB|@r`19DTUQQsb^pfqB6QtiT z*`_UZ`fT}vtUY#%sq2{rchyfu*pCg;uec2$-$N_xgjZcoumE5vSI{+s@iLWoz^Mf; zuI8kDP{!XY6OP~q5}%1&L}CtfH^N<3o4L@J@zg1-mt{9L`s^z$Vgb|mr{@WiwAqKg zp#t-lhrU>F8o0s1q_9y`gQNf~Vb!F%70f}$>i7o4ho$`uciNf=xgJ>&!gSt0g;M>*x4-`U)ysFW&Vs^Vk6m%?iuWU+o&m(2Jm26Y(3%TL; zA7T)BP{WS!&xmxNw%J=$MPfn(9*^*TV;$JwRy8Zl*yUZi8jWYF>==j~&S|Xinsb%c z2?B+kpet*muEW7@AzjBA^wAJBY8i|#C{WtO_or&Nj2{=6JTTX05}|H>N2B|Wf!*3_ z7hW*j6p3TvpghEc6-wufFiY!%-GvOx*bZrhZu+7?iSrZL5q9}igiF^*R3%DE4aCHZ zqu>xS8LkW+Auv%z-<1Xs92u23R$nk@Pk}MU5!gT|c7vGlEA%G^2th&Q*zfg%-D^=f z&J_}jskj|Q;73NP4<4k*Y%pXPU2Thoqr+5uH1yEYM|VtBPW6lXaetokD0u z9qVek6Q&wk)tFbQ8(^HGf3Wp16gKmr>G;#G(HRBx?F`9AIRboK+;OfHaLJ(P>IP0w zyTbTkx_THEOs%Q&aPrxbZrJlio+hCC_HK<4%f3ZoSAyG7Dn`=X=&h@m*|UYO-4Hq0 z-Bq&+Ie!S##4A6OGoC~>ZW`Y5J)*ouaFl_e9GA*VSL!O_@xGiBw!AF}1{tB)z(w%c zS1Hmrb9OC8>0a_$BzeiN?rkPLc9%&;1CZW*4}CDDNr2gcl_3z+WC15&H1Zc2{o~i) z)LLW=WQ{?ricmC`G1GfJ0Yp4Dy~Ba;j6ZV4r{8xRs`13{dD!xXmr^Aga|C=iSmor% z8hi|pTXH)5Yf&v~exp3o+sY4B^^b*eYkkCYl*T{*=-0HniSA_1F53eCb{x~1k3*`W zr~};p1A`k{1DV9=UPnLDgz{aJH=-LQo<5%+Em!DNN252xwIf*wF_zS^!(XSm(9eoj z=*dXG&n0>)_)N5oc6v!>-bd(2ragD8O=M|wGW z!xJQS<)u70m&6OmrF0WSsr@I%T*c#Qo#Ha4d3COcX+9}hM5!7JIGF>7<~C(Ear^Sn zm^ZFkV6~Ula6+8S?oOROOA6$C&q&dp`>oR-2Ym3(HT@O7Sd5c~+kjrmM)YmgPH*tL zX+znN>`tv;5eOfX?h{AuX^LK~V#gPCu=)Tigtq9&?7Xh$qN|%A$?V*v=&-2F$zTUv z`C#WyIrChS5|Kgm_GeudCFf;)!WH7FI60j^0o#65o6`w*S7R@)88n$1nrgU(oU0M9 zx+EuMkC>(4j1;m6NoGqEkpJYJ?vc|B zOlwT3t&UgL!pX_P*6g36`ZXQ; z9~Cv}ANFnJGp(;ZhS(@FT;3e)0)Kp;h^x;$*xZn*k0U6-&FwI=uOGaODdrsp-!K$Ac32^c{+FhI-HkYd5v=`PGsg%6I`4d9Jy)uW0y%) zm&j^9WBAp*P8#kGJUhB!L?a%h$hJgQrx!6KCB_TRo%9{t0J7KW8!o1B!NC)VGLM5! zpZy5Jc{`r{1e(jd%jsG7k%I+m#CGS*BPA65ZVW~fLYw0dA-H_}O zrkGFL&P1PG9p2(%QiEWm6x;U-U&I#;Em$nx-_I^wtgw3xUPVVu zqSuKnx&dIT-XT+T10p;yjo1Y)z(x1fb8Dzfn8e yu?e%!_ptzGB|8GrCfu%p?(_ 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
NnX)EH+Nua)3Y(c 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 /dev/null && pwd -P ) || exit + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -131,29 +133,22 @@ location of your Java installation." fi else JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." - fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -198,15 +193,11 @@ if "$cygwin" || "$msys" ; then done fi - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ @@ -214,12 +205,6 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/apps/levende-arbeidsforhold-ansettelse/gradlew.bat b/apps/levende-arbeidsforhold-ansettelse/gradlew.bat index 7101f8e4676..107acd32c4e 100644 --- a/apps/levende-arbeidsforhold-ansettelse/gradlew.bat +++ b/apps/levende-arbeidsforhold-ansettelse/gradlew.bat @@ -1,92 +1,89 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/gradlewUpdate.sh b/apps/levende-arbeidsforhold-ansettelse/gradlewUpdate.sh similarity index 100% rename from apps/levende-arbeidsforhold-ansettelse-v2/gradlewUpdate.sh rename to apps/levende-arbeidsforhold-ansettelse/gradlewUpdate.sh diff --git a/apps/levende-arbeidsforhold-ansettelse/settings.gradle b/apps/levende-arbeidsforhold-ansettelse/settings.gradle index 01c2d4485b0..9e3acc7cf8e 100644 --- a/apps/levende-arbeidsforhold-ansettelse/settings.gradle +++ b/apps/levende-arbeidsforhold-ansettelse/settings.gradle @@ -1,8 +1,8 @@ - plugins { id "com.gradle.develocity" version "3.17.4" } -rootProject.name = 'levende-arbeidsforhold-ansettelse' + +rootProject.name = 'testnav-levende-arbeidsforhold-ansettelse' includeBuild "../../libs/kafka-config" includeBuild "../../libs/avro-schema" diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java similarity index 83% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java index 128da0b610d..c825eae956e 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplication.java @@ -1,4 +1,4 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/ApplicationConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/ApplicationConfig.java similarity index 97% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/ApplicationConfig.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/ApplicationConfig.java index 136e5473695..a332e1f3abe 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/ApplicationConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/ApplicationConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.config; import no.nav.testnav.libs.servletcore.config.ApplicationCoreConfig; import no.nav.testnav.libs.standalone.servletsecurity.config.InsecureJwtServerToServerConfiguration; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/Consumers.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java index 17c6433baf7..6cddf881ebd 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/Consumers.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.config; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/DevConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/DevConfig.java similarity index 99% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/DevConfig.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/DevConfig.java index 7bacdf94364..a5410a7a12b 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/DevConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/DevConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/KafkaConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/KafkaConfig.java similarity index 99% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/KafkaConfig.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/KafkaConfig.java index d6ad3f4494a..3d111632e67 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/KafkaConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/KafkaConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.config; import io.confluent.kafka.serializers.AbstractKafkaSchemaSerDeConfig; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/OpenApiConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/OpenApiConfig.java similarity index 99% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/OpenApiConfig.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/OpenApiConfig.java index ac7cff0f8b5..8b71c18d28f 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/OpenApiConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/OpenApiConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.config; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/SecurityConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/SecurityConfig.java similarity index 99% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/SecurityConfig.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/SecurityConfig.java index 3664008f1ce..397ffcd4781 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/config/SecurityConfig.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/SecurityConfig.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/AaregConsumer.java similarity index 94% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/AaregConsumer.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/AaregConsumer.java index 0520de8cb79..64cde7f97f7 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/AaregConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/AaregConsumer.java @@ -1,11 +1,11 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config.Consumers; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.command.HentArbeidsforholdCommand; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.command.EndreArbeidsforholdCommand; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.Arbeidsforhold; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command.HentArbeidsforholdCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command.EndreArbeidsforholdCommand; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; import org.springframework.http.MediaType; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/TenorConsumer.java similarity index 93% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/TenorConsumer.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/TenorConsumer.java index 61c41226324..b12f838a103 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/TenorConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/TenorConsumer.java @@ -1,15 +1,14 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.command.HentPersonerCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.tenor.TenorRawResponse; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command.HentPersonerCommand; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.config.Consumers; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.TenorConsumer; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor.TenorRawResponse; import org.springframework.http.MediaType; import org.springframework.http.codec.json.Jackson2JsonDecoder; import org.springframework.http.codec.json.Jackson2JsonEncoder; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java similarity index 97% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/EndreArbeidsforholdCommand.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java index 9285f02d67d..ea25832e778 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/EndreArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java @@ -1,9 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.command; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.Arbeidsforhold; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.commands.utils.WebClientFilter; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentArbeidsforholdCommand.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java index e5dee357cc7..4d8937b4605 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentArbeidsforholdCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java @@ -1,9 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.command; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.Arbeidsforhold; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; import no.nav.testnav.libs.commands.utils.WebClientFilter; import no.nav.testnav.libs.servletcore.headers.NavHeaders; import org.springframework.http.HttpHeaders; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentPersonerCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java similarity index 89% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentPersonerCommand.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java index 520e7175517..54e9d00b3fd 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/consumers/command/HentPersonerCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java @@ -1,10 +1,9 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.command; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command; import com.fasterxml.jackson.databind.JsonNode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor.TenorRawResponse; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor.TenorResponse; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.tenor.TenorResponse; import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.WebClient; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Hendelse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Hendelse.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java index 24d1b903a90..992739342fa 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Hendelse.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.tenor; @SuppressWarnings("java:S115") public enum Hendelse { diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Spesifiseringstype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Spesifiseringstype.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java index 44f73ff9da9..bb766ab7a8f 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/Spesifiseringstype.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.tenor; @SuppressWarnings("java:S115") public enum Spesifiseringstype { diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TekniskNavn.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java similarity index 99% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TekniskNavn.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java index ae1bd3042b8..b0e3651bb47 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TekniskNavn.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.tenor; @SuppressWarnings("java:S115") public enum TekniskNavn { diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorOversiktResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java similarity index 99% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorOversiktResponse.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java index 4427c758995..98501bf9c63 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorOversiktResponse.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.tenor; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRawResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java similarity index 99% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRawResponse.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java index 71780a27e29..eee1576cdfd 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRawResponse.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.tenor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRequest.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java similarity index 99% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRequest.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java index e110ed3ebc1..b9abfd25b09 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorRequest.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.tenor; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java similarity index 96% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorResponse.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java index 488ff095b5c..691e2e14ba5 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/tenor/TenorResponse.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.tenor; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.tenor; import com.fasterxml.jackson.databind.JsonNode; import lombok.AllArgsConstructor; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Ansettelsesperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Ansettelsesperiode.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Ansettelsesperiode.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Ansettelsesperiode.java index 564fabfd53c..9f158ed3be2 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Ansettelsesperiode.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Ansettelsesperiode.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/AntallTimerForTimeloennet.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java similarity index 97% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/AntallTimerForTimeloennet.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java index af3e210af29..3336c49853c 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/AntallTimerForTimeloennet.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.YearMonth; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtale.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java index 36c9c0a9884..70d9f14803c 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtale.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java @@ -1,11 +1,11 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.*; import io.swagger.v3.oas.annotations.media.DiscriminatorMapping; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.experimental.SuperBuilder; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDate; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtaletype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtaletype.java similarity index 95% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtaletype.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtaletype.java index f3f4d628cec..2aec015b624 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsavtaletype.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtaletype.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforhold.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforhold.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java index 366ab075090..e82190ec1b6 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforhold.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDateTime; import java.util.List; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforholdoversikt.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforholdoversikt.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java index 84da39b4e21..30e57631832 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsforholdoversikt.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java index c161fd852ce..fbe3d6b60c4 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsgiveroversikt.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsgiveroversikt.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsgiveroversikt.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsgiveroversikt.java index 413f5232899..eaedcd5bb12 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Arbeidsgiveroversikt.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Arbeidsgiveroversikt.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Bruksperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java similarity index 97% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Bruksperiode.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java index 168052b07a0..6ebd4d7273d 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Bruksperiode.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java index 7ad8eb042bd..4f47dc91232 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonPropertyOrder; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/FrilanserArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/FrilanserArbeidsavtale.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/FrilanserArbeidsavtale.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/FrilanserArbeidsavtale.java index cf52a682b61..4b024921206 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/FrilanserArbeidsavtale.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/FrilanserArbeidsavtale.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonPropertyOrder; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Gyldighetsperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Gyldighetsperiode.java similarity index 97% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Gyldighetsperiode.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Gyldighetsperiode.java index cb8b0c4c2e6..0d79a24a48a 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Gyldighetsperiode.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Gyldighetsperiode.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.EqualsAndHashCode; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/MaritimArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/MaritimArbeidsavtale.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/MaritimArbeidsavtale.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/MaritimArbeidsavtale.java index ba073db2aac..8a34580fe60 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/MaritimArbeidsavtale.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/MaritimArbeidsavtale.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonPropertyOrder; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiver.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiver.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiver.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiver.java index 42af1706f12..b3794218e17 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiver.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiver.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiverType.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiverType.java similarity index 90% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiverType.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiverType.java index 190de4866e1..5207ba6c342 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OpplysningspliktigArbeidsgiverType.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiverType.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; public interface OpplysningspliktigArbeidsgiverType { diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OrdinaerArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/OrdinaerArbeidsavtale.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OrdinaerArbeidsavtale.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/OrdinaerArbeidsavtale.java index db2d18ca556..c4bf5e164ea 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/OrdinaerArbeidsavtale.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/OrdinaerArbeidsavtale.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonPropertyOrder; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Organisasjon.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Organisasjon.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Organisasjon.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Organisasjon.java index 4c0eef5d677..96ca2f5cf00 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Organisasjon.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Organisasjon.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Periode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Periode.java similarity index 97% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Periode.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Periode.java index 0459ba1d4a7..65a96bb5ae4 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Periode.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Periode.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; @@ -7,7 +7,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import lombok.experimental.SuperBuilder; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDate; @Getter diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/PermisjonPermittering.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/PermisjonPermittering.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/PermisjonPermittering.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/PermisjonPermittering.java index 83d3888cba3..dc799ef7a94 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/PermisjonPermittering.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/PermisjonPermittering.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Person.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Person.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Person.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Person.java index 55cbd709e63..cd7abf44a71 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Person.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Person.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Persontype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Persontype.java similarity index 88% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Persontype.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Persontype.java index 646fb661971..e572a7e637d 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Persontype.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Persontype.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; public interface Persontype { diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/README.md b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/README.md similarity index 100% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/README.md rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/README.md diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Sporingsinformasjon.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Sporingsinformasjon.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java index b9664191f65..f7c8cf1387d 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Sporingsinformasjon.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Utenlandsopphold.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java similarity index 97% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Utenlandsopphold.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java index a75892b9a3a..3e1ed9a27be 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Utenlandsopphold.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; @@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util.JavaTimeUtil; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; import java.time.YearMonth; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varsel.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Varsel.java similarity index 97% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varsel.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Varsel.java index 01288cb1dd3..18fe1a580c6 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varsel.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Varsel.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonPropertyOrder; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varselentitet.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Varselentitet.java similarity index 94% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varselentitet.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Varselentitet.java index bb9fc4068e0..652567f1b8d 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/Varselentitet.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/Varselentitet.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/util/JavaTimeUtil.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/util/JavaTimeUtil.java similarity index 98% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/util/JavaTimeUtil.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/util/JavaTimeUtil.java index 263567f9513..17e5035f88a 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/domain/v1/util/JavaTimeUtil.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/v1/util/JavaTimeUtil.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.domain.v1.util; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.util; import java.time.LocalDate; import java.time.LocalDateTime; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/service/TenorPersonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/TenorPersonService.java similarity index 94% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/service/TenorPersonService.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/TenorPersonService.java index 39c86afbd0a..94341448240 100644 --- a/apps/levende-arbeidsforhold-ansettelse-v2/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelsev2/service/TenorPersonService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/TenorPersonService.java @@ -1,10 +1,10 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.service; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.service; import com.fasterxml.jackson.core.JsonProcessingException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforholdansettelsev2.consumers.TenorConsumer; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.TenorConsumer; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/ApplicationConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/ApplicationConfig.java deleted file mode 100644 index aa44f715218..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/ApplicationConfig.java +++ /dev/null @@ -1,15 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; - -import no.nav.testnav.libs.servletcore.config.ApplicationCoreConfig; -import no.nav.testnav.libs.standalone.servletsecurity.config.InsecureJwtServerToServerConfiguration; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -@Configuration -@Import({ - ApplicationCoreConfig.class, - InsecureJwtServerToServerConfiguration.class -}) -public class ApplicationConfig { - -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java deleted file mode 100644 index 889078d6e0c..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/Consumers.java +++ /dev/null @@ -1,30 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; - -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -import static lombok.AccessLevel.PACKAGE; - -/** - * Samler alle placeholders for ulike {@code consumers.*}-konfigurasjon her, dvs. subklasser av {@code ServerProperties}. - *

- * Husk at Spring Boot bruker relaxed binding - * mellom configuration properties og field names. - * - * @see ServerProperties - */ -@Configuration -@ConfigurationProperties(prefix = "consumers") -@NoArgsConstructor(access = PACKAGE) -@Getter -@Setter(PACKAGE) -public class Consumers { - - private ServerProperties testnavAaregProxy; - private ServerProperties testnavTenorSearchService; - -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/DevConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/DevConfig.java deleted file mode 100644 index 756cb9c8dcd..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/DevConfig.java +++ /dev/null @@ -1,36 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; - -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -import org.springframework.vault.annotation.VaultPropertySource; -import org.springframework.vault.authentication.ClientAuthentication; -import org.springframework.vault.authentication.TokenAuthentication; -import org.springframework.vault.client.VaultEndpoint; -import org.springframework.vault.config.AbstractVaultConfiguration; - -import static io.micrometer.common.util.StringUtils.isBlank; - -@Configuration -@Profile("dev") -@VaultPropertySource(value = "secret/dolly/lokal", ignoreSecretNotFound = false) -public class DevConfig extends AbstractVaultConfiguration { - - private static final String VAULT_TOKEN = "spring.cloud.vault.token"; - - @Override - public VaultEndpoint vaultEndpoint() { - return VaultEndpoint.create("vault.adeo.no", 443); - } - - @Override - public ClientAuthentication clientAuthentication() { - if (System.getenv().containsKey("VAULT_TOKEN")) { - System.setProperty(VAULT_TOKEN, System.getenv("VAULT_TOKEN")); - } - var token = System.getProperty(VAULT_TOKEN); - if (isBlank(token)) { - throw new IllegalArgumentException("Påkrevet property 'spring.cloud.vault.token' er ikke satt."); - } - return new TokenAuthentication(System.getProperty(VAULT_TOKEN)); - } -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java deleted file mode 100644 index de70156a8d5..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/KafkaConfig.java +++ /dev/null @@ -1,93 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; -/* - -import io.confluent.kafka.serializers.AbstractKafkaSchemaSerDeConfig; -import io.confluent.kafka.serializers.KafkaAvroDeserializer; -import io.confluent.kafka.serializers.KafkaAvroDeserializerConfig; -import lombok.extern.slf4j.Slf4j; -import org.apache.kafka.clients.CommonClientConfigs; -import org.apache.kafka.clients.consumer.Consumer; -import org.apache.kafka.clients.consumer.ConsumerConfig; -import org.apache.kafka.common.config.SslConfigs; -import org.apache.kafka.common.serialization.StringDeserializer; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -import org.springframework.kafka.annotation.EnableKafka; -import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; -import org.springframework.kafka.core.ConsumerFactory; -import org.springframework.kafka.core.DefaultKafkaConsumerFactory; -import org.springframework.kafka.listener.CommonLoggingErrorHandler; - -import java.net.InetSocketAddress; -import java.util.HashMap; -import java.util.Map; - -@Slf4j -@EnableKafka -@Configuration -@Profile({"dev", "prod"}) -public class KafkaConfig { - - private final String groupId; - - public KafkaConfig(@Value("${spring.kafka.consumer.group-id}") String groupId) { - this.groupId = groupId; - } - - public ConsumerFactory consumerFactory() { - - String randomSuffixGroupID = String.valueOf((int)(Math.random() * 1000)); - - InetSocketAddress inetSocketAddress = new InetSocketAddress(0); - Map props = new HashMap<>(); - props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, System.getenv("KAFKA_BROKERS")); - props.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, System.getenv("KAFKA_KEYSTORE_PATH")); - props.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, System.getenv("KAFKA_CREDSTORE_PASSWORD")); - props.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, System.getenv("KAFKA_TRUSTSTORE_PATH")); - props.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, System.getenv("KAFKA_CREDSTORE_PASSWORD")); - props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SSL"); - props.put(KafkaAvroDeserializerConfig.SPECIFIC_AVRO_READER_CONFIG, true); - - props.put(AbstractKafkaSchemaSerDeConfig.BASIC_AUTH_CREDENTIALS_SOURCE, "USER_INFO"); - var username = System.getenv("KAFKA_SCHEMA_REGISTRY_USER"); - var password = System.getenv("KAFKA_SCHEMA_REGISTRY_PASSWORD"); - - props.put(AbstractKafkaSchemaSerDeConfig.USER_INFO_CONFIG, username + ":" + password); - props.put(AbstractKafkaSchemaSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, System.getenv("KAFKA_SCHEMA_REGISTRY")); - - props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId + randomSuffixGroupID); - props.put(ConsumerConfig.CLIENT_ID_CONFIG, groupId + inetSocketAddress.getHostString()); - props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, true); - props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest"); - props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); - props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 1000 * 60 * 10); - props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class); - - return new DefaultKafkaConsumerFactory<>(props); - } - - @Bean - public ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory() { - - ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory<>(); - var consumerFactory = consumerFactory(); - consumerFactory.addListener(new ConsumerFactory.Listener<>() { - @Override - public void consumerAdded(String id, Consumer consumer) { - log.info("Legger til consumer med id: {}", id); - } - - @Override - public void consumerRemoved(String id, Consumer consumer) { - log.warn("Fjerner consumer med id: {}. Restarter app...", id); - } - }); - factory.setBatchListener(true); - factory.setConsumerFactory(consumerFactory); - factory.setCommonErrorHandler(new CommonLoggingErrorHandler()); - return factory; - } -} -*/ \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/OpenApiConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/OpenApiConfig.java deleted file mode 100644 index 4e9487e6af8..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/OpenApiConfig.java +++ /dev/null @@ -1,54 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; - -import io.swagger.v3.oas.models.Components; -import io.swagger.v3.oas.models.OpenAPI; -import io.swagger.v3.oas.models.info.Contact; -import io.swagger.v3.oas.models.info.Info; -import io.swagger.v3.oas.models.info.License; -import io.swagger.v3.oas.models.security.SecurityRequirement; -import io.swagger.v3.oas.models.security.SecurityScheme; -import no.nav.testnav.libs.servletcore.config.ApplicationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -import java.util.Arrays; - -@Configuration -public class OpenApiConfig implements WebMvcConfigurer { - - @Bean - public OpenAPI openApi(ApplicationProperties applicationProperties) { - return new OpenAPI() - .components(new Components().addSecuritySchemes("bearer-jwt", new SecurityScheme() - .type(SecurityScheme.Type.HTTP) - .scheme("bearer") - .bearerFormat("JWT") - .in(SecurityScheme.In.HEADER) - .name("Authorization") - )) - .addSecurityItem( - new SecurityRequirement().addList("bearer-jwt", Arrays.asList("read", "write"))) - .info(new Info() - .title(applicationProperties.getName()) - .version(applicationProperties.getVersion()) - .description(applicationProperties.getDescription()) - .termsOfService("https://nav.no") - .contact(new Contact() - .url("https://nav-it.slack.com/archives/CA3P9NGA2") - .email("dolly@nav.no") - .name("Team Dolly") - ) - .license(new License() - .name("MIT License") - .url("https://opensource.org/licenses/MIT") - ) - ); - } - - @Override - public void addViewControllers(ViewControllerRegistry registry) { - registry.addViewController("/swagger").setViewName("redirect:/swagger-ui.html"); - } -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/SecurityConfig.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/SecurityConfig.java deleted file mode 100644 index 4f8f0258f7a..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/config/SecurityConfig.java +++ /dev/null @@ -1,39 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -import org.springframework.security.config.Customizer; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.security.web.SecurityFilterChain; - -@EnableWebSecurity -@Configuration -@Profile({ "prod", "dev" }) -public class SecurityConfig { - - @Bean - @SuppressWarnings("java:S4502") - public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { - - httpSecurity.sessionManagement(sessionConfig -> sessionConfig.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) - .csrf(AbstractHttpConfigurer::disable) - .authorizeHttpRequests(authorizeConfig -> authorizeConfig.requestMatchers( - "/internal/**", - "/webjars/**", - "/swagger-resources/**", - "/v3/api-docs/**", - "/swagger-ui/**", - "/swagger", - "/error", - "/swagger-ui.html" - ).permitAll().requestMatchers("/api/**").fullyAuthenticated()) - .oauth2ResourceServer(oauth2RSConfig -> oauth2RSConfig.jwt(Customizer.withDefaults())); - - return httpSecurity.build(); - } -} - diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java deleted file mode 100644 index 483a1d2ebce..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/AaregConsumer.java +++ /dev/null @@ -1,74 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers; - -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.extern.slf4j.Slf4j; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.config.Consumers; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command.EndreArbeidsforholdCommand; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command.HentArbeidsforholdCommand; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; -import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; -import org.springframework.http.MediaType; -import org.springframework.http.codec.json.Jackson2JsonDecoder; -import org.springframework.http.codec.json.Jackson2JsonEncoder; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.function.client.ExchangeStrategies; -import org.springframework.web.reactive.function.client.WebClient; - -import java.util.ArrayList; -import java.util.List; - -import static java.util.Objects.nonNull; - -@Slf4j -@Component -public class AaregConsumer { - - private final WebClient webClient; - private final ServerProperties serverProperties; - private final TokenExchange tokenExchange; - - public AaregConsumer( - Consumers consumers, - TokenExchange tokenExchange, - ObjectMapper objectMapper) { - - this.serverProperties = consumers.getTestnavAaregProxy(); - this.tokenExchange = tokenExchange; - - ExchangeStrategies jacksonStrategy = ExchangeStrategies - .builder() - .codecs( - config -> { - config - .defaultCodecs() - .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); - config - .defaultCodecs() - .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); - }) - .build(); - - this.webClient = WebClient - .builder() - .exchangeStrategies(jacksonStrategy) - .baseUrl(serverProperties.getUrl()) - .build(); - } - - public List hentArbeidsforhold(String ident) { - var token = tokenExchange.exchange(serverProperties).block(); - if (nonNull(token)) { - return new HentArbeidsforholdCommand(webClient, token.getTokenValue(), ident).call(); - } - return new ArrayList<>(); - } - - public void endreArbeidsforhold(Arbeidsforhold requests) { - var token = tokenExchange.exchange(serverProperties).block(); - if (nonNull(token)) { - new EndreArbeidsforholdCommand(webClient, requests, token.getTokenValue()).call(); - } - } -} - diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java deleted file mode 100644 index 4b1eac77172..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/TenorConsumer.java +++ /dev/null @@ -1,73 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.extern.slf4j.Slf4j; -import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.config.Consumers; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command.HentPersonerCommand; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorRawResponse; -import org.springframework.http.MediaType; -import org.springframework.http.codec.json.Jackson2JsonDecoder; -import org.springframework.http.codec.json.Jackson2JsonEncoder; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.function.client.ExchangeStrategies; -import org.springframework.web.reactive.function.client.WebClient; - -import static java.util.Objects.nonNull; - -@Slf4j -@Component -public class TenorConsumer { - private static final String TENOR_DOMAIN = "https://testnav-tenor-search-service.intern.dev.nav.no"; - private final WebClient webClient; - private final TokenExchange tokenExchange; - private final ServerProperties serverProperties; - private final ObjectMapper objectMapper; - - - public TenorConsumer( - TokenExchange tokenExchange, - Consumers consumers, - ObjectMapper objectMapper) { - - this.serverProperties = consumers.getTestnavTenorSearchService(); - this.tokenExchange = tokenExchange; - this.objectMapper = objectMapper; - - ExchangeStrategies jacksonStrategy = ExchangeStrategies - .builder() - .codecs( - config -> { - config - .defaultCodecs() - .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); - config - .defaultCodecs() - .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); - }) - .build(); - - this.webClient = WebClient - .builder() - .exchangeStrategies(jacksonStrategy) - .baseUrl(TENOR_DOMAIN) - .build(); - } - - public void consume() throws JsonProcessingException { - log.info("Kjører consume"); - var accessToken = tokenExchange.exchange(serverProperties).block(); - log.info("Har hentet ut token"); - - if (nonNull(accessToken)) { - var token = accessToken.getTokenValue(); - HentPersonerCommand commander = new HentPersonerCommand(token, webClient); - JsonNode data = commander.hentPersonData("1520"); - var rawResponse = objectMapper.readValue(data.toString(), TenorRawResponse.class); - log.info(rawResponse.getDokumentListe().getFirst().getKommunenr()); - } - } -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java deleted file mode 100644 index 6b6a92b876e..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/EndreArbeidsforholdCommand.java +++ /dev/null @@ -1,54 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command; - -import lombok.RequiredArgsConstructor; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; -import no.nav.testnav.libs.commands.utils.WebClientFilter; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.web.reactive.function.BodyInserters; -import org.springframework.web.reactive.function.client.WebClient; -import reactor.core.publisher.Mono; -import reactor.util.retry.Retry; - -import java.time.Duration; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.concurrent.Callable; - -@Slf4j -@RequiredArgsConstructor -public class EndreArbeidsforholdCommand implements Callable> { - private final WebClient webClient; - private final Arbeidsforhold requests; - private final String token; - private final String miljoe = "q2"; - private final String navArbeidsforholdKilde = "Dolly-doedsfall-hendelse" ; - - @SneakyThrows - @Override - public Mono call() { - - Mono request = webClient - .put() - .uri(builder -> builder.path("/{miljoe}/api/v1/arbeidsforhold/{navArbeidsforholdId}") - .build(miljoe, requests.getNavArbeidsforholdId())) - .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .header("Nav-Arbeidsforhold-Kildereferanse", navArbeidsforholdKilde) - .header("Nav-Arbeidsforhold-Periode", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"))) - .body(BodyInserters.fromValue(requests)) - .retrieve() - .bodyToMono(Arbeidsforhold.class) - .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) - .filter(WebClientFilter::is5xxException)) - .map(arbeidsforhold1 -> Arbeidsforhold.builder().build()); - - request.subscribe(response -> {}, error -> log.error("Feil ved endring av arbeidsforhold: {}", error.getMessage())); - - return request; - } -} - - diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java deleted file mode 100644 index 889edf40918..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentArbeidsforholdCommand.java +++ /dev/null @@ -1,73 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command; - -import lombok.RequiredArgsConstructor; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; -import no.nav.testnav.libs.commands.utils.WebClientFilter; -import no.nav.testnav.libs.servletcore.headers.NavHeaders; -import org.springframework.http.HttpHeaders; -import org.springframework.web.reactive.function.client.WebClient; -import org.springframework.web.reactive.function.client.WebClientResponseException; -import reactor.util.retry.Retry; - -import java.time.Duration; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.UUID; -import java.util.concurrent.Callable; -import java.util.stream.Collectors; - -import static java.lang.String.format; - - -@Slf4j -@RequiredArgsConstructor -public class HentArbeidsforholdCommand implements Callable> { - private final WebClient webClient; - private final String token; - private final String ident; - private final String miljoe = "q2"; - private static final String NAV_PERSON_IDENT = "Nav-Personident"; - private static final String CONSUMER = "Dolly"; - - - private static String getNavCallId() { - return format("%s %s", CONSUMER, UUID.randomUUID()); - } - - @SneakyThrows - @Override - public List call(){ - - try { - var arbeidsforhold = webClient - .get() - .uri(builder -> builder - .path("/{miljoe}/api/v1/arbeidstaker/arbeidsforhold") - .queryParam("arbeidsforholdtype", "forenkletOppgjoersordning", "frilanserOppdragstakerHonorarPersonerMm", "maritimtArbeidsforhold", "ordinaertArbeidsforhold") - .build(miljoe)) - .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .header(NAV_PERSON_IDENT, ident) - .header(NavHeaders.NAV_CONSUMER_ID, CONSUMER) - .header(NavHeaders.NAV_CALL_ID, getNavCallId()) - .retrieve() - .bodyToMono(Arbeidsforhold[].class) - .retryWhen(Retry - .backoff(3, Duration.ofSeconds(5)) - .filter(WebClientFilter::is5xxException)) - .block(); - - return Arrays.stream(arbeidsforhold).collect(Collectors.toList()); - } catch (WebClientResponseException.NotFound e) { - return Collections.emptyList(); - } catch (WebClientResponseException e) { - log.error( - "Klarer ikke å hente arbeidsforhold. Feilmelding: {}.", - e.getResponseBodyAsString() - ); - throw e; - } - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java deleted file mode 100644 index 64524ac0404..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/consumers/command/HentPersonerCommand.java +++ /dev/null @@ -1,36 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.command; - -import com.fasterxml.jackson.databind.JsonNode; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorResponse; -import org.springframework.http.HttpHeaders; -import org.springframework.web.reactive.function.client.WebClient; - -@Slf4j -@RequiredArgsConstructor -public class HentPersonerCommand { - private static final String PATH = "/api/v1/tenor/testdata/raw"; - private final String token; - private final WebClient webClient; - - public JsonNode hentPersonData(String kommunenr){ - System.out.println("Henter personer"); - var request = webClient - .get() - .uri(builder -> builder - .path(PATH) - .queryParam("type", "Spesifikt") - .queryParam("fields", "id", "kommunenr", "arbeidsforhold") - .queryParam("searchData", "kommunenr:" + kommunenr) - .build() - ) - .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) - .retrieve() - .bodyToMono(TenorResponse.class); - var response = request.block(); - - System.out.println("Fikk respons!"); - return response.getData(); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java deleted file mode 100644 index 1358d4d5c21..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Hendelse.java +++ /dev/null @@ -1,50 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; - -@SuppressWarnings("java:S115") -public enum Hendelse { - - EndringIAdressebeskyttelse, - EndringIBostedsadresse, - EndringIBostedsadresseUtenFlytting, - EndringIBrukAvSamiskSpraak, - EndringIDeltBosted, - EndringIDoedsfall, - EndringIFalskIdentitet, - EndringIFamilierelasjon, - EndringIFoedsel, - EndringIFoedselINorge, - EndringIForeldreansvar, - EndringIFratattRettsligHandleevne, - EndringIIdentifikasjonsnummer, - EndringIIdentitetsgrunnlag, - EndringIInnflytting, - EndringIKjoenn, - EndringIKontaktinformasjon, - EndringIKontaktopplysningerForDoedsbo, - EndringILegitimasjonsdokument, - EndringINavn, - EndringIOpphold, - EndringIOppholdPaaSvalbard, - EndringIOppholdsadresse, - EndringIPerson, - EndringIRettsligHandleevne, - EndringISametingetsValgmanntall, - EndringISivilstand, - EndringIStatsborgerskap, - EndringIStatus, - EndringIUtenlandskPersonidentifikasjon, - EndringIUtflytting, - EndringIUtlendingsmyndighetenesIdentifikasjonsnummer, - EndringIVergemaal, - PersonErBosatt, - PersonErDoed, - PersonErEndretVedSplitting, - PersonErGjenopprettetVedSplitting, - PersonErOppdatert, - PersonErOpphoert, - PersonErOpphoertSomDublett, - PersonErOpprettet, - PersonErReaktivert, - PersonErUtflyttet, - PersonErViderefoertSomGjeldendeVedSammenslaaing -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java deleted file mode 100644 index 2edbb562948..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/Spesifiseringstype.java +++ /dev/null @@ -1,35 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; - -@SuppressWarnings("java:S115") -public enum Spesifiseringstype { - - AksjeIkkeIAksjonaerregisteret, - Aksjesparekonto, - AndreBeloepKnyttetTilBoligOgEiendeler, - AnnenKapitalkostnad, - AnnetFinansprodukt, - DeltakersAndelAvFormueOgInntekt, - Eiendom, - Fondskonto, - Fordring, - FritidsbaatMedSalgsverdiOverSalgsverdigrense, - Generisk, - GrunnlagKnyttetTilLottaker, - KapitalisertFesteavgift, - Kjoeretoey, - KollektivPensjonsordning, - Konto, - Livsforsikring, - LoennOgTilsvarendeYtelser, - Naeringsopplysninger, - ObligasjonOgSertifikat, - OekonomiskeForholdKnyttetTilBoligsameieEllerBoligselskap, - PrivatGjeldsforholdUtenforVirksomhet, - SamletGjeldOgFormuesobjekterINaering, - Skadeforsikring, - SkyldigRestskatt, - SykepengerOgAnnenInntektMvFraOppgavegiver, - Verdipapirfond, - VirtuellEiendel, - VirtuellValuta -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java deleted file mode 100644 index e6acbc72e70..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TekniskNavn.java +++ /dev/null @@ -1,430 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; - -@SuppressWarnings("java:S115") -public enum TekniskNavn { - AaretsFremfoerbareNegativPersoninntekt, - AarsavgiftForKontoIVerdipapirregister, - AlderspensjonFraFolketrygden, - AlderspensjonFraIPAOgIPS, - AlminneligInntektFoerSaerfradrag, - AndelAvFellesgjeldISDF, - AndelAvUnderskuddFraTidligereAarVedDriftAvVaaningshusSomAnvendesIAaret, - AndelIFellesTapVedSalgAvAndelISDF, - AndelIFellesTilleggIAlminneligInntektFraSDF, - AndelIFellesTilleggIAlminneligInntektFraSDFInnenAnnenNaering, - AndelIFellesTilleggIAlminneligInntektFraSDFInnenBarnepassIBarnepasserensHjem, - AndreFradragsberettigedeKostnader, - AnnenArbeidsinntekt, - AnnenGjeld, - AnnenPensjonFoerAlderspensjon, - AnnenSkattepliktigKapitalinntektFraAnnetFinansprodukt, - AnnenSkattepliktigKapitalinntektFraVirtuellValuta, - AnnetInntektsfradrag, - Arbeidsavklaringspenger, - ArbeidsinntektFraKompensasjonsytelseUtbetaltAvNav, - AvkortetFordelVedElektroniskKommunikasjon, - BarnepensjonFraAndreEnnFolketrygden, - BarnepensjonFraFolketrygden, - BarnepensjonFraIPAOgIPS, - BetaltPremieTilSykeOgUlykkesforsikringForNaeringsdrivende, - BetaltUnderholdsbidrag, - BetalteForsinkelsesrenter, - Bruttoformue, - DagpengerForFisker, - DagpengerForNaeringsdrivende, - DagpengerForNaeringsdrivendeOgFisker, - DagpengerVedSykehusoppholdMvFraBarneforsikring, - EktefelletilleggTilPensjon, - EktefelletilleggTilUfoeretrygd, - EngangsutbetalingFraIPSIPA, - EtterlattepensjonFraFolketrygden, - Foederaad, - FormuesverdiAvPrivatUtestaaendeFordring, - FormuesverdiAvUtestaaendeFordring, - FormuesverdiForAndelIRentedelIVerdipapirfond, - FormuesverdiForAnnenFastEiendom, - FormuesverdiForAnnenFastEiendomInnenforInntektsgivendeAktivitet, - FormuesverdiForAnnenFastEiendomUtenforInntektsgivendeAktivitet, - FormuesverdiForAnnetFinansprodukt, - FormuesverdiForBorett, - FormuesverdiForBuskap, - FormuesverdiForEgenFritaksbehandletBolig, - FormuesverdiForFormuesobjekterINaeringIkkeOmfattetAvVerdsettingsrabatt, - FormuesverdiForFritidsbaatMedSalgsverdiOverSalgsverdigrense, - FormuesverdiForGaardsbruk, - FormuesverdiForInnboLoesoereOgFritidsbaatUnderSalgsverdigrense, - FormuesverdiForKjoeretoey, - FormuesverdiForKontanterIAksjesparekonto, - FormuesverdiForKontanterMvIFondskonto, - FormuesverdiForNaeringseiendom, - FormuesverdiForObligasjon, - FormuesverdiForObligasjonerOpsjonerMvIkkeRegistrertIVerdipapirsentralen, - FormuesverdiForObligasjonerOpsjonerMvRegistrertIVerdipapirsentralen, - FormuesverdiForPrimaerbolig, - FormuesverdiForRegnskapsbehandletBolig, - FormuesverdiForRegnskapsbehandletFritidseiendom, - FormuesverdiForSekundaerbolig, - FormuesverdiForSkogeiendom, - FormuesverdiForTomt, - FormuesverdiForUbetingetOpsjonIArbeidsforhold, - FormuesverdiForUtestaaendeFordringerINaering, - FormuesverdiForUtleidFlerboligbygning, - FormuesverdiForVarelager, - FormuesverdiForVirtuellValuta, - Fortsettelsesforsikring, - ForvaltningskostnadKnyttetTilAksjesparekonto, - ForvaltningskostnadKnyttetTilFondskonto, - ForvaltningskostnadKnyttetTilVerdipapirfond, - ForvaltningskostnaderFinans, - FradragForFagforeningskontingent, - FradragForGaverTilFrivilligeOrganisasjoner, - FradragForIndividuellSparingTilPensjon, - FradragForKostnaderKnyttetTilArbeid, - FradragForMerkostnadVedArbeidsoppholdUtenforHjemmet, - FradragForPengetilskudd, - FradragForVergegodtgjoerelse, - FradragsberettigedeFoederaadsytelserOgUnderholdsbidragTilAnnenPerson, - FradragsberettigetTapPaaKapitalforsikringsavtale, - FradragsberettigetTapVedRealisasjonAvFastEiendom, - FradragsberettigetTapVedRealisasjonAvFastEiendomIUtlandet, - FremfoerbartUnderskuddIEnkeltpersonforetak, - GevinstOgAnnenInntektFraVirtuellEiendel, - GevinstValutalaan, - GevinstVedRealisasjonAvAksje, - GevinstVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, - GevinstVedRealisasjonAvAksjesparekonto, - GevinstVedRealisasjonAvAndelIAksjedelIVerdipapirfond, - GevinstVedRealisasjonAvAndelIRentedelIVerdipapirfond, - GevinstVedRealisasjonAvAnnetFinansprodukt, - GevinstVedRealisasjonAvFastEiendomMv, - GevinstVedRealisasjonAvFastEiendomMvIUtlandet, - GevinstVedRealisasjonAvObligasjonVerdipapirfondRentedelMv, - GevinstVedRealisasjonAvObligasjonerSertifikaterMv, - GevinstVedRealisasjonAvOgUttakFraAksjedelIFondskonto, - GevinstVedRealisasjonAvOgUttakFraRentedelIFondskonto, - GevinstVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, - GevinstVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, - GevinstVedRealisasjonAvVirtuellValuta, - GevinstVedSalgAvAndelINOKUS, - GevinstVedSalgAvAndelISDF, - GjeldIInnenlandskeBanker, - GjeldINaering, - GjeldIUtlandet, - GjeldPaaAnnetFinansprodukt, - GjeldsfradragForKapitalisertFesteavgift, - GjeldsreduksjonForFastEiendomIUtlandetUnntattBeskatningINorgeEtterSkatteavtale, - GjeldsreduksjonForFastEiendomUtenforSvalbardUnntattBeskatningPaaSvalbard, - GjeldsrentereduksjonForFormueIUtlandetUnntattBeskatningINorgeEtterSkatteavtale, - GjeldsrentereduksjonForFormueUtenforSvalbardUnntattBeskatningPaaSvalbard, - GjenkjoepsverdiForLivsforsikring, - GrunnlagForKildeskattPaaPensjonOgUfoereytelser, - GrunnlagForSkattPaaAlminneligInntektSvalbard, - GrunnlagForSkattPaaNaeringsoverskuddSvalbard, - Innskudd, - InnskuddIUtlandet, - InntektFraGevinstOgTapskonto, - InntektFraLottEllerPartTilFiskerOgFangstmann, - InntektVedUtleieAvFritidseiendomSomSkattepliktigeHarBrukt, - InntektsfoeringAvNegativSaldo, - InntektsfradragAvRentefordelPaaLaanIArbeidsforhold, - InntektsfradragAvRentefordelPaaLaanIPensjonsforhold, - InntektsfradragFraGevinstOgTapskonto, - InntektsreduksjonVedAvkastningAvEngangserstatning, - Introduksjonsstoenad, - InvesteringIOppstartsselskap, - KaarytelseUtenforJordOgSkogbruksvirksomhet, - KapitalinntektFraSkogbruk, - KapitalkostnadFraSkogbruk, - KompensasjonsytelseUtbetaltAvNavInnenFiskeOgFangst, - Kontantbeloep, - Kvalifiseringsstoenad, - LatentEllerRealisertGevinstPaaAksjeAndelMvVedUtflytting, - LatentEllerRealisertGevinstPaaAnnetFinansproduktMvVedUtflytting, - LatentEllerRealisertTapPaaAksjeAndelMvVedUtflytting, - LatentEllerRealisertTapPaaAnnetFinansproduktMvVedUtflytting, - LivrenterIArbeidsforhold, - LivrenterUtenforArbeidsforhold, - LoennsinntektMedTrygdeavgiftspliktOmfattetAvLoennstrekkordningen, - LoennsinntektPaaSvalbardOver12G, - LoennsinntektTilBarn, - LoennsinntektUtenTrygdeavgiftspliktOgMedTrekkplikt, - LoennsinntektUtenTrygdeavgiftspliktOmfattetAvLoennstrekkordningen, - MinstefradragIBarnepensjon, - MinstefradragIBarnepensjonTilBarn, - MinstefradragIEktefelletillegg, - MinstefradragIInntekt, - MinstefradragIInntektTilBarn, - MottattFesteavgift, - NaeringsinntektFraKompensasjonsytelseUtbetaltAvNavInnenAnnenNaering, - NaeringsinntektFraKompensasjonsytelseUtbetaltAvNavInnenBarnepassIBarnepasserensHjem, - NaeringsinntektFraKompensasjonsytelseUtbetaltAvNavInnenFiskeOgFangst, - NegativAlminneligInntektOverfoertFraEktefelle, - NegativAlminneligInntektOverfoertTilEktefelle, - NegativFormueOverfoertFraEktefelle, - NettoLoennsinntektFraArbeidINorge, - Nettoformue, - NettoinntektVedUtleieAvFastEiendomMv, - OevrigInntekt, - OppjustertTilleggTilAndelIFellesTapVedSalgAvAndelISDF, - OppjustertTilleggTilAndelIFellesTilleggIAlminneligInntektFraSDF, - OppjustertTilleggTilAndelIFellesTilleggIAlminneligInntektFraSDFInnenAnnenNaering, - OppjustertTilleggTilAndelIFellesTilleggIAlminneligInntektFraSDFInnenBarnepassIBarnepasserensHjem, - OppjustertTilleggTilGevinstVedRealisasjonAvAksje, - OppjustertTilleggTilGevinstVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, - OppjustertTilleggTilGevinstVedRealisasjonAvAksjesparekonto, - OppjustertTilleggTilGevinstVedRealisasjonAvAndelIAksjedelIVerdipapirfond, - OppjustertTilleggTilGevinstVedRealisasjonAvOgUttakFraAksjedelIFondskonto, - OppjustertTilleggTilGevinstVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, - OppjustertTilleggTilGevinstVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, - OppjustertTilleggTilGevinstVedSalgAvAndelINOKUS, - OppjustertTilleggTilGevinstVedSalgAvAndelISDF, - OppjustertTilleggTilLatentEllerRealisertGevinstPaaAksjeAndelMvVedUtflytting, - OppjustertTilleggTilLatentEllerRealisertTapPaaAksjeAndelMvVedUtflytting, - OppjustertTilleggTilRenteinntektMedEkstrabeskatningForLaanTilSelskap, - OppjustertTilleggTilSkattepliktigAksjegevinst, - OppjustertTilleggTilSkattepliktigUtbytteFraAksjeINOKUSIkkeRegistrertIVerdipapirsentralen, - OppjustertTilleggTilSkattepliktigUtbytteFraAksjeIkkeRegistrertIVerdipapirsentralen, - OppjustertTilleggTilSkattepliktigUtbytteFraAksjeOgVerdipapirfondAksjedel, - OppjustertTilleggTilSkattepliktigUtbytteFraAksjerRegistrertIVerdipapirsentralen, - OppjustertTilleggTilSkattepliktigUtbytteFraVerdipapirfondsandel, - OppjustertTilleggTilSkattepliktigUtbytteFraVerdipapirfondsandelTilBarn, - OppjustertTilleggTilTapVedRealisajonAvOgUttakFraAksjedelIFondskonto, - OppjustertTilleggTilTapVedRealisasjonAvAksje, - OppjustertTilleggTilTapVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, - OppjustertTilleggTilTapVedRealisasjonAvAksjesparekonto, - OppjustertTilleggTilTapVedRealisasjonAvAndelIAksjedelIVerdipapirfond, - OppjustertTilleggTilTapVedRealisasjonAvOgUttakFraAksjedelIFondskonto, - OppjustertTilleggTilTapVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, - OppjustertTilleggTilTapVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, - OppjustertTilleggTilTapVedSalgAvAndelINOKUS, - OppjustertTilleggTilUtbytteFraAksje, - OppjustertTilleggTilUtbytteFraAksjesparekonto, - OppjustertTilleggTilUtbytteFraVerdipapirfond, - OpptjenteRenterFraPrivatUtestaaendeFordring, - OpptjenteRenterFraUtestaaendeFordring, - OvergangsstoenadTilEnsligForelder, - OverskuddAvEnkeltpersonforetakInnenAnnenNaeringUtenTrygdeavgiftsplikt, - OverskuddAvEnkeltpersonforetakInnenJordbrukGartneriPelsdyrMv, - OverskuddAvEnkeltpersonforetakInnenReindrift, - OverskuddAvEnkeltpersonforetakInnenSkiferproduksjon, - OverskuddAvEnkeltpersonforetakInnenSkogbruk, - OverskuddAvSDF, - OverskuddAvUtgiftsgodtgjoerelseVedSmusstillegg, - OverskuddFraNaeringsinntekt, - PaaloepteRenterFraAnnenGjeld, - PaaloepteRenterFraInkassoselskap, - PaaloepteRenterFraPrivatGjeld, - PensjonFraUtlandetSkattefriINorge, - PensjonFraUtlandetSkattepliktigINorge, - Pensjonsinnbetaling, - PensjonsinntektFritattForSkattEtterSkatteavtale, - PensjonsinntektIEOESTilsvarendeAlderspensjonEllerAFP, - PensjonsinntektOmfattetAvLoennstrekkordningen, - PersoninntektFraKompensasjonsytelseUtbetaltAvNavInnenAnnenNaering, - PersoninntektFraKompensasjonsytelseUtbetaltAvNavInnenBarnepassIBarnepasserensHjem, - PersoninntektFraKompensasjonsytelseUtbetaltAvNavInnenFiskeOgFangst, - PersoninntektFraSDFInnenAnnenNaering, - PersoninntektFraSDFInnenFiskeEllerBarnepassIBarnepasserensHjem, - PersoninntektFraSkattefriLottMedTrygdeavgiftspliktForUtenlandskFisker, - PositivPersoninntektFraEnkeltpersonforetakPaaSvalbard, - PremieTilEgenTilleggstrygdForNaeringsdrivende, - Premiefond, - PremiefondIndividuellPensjonsavtale, - PremiefondLivsforsikring, - PrivatGjeldsbeloep, - Reisefradrag, - RenteinntektAvAnnetFinansprodukt, - RenteinntektAvLivsforsikring, - RenteinntektAvObligasjon, - RenteinntektAvObligasjonVerdipapirfondRentedelMv, - RenteinntektAvObligasjonVerdipapirfondRentedelMvIUtlandet, - RenteinntektAvSkadeforsikring, - RenteinntektAvVerdipapirfondsandel, - RenteinntektMedEkstrabeskatningForLaanTilSelskap, - ReturAvPremieFraIndividuellPensjonssparing, - ReturprovisjonKnyttetTilAksjesparekonto, - ReturprovisjonKnyttetTilFondskonto, - ReturprovisjonKnyttetTilVerdipapirfond, - SaerfradragForEnsligForsoerger, - SaerfradragOverfoertFraBarn, - SaerfradragOverfoertFraEktefelle, - SaerfradragOverfoertTilEktefelle, - SaerfradragOverfoertTilForelder, - SaerskiltFradragForFiskereOgFangstfolk, - SaerskiltFradragForSjoefolk, - SaerskiltInntektsfradragIBarnsInntekt, - SamledeAndreOpptjenteRenter, - SamledeAndrePaaloepteRenter, - SamledeOpptjenteRenterIInnenlandskeBanker, - SamledeOpptjenteRenterIUtenlandskeBanker, - SamledeOpptjenteRenterIUtlandet, - SamledePaaloepteRenter, - SamledePaaloepteRenterPaaGjeldIInnenlandskeBanker, - SamledePaaloepteRenterPaaGjeldIUtlandet, - SamledeUfoererenterOgLivrenter, - SamledeUnderholdsbidrag, - SamletAndelAvFellesgjeldIBoligselskapEllerBoligsameie, - SamletAndelAvFradragsberettigetFelleskostnadForBoligselskapEllerBoligsameie, - SamletAndelAvInntektIBoligselskapEllerBoligsameie, - SamletAnnenGjeld, - SamletAnnenInntektForForskudd, - SamletAnnenPensjonMedTrekkpliktEksklusiveEktefelletillegg, - SamletAnnenPensjonUtenTrekkplikt, - SamletAnnenRenteinntekt, - SamletAvkastningAvKapitalforsikringsavtale, - SamletAvtalefestetPensjon, - SamletBarnepensjonOgLivrente, - SamletBarnepensjonOgLivrenteTilBarn, - SamletFormuesverdiAvPrivatUtestaaendeFordring, - SamletFormuesverdiAvUtestaaendeFordring, - SamletFormuesverdiForAndelAnnenFormueIBoligselskapEllerBoligsameie, - SamletFormuesverdiForAndelerIRentedelAvVerdipapirfond, - SamletFormuesverdiForAnnenFastEiendom, - SamletFormuesverdiForFastEiendomIUtlandet, - SamletFormuesverdiForOevrigFormue, - SamletFormuesverdiForOevrigFormueIUtlandet, - SamletFormuesverdiForSekundaerbolig, - SamletFormuesverdiForSelveidFritidseiendomEllerAndelIFritidsboligselskap, - SamletFradragsberettigetKostnadTilknyttetArbeidMv, - SamletFradragsberettigetUnderskuddVedUtleieAvFastEiendom, - SamletFremfoerbartUnderskuddFraTidligereAar, - SamletGevinstVedRealisasjonAvAndreFinansprodukter, - SamletGevinstVedRealisasjonAvVerdipapirfondsandelKnyttetTilRentedel, - SamletGjeld, - SamletGjenkjoepsverdiForLivsforsikring, - SamletGrunnlagForInntektsskattTilKommuneOgFylkeskommuneStatsskattOgFellesskatt, - SamletInnenlandskGjeld, - SamletInnskuddIInnenlandskeBanker, - SamletInntektSomGirRettTilSaerskiltFradragForSjoefolk, - SamletLoennsinntektMedTrygdeavgiftspliktOgMedTrekkplikt, - SamletLoennsinntektUtenTrygdeavgiftspliktOgMedTrekkplikt, - SamletLoennsinntektUtenTrygdeavgiftspliktOgUtenTrekkplikt, - SamletMerkostnadVedArbeidsoppholdUtenforHjem, - SamletOverskuddAvEnkeltpersonforetakInnenAnnenNaering, - SamletOverskuddAvEnkeltpersonforetakInnenFamiliebarnehageEllerDagmammaIEgetHjem, - SamletOverskuddAvEnkeltpersonforetakInnenFiskeOgFangst, - SamletOverskuddAvSDFInnenAnnenNaering, - SamletOverskuddAvSDFInnenFiskeEllerFamiliebarnehage, - SamletOverskuddPaaUtgiftsgodtgjoerelse, - SamletPensjonFraFolketrygden, - SamletPensjonsinnbetalingTilIndividuellPensjonsordning, - SamletPersoninntektFraEnkeltpersonforetakInnenFamiliebarnehageEllerDagmammaIEgetHjem, - SamletPersoninntektFraEnkeltpersonforetakInnenFiskeOgFangst, - SamletPersoninntektFraEnkeltpersonforetakInnenJordbrukReindriftSkiferproduksjonOgAnnenNaering, - SamletPremiefond, - SamletSaerfradrag, - SamletSaerfradragForStoreSykdomsutgifter, - SamletSaerfradragForUfoerhetIhtOvergangsregel, - SamletSaerskiltFradragForJordbrukReindriftOgSkiferproduksjon, - SamletSkattefriDelAvFormue, - SamletSkattepliktigGevinstVedRealisasjonAvObligasjonEllerVerdipapirfondsandel, - SamletSkattepliktigOverskuddFraUtleieAvFastEiendom, - SamletSkattepliktigOverskuddFraUtleieAvFastEiendomIUtlandet, - SamletTapVedRealisasjonAvVerdipapirfondsandelKnyttetTilRentedel, - SamletUfoeretrygdFraFolketrygdenEksklusiveEktefelletillegg, - SamletUfoereytelseFraAndreEnnFolketrygden, - SamletUnderskuddAvSDF, - SamletUnderskuddAvSDFPaaSvalbard, - SamletUnderskuddINaeringsvirksomhet, - SamletUnderskuddINaeringsvirksomhetPaaSvalbard, - SamletUtgiftsgodtgjoerelseMedTrekkplikt, - SkattefradragForFormuesskattBetaltIUtlandet, - SkattefriLoennsinntektMedTrygdeavgiftspliktOgMedTrekkplikt, - SkattepliktigAksjegevinst, - SkattepliktigAvkastningEllerKundeutbytte, - SkattepliktigEtterloennOgEtterpensjon, - SkattepliktigUtbytteFraAksjeINOKUSIkkeRegistrertIVerdipapirsentralen, - SkattepliktigUtbytteFraAksjeIkkeRegistrertIVerdipapirsentralen, - SkattepliktigUtbytteFraAksjeOgVerdipapirfondAksjedel, - SkattepliktigUtbytteFraAksjerRegistrertIVerdipapirsentralen, - SkattepliktigUtbytteFraVerdipapirfondsandel, - SkattepliktigUtbytteFraVerdipapirfondsandelTilBarn, - Skjermingsfradrag, - SkjermingstilleggTilAlderspensjon, - SkyldigRestskatt, - SkyldigUnderholdsbidrag, - Slitertillegg, - Standardfradrag, - StyrehonorarFraNorskSelskapTilSkattepliktigBosattIUtlandet, - SumFradragIAlminneligInntekt, - SumGjeldsreduksjon, - SumInntekterIAlminneligInntektFoerFordelingsfradrag, - SumMinstefradrag, - SumVerdsettingsrabatt, - SupplerendeStoenad, - SupplerendeStoenadTilUfoerFlyktning, - TapOgAnnenKostnadFraVirtuellEiendel, - TapValutalaan, - TapVedRealisajonAvOgUttakFraAksjedelIFondskonto, - TapVedRealisasjonAvAksje, - TapVedRealisasjonAvAksjeOgVerdipapirfondAksjedel, - TapVedRealisasjonAvAksjesparekonto, - TapVedRealisasjonAvAndelIAksjedelIVerdipapirfond, - TapVedRealisasjonAvAndelIRentedelIVerdipapirfond, - TapVedRealisasjonAvAnnetFinansprodukt, - TapVedRealisasjonAvObligasjonVerdipapirfondRentedelMv, - TapVedRealisasjonAvObligasjoner, - TapVedRealisasjonAvOgUttakFraAksjedelIFondskonto, - TapVedRealisasjonAvOgUttakFraRentedelIFondskonto, - TapVedRealisasjonAvVerdipapirfondsandelIKombifondKnyttetTilAksjedel, - TapVedRealisasjonAvVerdipapirfondsandelKnyttetTilAksjedel, - TapVedRealisasjonAvVirtuellValuta, - TapVedSalgAvAndelINOKUS, - UfoererenterOgLivrenterUtenforArbeidsforhold, - UfoeretrygdFoerAlderspensjon, - UfoeretrygdOmfattetAvLoennstrekkordningen, - UfoereytelseFraIPAOgIPS, - UfoereytelseFraUtlandet, - UnderholdsbidragFraTidligereEktefelle, - UnderholdsbidragTilGode, - UnderskuddAvEnkeltpersonforetakFordeltFraEktefelle, - UnderskuddAvEnkeltpersonforetakPaaSvalbard, - UnderskuddFraSDF, - UnderskuddOverfoertFraBarnOgFordelt, - UnderskuddOverfoertTilForeldre, - UnderskuddVedUtleieMvAvFastEiendomUtenforNaering, - UtbetalingFraAvtaleOmSkattefavorisertIndividuellSparingTilPensjonTegnetFomNov2017, - UtbetalingFraSkadeforsikring, - UtbytteFraAksje, - UtbytteFraAksjesparekonto, - UtbytteFraVerdipapirfond, - UtgiftVedRefinansieringAvLaan, - UtgifterTilPassOgStellAvHjemmevaerendeBarn, - VerdiFoerVerdsettingsrabattForAksje, - VerdiFoerVerdsettingsrabattForAksjeIUtlandet, - VerdiFoerVerdsettingsrabattForAksjeIVPS, - VerdiFoerVerdsettingsrabattForAksjeIkkeIVPS, - VerdiFoerVerdsettingsrabattForAksjeOgAksjefondIFondskonto, - VerdiFoerVerdsettingsrabattForAksjedelIAksjesparekonto, - VerdiFoerVerdsettingsrabattForAndelIAksjedelIVerdipapirfond, - VerdiFoerVerdsettingsrabattForAndelIFellesNettoformueISDF, - VerdiFoerVerdsettingsrabattForAndelINOKUS, - VerdiFoerVerdsettingsrabattForAnnenFormueFraDriftsmidlerAndelISDFMvGenerell, - VerdiFoerVerdsettingsrabattForAnnenFormueInnenforInntektsgivendeAktivitet, - VerdiFoerVerdsettingsrabattForBilerMaskinerOgInventar, - VerdiFoerVerdsettingsrabattForFormuesobjekterINaeringOmfattetAvVerdsettingsrabatt, - VerdiFoerVerdsettingsrabattForInventarLoesoereVedUtleie, - VerdiFoerVerdsettingsrabattForKapitalisertFesteavgift, - VerdiFoerVerdsettingsrabattForRettigheterKnyttetTilSkogUtmark, - VerdiFoerVerdsettingsrabattForSkipFiskeOgFangstfartoey, - VerdiFoerVerdsettingsrabattForVerdipapirfondsandel, - VerdiFoerVerdsettingsrabattForVerdipapirfondsandelTilBarn, - VerdsettingsrabattForAksje, - VerdsettingsrabattForAksjeIUtlandet, - VerdsettingsrabattForAksjeIVPS, - VerdsettingsrabattForAksjeIkkeIVPS, - VerdsettingsrabattForAksjeOgAksjefondIFondskonto, - VerdsettingsrabattForAksjedelIAksjesparekonto, - VerdsettingsrabattForAndelIAksjedelIVerdipapirfond, - VerdsettingsrabattForAndelIFellesNettoformueISDF, - VerdsettingsrabattForAndelINOKUS, - VerdsettingsrabattForAnnenFormueInnenforInntektsgivendeAktivitet, - VerdsettingsrabattForBilerMaskinerOgInventar, - VerdsettingsrabattForFormuesobjekterINaeringOmfattetAvVerdsettingsrabatt, - VerdsettingsrabattForInventarLoesoereVedUtleie, - VerdsettingsrabattForKapitalisertFesteavgift, - VerdsettingsrabattForRettigheterKnyttetTilSkogUtmark, - VerdsettingsrabattForSkipFiskeOgFangstfartoey, - VerdsettingsrabattForVerdipapirfondsandel, - VerdsettingsrabattForVerdipapirfondsandelTilBarn -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java deleted file mode 100644 index 38799d2acf4..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorOversiktResponse.java +++ /dev/null @@ -1,123 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.http.HttpStatus; - -import java.util.List; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class TenorOversiktResponse { - - private HttpStatus status; - private Data data; - private String query; - private String error; - - @SuppressWarnings("java:S115") - public enum TenorRelasjon { - Arbeidsforhold, - BeregnetSkatt, - BrregErFr, - Freg, - Inntekt, - TestinnsendingSkattPerson, - SamletReskontroinnsyn, - Skattemelding, - Skatteplikt, - SpesifisertSummertSkattegrunnlag, - SummertSkattegrunnlag, - Tilleggsskatt, - Tjenestepensjonsavtale - } - - @lombok.Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class Rollegruppe { - private Type type; - private List fritekst; - private List roller; - } - - @lombok.Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class Data { - - private Integer treff; - private Integer rader; - private Integer offset; - private Integer nesteSide; - private Integer seed; - private List personer; - } - - @lombok.Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class Person { - - private String id; - private String fornavn; - private String etternavn; - private List tenorRelasjoner; - private Boolean iBruk; - } - - public TenorOversiktResponse copy() { - - return TenorOversiktResponse.builder() - .status(this.getStatus()) - .query(this.getQuery()) - .data(Data.builder() - .treff(this.data.getTreff()) - .rader(this.data.getRader()) - .offset(this.data.getOffset()) - .nesteSide(this.data.getNesteSide()) - .seed(this.data.getSeed()) - .personer(this.data.getPersoner()) - .build()) - .error(this.getError()) - .build(); - } - - @lombok.Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class Type { - private String kode; - private String beskrivelse; - } - - @lombok.Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class Virksomhet { - private String organisasjonsnummer; - } - - @lombok.Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class Rolle { - private Type type; - private Person person; - private Virksomhet virksomhet; - private Object valgtAv; - private String fratraadt; - private List fritekst; - private int rekkefolge; - } -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java deleted file mode 100644 index c2b024ee17c..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRawResponse.java +++ /dev/null @@ -1,147 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; - -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.ArrayList; -import java.util.List; - -import static java.util.Objects.isNull; - -@Data -@NoArgsConstructor -public class TenorRawResponse { - - private Integer treff; - private Integer rader; - private Integer offset; - private Integer nesteSide; - private Integer seed; - private List dokumentListe; - - public List getDokumentListe() { - - if (isNull(dokumentListe)) { - dokumentListe = new ArrayList<>(); - } - return dokumentListe; - } - - @Data - @NoArgsConstructor - public static class Dokument { - private String kommunenr; - private String id; - private String arbeidsforhold; - } - - @Data - @NoArgsConstructor - public static class TenorRelasjoner { - - private List arbeidsforhold; - private List beregnetSkatt; - private List brregErFr; - private List freg; - private List inntekt; - private List samletReskontroinnsyn; - private List skattemelding; - private List skatteplikt; - private List spesifisertSummertSkattegrunnlag; - private List summertSkattegrunnlag; - private List testinnsendingSkattPerson; - private List tilleggsskatt; - private List tjenestepensjonsavtale; - } - - @Data - @NoArgsConstructor - public static class BrregErFr { - - private String tenorRelasjonsnavn; - } - - @Data - @NoArgsConstructor - public static class Skattemelding { - - private String tenorRelasjonsnavn; - } - - @Data - @NoArgsConstructor - public static class Skatteplikt { - - private String tenorRelasjonsnavn; - } - - @Data - @NoArgsConstructor - public static class Inntekt { - - private String tenorRelasjonsnavn; - } - - @Data - @NoArgsConstructor - public static class BeregnetSkatt { - - private String tenorRelasjonsnavn; - } - - @Data - @NoArgsConstructor - public static class SummertSkattegrunnlag { - - private String tenorRelasjonsnavn; - } - - @Data - @NoArgsConstructor - public static class Freg { - - private String tenorRelasjonsnavn; - } - - @Data - @NoArgsConstructor - public static class SpesifisertSummertSkattegrunnlag { - - private String tenorRelasjonsnavn; - } - - @Data - @NoArgsConstructor - public static class Tjenestepensjonsavtale { - - private String tenorRelasjonsnavn; - } - - @Data - @NoArgsConstructor - public static class Tilleggsskatt { - - private String tenorRelasjonsnavn; - } - - @Data - @NoArgsConstructor - public static class Arbeidsforhold { - - private String tenorRelasjonsnavn; - } - - @Data - @NoArgsConstructor - public static class TestinnsendingSkattPerson { - - private String tenorRelasjonsnavn; - } - - @Data - @NoArgsConstructor - public static class SamletReskontroinnsyn { - - private String tenorRelasjonsnavn; - } -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java deleted file mode 100644 index e0554e5529a..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorRequest.java +++ /dev/null @@ -1,357 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigInteger; -import java.time.LocalDate; -import java.time.YearMonth; -import java.util.ArrayList; -import java.util.List; - -import static java.util.Objects.isNull; - -@Data -@NoArgsConstructor -@SuppressWarnings("java:S115") -public class TenorRequest { - - public enum IdentifikatorType {Foedselsnummer, DNummer, DNummerOgFoedselsnr} - - public enum Kjoenn {Mann, Kvinne} - - public enum Rolle {DagligLeder} - - public enum Personstatus {Bosatt, Doed, Forsvunnet, Foedselsregistrert, IkkeBosatt, Inaktiv, Midlertidig, Opphoert, Utflyttet} - - public enum Sivilstand {EnkeEllerEnkemann, Gift, GjenlevendePartner, RegistrertPartner, Separert, SeparertPartner, Skilt, SkiltPartner, Ugift, Uoppgitt} - - public enum UtenlandskPersonIdentifikasjon {UtenlandskIdentifikasjonsnummer, TaxIdentificationNumber, SocialSecurityNumber, UtlendingsmyndighetenesIdentifikasjonsnummer} - - public enum IdentitetsgrunnlagStatus {IkkeKontrollert, IngenStatus, Kontrollert} - - public enum Adressebeskyttelse {Fortrolig, StrengtFortrolig} - - public enum AdresseGradering {Ugradert, Klientadresse, Fortrolig} - - public enum Relasjon {Barn, Far, Medmor, Mor, Partner} - - public enum Skattemeldingstype {KunUtkast, UtkastOgFastsatt} - - public enum Inntektstype {Loennsinntekt, Naeringsinntekt, PensjonEllerTrygd, YtelseFraOffentlige} - - public enum AOrdningBeskrivelse { - Alderspensjon, AlderspensjonSkjermingstillegg, AndreBeskrivelser, - Arbeidsavklaringspenger, AvtalefestetPensjon, Bil, Bonus, DagpengerVedArbeidsloeshet, Ektefelletillegg, - ElektroniskKommunikasjon, Fagforeningskontingent, FastBilgodtgjoerelse, Fastloenn, FastTillegg, Feriepenger, - Foreldrepenger, IpaEllerIpsPeriodiskeYtelser, Kvalifiseringsstoenad, NyAvtalefestetPensjonPrivatSektor, - PensjonOgLivrenterIArbeidsforhold, ReiseKostMedOvernattingPaaHybelMedKokEllerPrivat, - ReiseKostMedOvernattingPaaHybelUtenKokEllerPensjonatEllerBrakke, Sykepenger, Timeloenn, Ufoeretrygd - } - - public enum Forskuddstrekk { - OrdinaertForskuddstrekk, Barnepensjon, KildeskattPaaPensjon, Svalbard, - JanMayenOgBilandene, BetaltTrygdeavgiftTilJanMayen - } - - public enum Skattepliktstype {SkattepliktTilNorge, SkattepliktTilSvalbard} - - public enum SaerskiltSkatteplikt { - KildeskattepliktPaaLoenn, KildeskattepliktPaaPensjon, - SkattepliktAvNaeringsdriftEiendomMv, SkattepliktEtterPetroleumsskatteloven, - SkattepliktPaaLoennFraDenNorskeStatOpptjentIUtlandet, SkattepliktSomSjoemann, - SkattepliktSomUtenrikstjenestemann, SkattepliktVedUtenriksoppholdINorskStatstjenesteEllerNato - } - - public enum TilleggsskattType { - FradragForTvangsmulkt, SkjerpetTilleggsskattFraUriktigeOpplysninger, TilleggsskattFraUriktigeOpplysninger, - TilleggsskattFraManglendeInnlevering, SkjerpetTilleggsskattFraManglendeInnlevering - } - - public enum Arbeidsforholdstype { - OrdinaertArbeidsforhold, MaritimtArbeidsforhold, FrilanserOppdragstakerHonorarPersonerMm - } - - public enum Oppgjoerstype {Fastland, Svalbard, KildeskattPaaLoenn} - - public enum Stadietype {Utkast, Fastsatt, Oppgjoer} - - @Schema(description = "Personidentifikator, fødselsnummer eller d-nummer") - private String identifikator; - private IdentifikatorType identifikatorType; - private DatoIntervall foedselsdato; - private DatoIntervall doedsdato; - private Kjoenn kjoenn; - private Personstatus personstatus; - private Sivilstand sivilstand; - private List utenlandskPersonIdentifikasjon; - private IdentitetsgrunnlagStatus identitetsgrunnlagStatus; - private Adressebeskyttelse adressebeskyttelse; - private Boolean harLegitimasjonsdokument; - private Boolean harFalskIdentitet; - private Boolean harNorskStatsborgerskap; - private Boolean harFlereStatsborgerskap; - private Navn navn; - private Adresser adresser; - private Relasjoner relasjoner; - private Hendelser hendelser; - - private List roller; - private Tjenestepensjonsavtale tjenestepensjonsavtale; - private Skattemelding skattemelding; - private Inntekt inntekt; - private Skatteplikt skatteplikt; - private Tilleggsskatt tilleggsskatt; - private Arbeidsforhold arbeidsforhold; - private BeregnetSkatt beregnetSkatt; - private TestinnsendingSkattPerson testinnsendingSkattPerson; - private SamletReskontroInnsyn samletReskontroInnsyn; - private SummertSkattegrunnlag summertSkattegrunnlag; - private SpesisfisertSummertSkattegrunnlag spesifisertSummertSkattegrunnlag; - - public List getUtenlandskPersonIdentifikasjon() { - - if (isNull(utenlandskPersonIdentifikasjon)) { - utenlandskPersonIdentifikasjon = new ArrayList<>(); - } - return utenlandskPersonIdentifikasjon; - } - - public List getRoller() { - - if (isNull(roller)) { - roller = new ArrayList<>(); - } - return roller; - } - - @Data - @NoArgsConstructor - public static class DatoIntervall { - - @Schema(type = "string", format = "YYYY-MM-DD", example = "2018-07-01") - private LocalDate fraOgMed; - @Schema(type = "string", format = "YYYY-MM-DD", example = "2020-07-01") - private LocalDate tilOgMed; - } - - @Data - @NoArgsConstructor - public static class Intervall { - - private BigInteger fraOgMed; - private BigInteger tilOgMed; - } - - @Data - @NoArgsConstructor - public static class Navn { - - private Intervall navnLengde; - private Boolean harFlereFornavn; - private Boolean harMellomnavn; - private Boolean harNavnSpesialtegn; - } - - @Data - @NoArgsConstructor - public static class Adresser { - - @Schema(description = "Adressesøk, fritekst") - private AdresseGradering adresseGradering; - private BigInteger kommunenummer; - private Boolean harBostedsadresse; - private Boolean harOppholdAnnetSted; - private Boolean harPostadresseNorge; - private Boolean harPostadresseUtland; - private Boolean harKontaktadresseDoedsbo; - private Boolean harAdresseSpesialtegn; - } - - @Data - @NoArgsConstructor - public static class Relasjoner { - - private Relasjon relasjon; - private Intervall antallBarn; - private Boolean harForeldreAnsvar; - private Intervall relasjonMedFoedselsaar; - private Boolean harDeltBosted; - private Boolean harVergemaalEllerFremtidsfullmakt; - private Boolean borMedMor; - private Boolean borMedFar; - private Boolean borMedMedmor; - private Boolean foreldreHarSammeAdresse; - } - - @Data - @NoArgsConstructor - public static class Hendelser { - - private Hendelse hendelse; - private Hendelse sisteHendelse; - } - - @Data - @NoArgsConstructor - public static class Tjenestepensjonsavtale { - - @Schema(description = "Pensjonsinnretningen organisasjonsnummer, 9 siffre") - private String pensjonsinnretningOrgnr; - @Schema(type = "string", format = "YYYY-MM", example = "2020-07") - private YearMonth periode; - } - - @Data - @NoArgsConstructor - public static class Skattemelding { - - @Schema(description = "Inntektsår, 4 siffre, årene 2018, 2019, 2020, 2021, 2022 ... osv opptil i forfjor") - private BigInteger inntektsaar; - private Skattemeldingstype skattemeldingstype; - } - - @Data - @NoArgsConstructor - public static class Inntekt { - - private MonthInterval periode; - private BigInteger opplysningspliktig; - private List inntektstyper; - private AOrdningBeskrivelse beskrivelse; - private List forskuddstrekk; - private Boolean harHistorikk; - - public List getInntektstyper() { - - if (isNull(inntektstyper)) { - inntektstyper = new ArrayList<>(); - } - return inntektstyper; - } - - public List getForskuddstrekk() { - - if (isNull(forskuddstrekk)) { - forskuddstrekk = new ArrayList<>(); - } - return forskuddstrekk; - } - } - - @Data - @NoArgsConstructor - public static class MonthInterval { - - @Schema(type = "string", format = "YYYY-MM", example = "2020-07") - private YearMonth fraOgMed; - @Schema(type = "string", format = "YYYY-MM", example = "2020-07") - private YearMonth tilOgMed; - } - - @Data - @NoArgsConstructor - public static class Skatteplikt { - - @Schema(description = "Inntektsår, 4 siffre, årene 2019, 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") - private BigInteger inntektsaar; - private List skattepliktstyper; - private SaerskiltSkatteplikt saerskiltSkatteplikt; - - public List getSkattepliktstyper() { - - if (isNull(skattepliktstyper)) { - skattepliktstyper = new ArrayList<>(); - } - return skattepliktstyper; - } - } - - @Data - @NoArgsConstructor - public static class Tilleggsskatt { - - private BigInteger inntektsaar; - private List tilleggsskattTyper; - - public List getTilleggsskattTyper() { - - if (isNull(tilleggsskattTyper)) { - tilleggsskattTyper = new ArrayList<>(); - } - return tilleggsskattTyper; - } - } - - @Data - @NoArgsConstructor - public static class Arbeidsforhold { - - private DatoIntervall startDatoPeriode; - private DatoIntervall sluttDatoPeriode; - private Boolean harPermisjoner; - private Boolean harPermitteringer; - private Boolean harArbeidsgiver; - private Boolean harTimerMedTimeloenn; - private Boolean harUtenlandsopphold; - private Boolean harHistorikk; - private Arbeidsforholdstype arbeidsforholdstype; - } - - @Data - @NoArgsConstructor - public static class BeregnetSkatt { - - @Schema(description = "Inntektsår, 4 siffre, årene 2018, 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") - private BigInteger inntektsaar; - private Oppgjoerstype oppgjoerstype; - private Boolean pensjonsgivendeInntekt; - } - - @Data - @NoArgsConstructor - @Schema(description = "Opplysninger fra skatteetatens innsendingsmiljoe") - public static class TestinnsendingSkattPerson { - - @Schema(description = "Inntektsår, 4 siffre, årene 2020, 2021, 2022, 2023 ... osv opptil i fjor") - private BigInteger inntektsaar; - @Schema(description = "Skattemelding utkast, merk at false indikerer har ikke skatteMeldingUtkast") - private Boolean harSkattemeldingUtkast; - @Schema(description = "Skattemelding fastsatt, merk at false indikerer har ikke skatteMeldingFastsatt") - private Boolean harSkattemeldingFastsatt; - } - - @Data - @NoArgsConstructor - public static class SamletReskontroInnsyn { - - private Boolean harKrav; - private Boolean harInnbetaling; - } - - @Data - @NoArgsConstructor - public static class SummertSkattegrunnlag { - - @Schema(description = "Inntektsår, 4 siffre, årene 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") - private BigInteger inntektsaar; - private Stadietype stadietype; - private Oppgjoerstype oppgjoerstype; - private TekniskNavn tekniskNavn; - private Intervall alminneligInntektFoerSaerfradragBeloep; - } - - @Data - @NoArgsConstructor - public static class SpesisfisertSummertSkattegrunnlag { - - @Schema(description = "Inntektsår, 4 siffre, årene 2019, 2020, 2021, 2022, 2023 ... osv opptil i fjor") - private BigInteger inntektsaar; - private Stadietype stadietype; - private Oppgjoerstype oppgjoerstype; - private TekniskNavn tekniskNavn; - private Spesifiseringstype spesifiseringstype; - private Intervall alminneligInntektFoerSaerfradragBeloep; - } -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java deleted file mode 100644 index c5affb86304..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/tenor/TenorResponse.java +++ /dev/null @@ -1,20 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor; - -import com.fasterxml.jackson.databind.JsonNode; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.http.HttpStatus; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class TenorResponse { - - private HttpStatus status; - private JsonNode data; - private String query; - private String error; -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Ansettelsesperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Ansettelsesperiode.java deleted file mode 100644 index c1a671ccf19..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Ansettelsesperiode.java +++ /dev/null @@ -1,41 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonPropertyOrder({ - "periode", - "sluttaarsak", - "varslingskode", - "bruksperiode", - "sporingsinformasjon" -}) -@Schema(description = "Informasjon knyttet til ansettelsesperioden") -public class Ansettelsesperiode { - - private Periode periode; - - @Schema(description = "Årsak for avsluttet ansettelsesperiode (kodeverk: Slutt%C3%A5rsakAareg)", example = "arbeidstakerHarSagtOppSelv") - private String sluttaarsak; - - @Schema(description = "Varslingskode (kodeverk: Varslingskode_5fAa-registeret) - benyttes hvis ansettelsesperiode er lukket maskinelt", example = "ERKONK") - private String varslingskode; - - private Bruksperiode bruksperiode; - - private Sporingsinformasjon sporingsinformasjon; - - @Override - public String toString() { - return ("Ansettelsesforhold: [" + periode.toString() + ", " + sluttaarsak + ", " + varslingskode); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java deleted file mode 100644 index a9875112b1d..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/AntallTimerForTimeloennet.java +++ /dev/null @@ -1,53 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; - -import java.time.YearMonth; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonPropertyOrder({ - "periode", - "antallTimer", - "rapporteringsperiode", - "sporingsinformasjon" -}) -@Schema(description = "Informasjon om antall timer med timelønn") -public class AntallTimerForTimeloennet { - - private Periode periode; - - @Schema(description = "Antall timer", example = "37.5") - private Double antallTimer; - - private YearMonth rapporteringsperiode; - - private Sporingsinformasjon sporingsinformasjon; - - @JsonIgnore - public YearMonth getRapporteringsperiode() { - return rapporteringsperiode; - } - - @JsonProperty("rapporteringsperiode") - @Schema(description = "Rapporteringsperiode for antall timer med timelønn, format (ISO-8601): yyyy-MM", example = "2018-05") - public String getRapporteringsperiodeAsString() { - return JavaTimeUtil.toString(rapporteringsperiode); - } - - @JsonProperty("rapporteringsperiode") - public void setRapporteringsperiodeAsString(String rapporteringsperiode) { - this.rapporteringsperiode = JavaTimeUtil.toYearMonth(rapporteringsperiode); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java deleted file mode 100644 index 3e7e9020f4d..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtale.java +++ /dev/null @@ -1,99 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.*; -import io.swagger.v3.oas.annotations.media.DiscriminatorMapping; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import lombok.experimental.SuperBuilder; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; - -import java.time.LocalDate; - -@Getter -@Setter -@NoArgsConstructor -@SuperBuilder -@EqualsAndHashCode -@ToString -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - property = "type" -) -@JsonSubTypes({ - @JsonSubTypes.Type(value = OrdinaerArbeidsavtale.class, name = OrdinaerArbeidsavtale.TYPE), - @JsonSubTypes.Type(value = MaritimArbeidsavtale.class, name = MaritimArbeidsavtale.TYPE), - @JsonSubTypes.Type(value = ForenkletOppgjoersordningArbeidsavtale.class, name = ForenkletOppgjoersordningArbeidsavtale.TYPE), - @JsonSubTypes.Type(value = FrilanserArbeidsavtale.class, name = FrilanserArbeidsavtale.TYPE) -}) -@Schema(description = "Informasjon om arbeidsavtale/ansettelsesdetaljer", - discriminatorProperty = "type", - discriminatorMapping = { - @DiscriminatorMapping(value = OrdinaerArbeidsavtale.TYPE, schema = OrdinaerArbeidsavtale.class), - @DiscriminatorMapping(value = MaritimArbeidsavtale.TYPE, schema = MaritimArbeidsavtale.class), - @DiscriminatorMapping(value = ForenkletOppgjoersordningArbeidsavtale.TYPE, schema = ForenkletOppgjoersordningArbeidsavtale.class), - @DiscriminatorMapping(value = FrilanserArbeidsavtale.TYPE, schema = FrilanserArbeidsavtale.class) - } -) -public abstract class Arbeidsavtale implements Arbeidsavtaletype { - - @Schema(description = "Arbeidstidsordning (kodeverk: Arbeidstidsordninger)", example = "ikkeSkift") - private String arbeidstidsordning; - - @Schema(description = "Ansettelsesform (kodeverk: AnsettelsesformAareg)", example = "fast") - private String ansettelsesform; - - @Schema(description = "Yrke (kodeverk: Yrker)", example = "2130123") - private String yrke; - - @Schema(description = "Stillingsprosent", example = "49.5") - private Double stillingsprosent; - - @Schema(description = "Antall timer per uke", example = "37.5") - private Double antallTimerPrUke; - - @Schema(description = "Beregnet antall timer per uke", example = "37.5") - private Double beregnetAntallTimerPrUke; - - @Schema(description = "Dato for siste lønnsendring, format (ISO-8601): yyyy-MM-dd", example = "2014-07-15") - private LocalDate sistLoennsendring; - - @Schema(description = "Dato for siste stillingsendring, format (ISO-8601): yyyy-MM-dd", example = "2015-12-15") - private LocalDate sistStillingsendring; - - private Bruksperiode bruksperiode; - - private Gyldighetsperiode gyldighetsperiode; - - private Sporingsinformasjon sporingsinformasjon; - - @JsonIgnore - public LocalDate getSistLoennsendring() { - return sistLoennsendring; - } - - @JsonIgnore - public LocalDate getSistStillingsendring() { - return sistStillingsendring; - } - - @JsonProperty("sistLoennsendring") - public String getSistLoennsendringAsString() { - return JavaTimeUtil.toString(sistLoennsendring); - } - - @JsonProperty("sistLoennsendring") - public void setSistLoennsendringAsString(String sistLoennsendring) { - this.sistLoennsendring = JavaTimeUtil.toLocalDate(sistLoennsendring); - } - - @JsonProperty("sistStillingsendring") - public String getSistStillingsendringAsString() { - return JavaTimeUtil.toString(sistStillingsendring); - } - - @JsonProperty("sistStillingsendring") - public void setSistStillingsendringAsString(String sistStillingsendring) { - this.sistStillingsendring = JavaTimeUtil.toLocalDate(sistStillingsendring); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtaletype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtaletype.java deleted file mode 100644 index c9118b8d2cd..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsavtaletype.java +++ /dev/null @@ -1,9 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import io.swagger.v3.oas.annotations.media.Schema; - -public interface Arbeidsavtaletype { - - @Schema(description = "Type for arbeidsavtale", allowableValues = "Ordinaer,Maritim,Forenklet,Frilanser") - String getType(); -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java deleted file mode 100644 index 437a842904f..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforhold.java +++ /dev/null @@ -1,120 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; - -import java.time.LocalDateTime; -import java.util.List; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonPropertyOrder({ - "navArbeidsforholdId", - "arbeidsforholdId", - "arbeidstaker", - "arbeidsgiver", - "opplysningspliktig", - "type", - "ansettelsesperiode", - "arbeidsavtaler", - "permisjonPermitteringer", - "antallTimerForTimeloennet", - "utenlandsopphold", - "varsler", - "innrapportertEtterAOrdningen", - "registrert", - "sistBekreftet", - "sporingsinformasjon" -}) -@Schema(description = "Informasjon om arbeidsforhold") -@SuppressWarnings({"pmd:TooManyFields", "fb-contrib:CC_CYCLOMATIC_COMPLEXITY"}) -public class Arbeidsforhold { - - @Schema(description = "Arbeidsforhold-id i AAREG", example = "123456") - private Long navArbeidsforholdId; - - @Schema(description = "Arbeidsforhold-id fra opplysningspliktig", example = "abc-321") - private String arbeidsforholdId; - - private LocalDateTime registrert; - - private Person arbeidstaker; - - private OpplysningspliktigArbeidsgiver arbeidsgiver; - - private OpplysningspliktigArbeidsgiver opplysningspliktig; - - @Schema(description = "Arbeidsforholdtype (kodeverk: Arbeidsforholdtyper)", example = "ordinaertArbeidsforhold") - private String type; - - private Ansettelsesperiode ansettelsesperiode; - - @Schema(description = "Liste av arbeidsavtaler - gjeldende og evt. med historikk") - private List arbeidsavtaler; - - @Schema(description = "Liste av permisjoner og/eller permitteringer") - private List permisjonPermitteringer; - - @Schema(description = "Liste av antall timer med timelønn") - private List antallTimerForTimeloennet; - - @Schema(description = "Liste av utenlandsopphold") - private List utenlandsopphold; - - @Schema(description = "Liste av unike varsler for ulike entiter") - private List varsler; - - @Schema(description = "Er arbeidsforholdet innrapportert via a-ordningen?") - private Boolean innrapportertEtterAOrdningen; - - private LocalDateTime sistBekreftet; - - private Sporingsinformasjon sporingsinformasjon; - - @JsonIgnore - public LocalDateTime getRegistrert() { - return registrert; - } - - @JsonProperty("registrert") - @Schema(description = "Tidspunkt for registrering av arbeidsforhold, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-18T11:12:29") - public String getRegistrertAsString() { - return JavaTimeUtil.toString(registrert); - } - - @JsonProperty("registrert") - public void setRegistrertAsString(String registrert) { - this.registrert = JavaTimeUtil.toLocalDateTime(registrert); - } - - @JsonIgnore - public LocalDateTime getSistBekreftet() { - return sistBekreftet; - } - - @JsonProperty("sistBekreftet") - @Schema(description = "Tidspunkt for siste bekreftelse av arbeidsforhold, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:10:31") - public String getSistBekreftetAsString() { - return JavaTimeUtil.toString(sistBekreftet); - } - - @JsonProperty("sistBekreftet") - public void setSistBekreftetAsString(String sistBekreftet) { - this.sistBekreftet = JavaTimeUtil.toLocalDateTime(sistBekreftet); - } - - @Override - public String toString() { - return ("Arbeidsforhold: [" + navArbeidsforholdId + ", " + arbeidsforholdId + ", " + ansettelsesperiode + ", " + arbeidsavtaler); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java deleted file mode 100644 index e1156c8f740..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsforholdoversikt.java +++ /dev/null @@ -1,106 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.util.List; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonPropertyOrder({ - "navArbeidsforholdId", - "arbeidstaker", - "arbeidsgiver", - "opplysningspliktig", - "type", - "ansattFom", - "ansattTom", - "yrke", - "stillingsprosent", - "permisjonPermitteringsprosent", - "innrapportertEtterAOrdningen", - "sistBekreftet", - "varsler" -}) -@Schema(description = "Informasjon om arbeidsforhold (overordnet)") -@SuppressWarnings("fb-contrib:CC_CYCLOMATIC_COMPLEXITY") -public class Arbeidsforholdoversikt { - - @Schema(description = "Arbeidsforhold-id i AAREG", example = "123456") - private Long navArbeidsforholdId; - - private Person arbeidstaker; - - private OpplysningspliktigArbeidsgiver arbeidsgiver; - - private OpplysningspliktigArbeidsgiver opplysningspliktig; - - @Schema(description = "Arbeidsforholdtype (kodeverk: Arbeidsforholdtyper)", example = "ordinaertArbeidsforhold") - private String type; - - private LocalDate ansattFom; - - private LocalDate ansattTom; - - @Schema(description = "Yrke (kodeverk: Yrker)", example = "2130123") - private String yrke; - - @Schema(description = "Stillingsprosent", example = "49.5") - private Double stillingsprosent; - - @Schema(description = "Prosent for permisjon eller permittering (aggregert)", example = "50.5") - private Double permisjonPermitteringsprosent; - - @Schema(description = "Er arbeidsforholdet innrapportert via a-ordningen?") - private Boolean innrapportertEtterAOrdningen; - - private LocalDateTime sistBekreftet; - - @Schema(description = "Liste av unike varsler for ulike entiter") - private List varsler; - - @JsonIgnore - public LocalDate getAnsattFom() { - return ansattFom; - } - - @JsonProperty("ansattFom") - @Schema(description = "Fra-og-med-dato for ansettelsesperiode, format (ISO-8601): yyyy-MM-dd", example = "2014-07-01") - public String getAnsattFomAsString() { - return JavaTimeUtil.toString(ansattFom); - } - - @JsonIgnore - public LocalDate getAnsattTom() { - return ansattTom; - } - - @JsonProperty("ansattTom") - @Schema(description = "Til-og-med-dato for ansettelsesperiode, format (ISO-8601): yyyy-MM-dd", example = "2015-12-31") - public String getAnsattTomAsString() { - return JavaTimeUtil.toString(ansattTom); - } - - @JsonIgnore - public LocalDateTime getSistBekreftet() { - return sistBekreftet; - } - - @JsonProperty("sistBekreftet") - @Schema(description = "Tidspunkt for siste bekreftelse av arbeidsforhold, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:10:31") - public String getSistBekreftetAsString() { - return JavaTimeUtil.toString(sistBekreftet); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java deleted file mode 100644 index 2c45472f686..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ArbeidsgiverArbeidsforholdoversikter.java +++ /dev/null @@ -1,41 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -import java.util.List; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({ - "arbeidsforholdoversikter", - "startrad", - "antall", - "totalAntall" -}) -@Schema(description = """ - Resultatobjekt for finn-arbeidsforholdoversikter-per-arbeidsgiver - - Arbeidsforholdoversikter er filtrert grunnet tilgangskontroll hvis størrelse på liste er mindre enn (total) antall (forutsatt at antall- og/eller startrad-filter ikke er angitt)""" -) -public class ArbeidsgiverArbeidsforholdoversikter { - - @Schema(description = "Liste av arbeidsforholdoversikter") - private List arbeidsforholdoversikter; - - @Schema(description = "Nummer for første rad i resultatsett (ikke angitt hvis antall er 0)") - private Integer startrad; - - @Schema(description = "Antall arbeidsforholdoversikter i resultatsett - der det er siste resultatsett hvis antall er mindre enn forespurt antall") - private Integer antall; - - @Schema(description = "Total antall arbeidsforholdoversikter") - private Integer totalAntall; -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsgiveroversikt.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsgiveroversikt.java deleted file mode 100644 index 2ab9ca02c6e..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Arbeidsgiveroversikt.java +++ /dev/null @@ -1,31 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({ - "arbeidsgiver", - "aktiveArbeidsforhold", - "inaktiveArbeidsforhold" -}) -@Schema(description = "Informasjon knyttet til arbeidsgiver (overordnet)") -public class Arbeidsgiveroversikt { - - private OpplysningspliktigArbeidsgiver arbeidsgiver; - - @Schema(description = "Antall aktive arbeidsforhold, dvs. de som har en gjeldende ansettelsesperiode") - private Integer aktiveArbeidsforhold; - - @Schema(description = "Antall inaktive arbeidsforhold, dvs. de som har en historisk ansettelsesperiode") - private Integer inaktiveArbeidsforhold; - -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java deleted file mode 100644 index 3cdef463a8a..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Bruksperiode.java +++ /dev/null @@ -1,68 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; - -import java.time.LocalDateTime; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonPropertyOrder({ - "fom", - "tom" -}) -@Schema(description = "Inneholder informasjon om bruksperiode til objektet") -public class Bruksperiode { - - private LocalDateTime fom; - - private LocalDateTime tom; - - @JsonIgnore - public LocalDateTime getFom() { - return fom; - } - - @JsonIgnore - public LocalDateTime getTom() { - return tom; - } - - @JsonProperty("fom") - @Schema(description = "Fra-tidsstempel for bruksperiode, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2015-01-06T21:44:04.748") - public String getFomAsString() { - return JavaTimeUtil.toString(fom); - } - - @JsonProperty("fom") - public void setFomAsString(String fom) { - this.fom = JavaTimeUtil.toLocalDateTime(fom); - } - - @JsonProperty("tom") - @Schema(description = "Til-tidsstempel for bruksperiode, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2015-12-06T19:45:04") - public String getTomAsString() { - return JavaTimeUtil.toString(tom); - } - - @JsonProperty("tom") - public void setTomAsString(String tom) { - this.tom = JavaTimeUtil.toLocalDateTime(tom); - } - - @Override - @SuppressWarnings({"pmd:ConsecutiveLiteralAppends", "pmd:ConsecutiveAppendsShouldReuse", "fb-contrib:UCPM_USE_CHARACTER_PARAMETERIZED_METHOD", "pmd:AppendCharacterWithChar"}) - public String toString() { - return "Bruksperiode{" + "fom=" + getFomAsString() + ", tom=" + getTomAsString() + "}"; - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java deleted file mode 100644 index 10a2ad5848c..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/ForenkletOppgjoersordningArbeidsavtale.java +++ /dev/null @@ -1,38 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.ToString; -import lombok.experimental.SuperBuilder; - -@NoArgsConstructor -@SuperBuilder -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@JsonPropertyOrder({ - "arbeidstidsordning", - "ansettelsesform", - "yrke", - "stillingsprosent", - "antallTimerPrUke", - "beregnetAntallTimerPrUke", - "sistLoennsendring", - "sistStillingsendring", - "bruksperiode", - "gyldighetsperiode", - "sporingsinformasjon" -}) -@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for forenklet oppgjørsordning arbeidsforhold") -public class ForenkletOppgjoersordningArbeidsavtale extends Arbeidsavtale { - - public static final String TYPE = "Forenklet"; - - @Override - @JsonIgnore - public String getType() { - return TYPE; - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/FrilanserArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/FrilanserArbeidsavtale.java deleted file mode 100644 index 174eeef5c56..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/FrilanserArbeidsavtale.java +++ /dev/null @@ -1,38 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.ToString; -import lombok.experimental.SuperBuilder; - -@NoArgsConstructor -@SuperBuilder -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@JsonPropertyOrder({ - "arbeidstidsordning", - "ansettelsesform", - "yrke", - "stillingsprosent", - "antallTimerPrUke", - "beregnetAntallTimerPrUke", - "sistLoennsendring", - "sistStillingsendring", - "bruksperiode", - "gyldighetsperiode", - "sporingsinformasjon" -}) -@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for frilanser arbeidsforhold", allOf = Arbeidsavtale.class) -public class FrilanserArbeidsavtale extends Arbeidsavtale { - - public static final String TYPE = "Frilanser"; - - @Override - @JsonIgnore - public String getType() { - return TYPE; - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Gyldighetsperiode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Gyldighetsperiode.java deleted file mode 100644 index 6ae5d77453e..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Gyldighetsperiode.java +++ /dev/null @@ -1,19 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -@NoArgsConstructor -@SuperBuilder -@EqualsAndHashCode(callSuper = true) -@JsonInclude(JsonInclude.Include.NON_EMPTY) -public class Gyldighetsperiode extends Periode { - - @Override - @SuppressWarnings({"pmd:ConsecutiveLiteralAppends", "pmd:ConsecutiveAppendsShouldReuse", "fb-contrib:UCPM_USE_CHARACTER_PARAMETERIZED_METHOD", "pmd:AppendCharacterWithChar"}) - public String toString() { - return "Gyldighetsperiode{" + "fom=" + getFomAsString() + ", tom=" + getTomAsString() + "}"; - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/MaritimArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/MaritimArbeidsavtale.java deleted file mode 100644 index 003ecf4efa7..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/MaritimArbeidsavtale.java +++ /dev/null @@ -1,50 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import lombok.experimental.SuperBuilder; - -@Getter -@Setter -@NoArgsConstructor -@SuperBuilder -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@JsonPropertyOrder({ - "fartsomraade", - "skipsregister", - "fartoeystype", - "arbeidstidsordning", - "ansettelsesform", - "yrke", - "stillingsprosent", - "antallTimerPrUke", - "beregnetAntallTimerPrUke", - "sistLoennsendring", - "sistStillingsendring", - "bruksperiode", - "gyldighetsperiode", - "sporingsinformasjon" -}) -@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for maritime arbeidsforhold", allOf = Arbeidsavtale.class) -public class MaritimArbeidsavtale extends Arbeidsavtale { - - public static final String TYPE = "Maritim"; - - @Schema(description = "Fartsområde (kodeverk: Fartsomraader)", example = "utenriks") - private String fartsomraade; - - @Schema(description = "Skipsregister (kodeverk: Skipsregistre)", example = "nis") - private String skipsregister; - - @Schema(description = "Skipstype (kodeverk: Skipstyper)", example = "turist") - private String skipstype; - - @Override - @JsonIgnore - public String getType() { - return TYPE; - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiver.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiver.java deleted file mode 100644 index f4f71e186eb..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiver.java +++ /dev/null @@ -1,24 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonSubTypes; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonTypeInfo( - use = JsonTypeInfo.Id.NAME, - property = "type" -) -@JsonSubTypes({ - @JsonSubTypes.Type(value = Organisasjon.class, name = "Organisasjon"), - @JsonSubTypes.Type(value = Person.class, name = "Person") -}) -@Schema(description = "Informasjon om opplysningspliktig eller arbeidsgiver (organisasjon eller person)", oneOf = {Organisasjon.class, Person.class}) -@SuppressWarnings("squid:S1610") -public abstract class OpplysningspliktigArbeidsgiver { - - public abstract String getType(); -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiverType.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiverType.java deleted file mode 100644 index ba4206c93db..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OpplysningspliktigArbeidsgiverType.java +++ /dev/null @@ -1,6 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -public interface OpplysningspliktigArbeidsgiverType { - - String getType(); -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OrdinaerArbeidsavtale.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OrdinaerArbeidsavtale.java deleted file mode 100644 index 78a6cbc9ef3..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/OrdinaerArbeidsavtale.java +++ /dev/null @@ -1,38 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.ToString; -import lombok.experimental.SuperBuilder; - -@NoArgsConstructor -@SuperBuilder -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@JsonPropertyOrder({ - "arbeidstidsordning", - "ansettelsesform", - "yrke", - "stillingsprosent", - "antallTimerPrUke", - "beregnetAntallTimerPrUke", - "sistLoennsendring", - "sistStillingsendring", - "bruksperiode", - "gyldighetsperiode", - "sporingsinformasjon" -}) -@Schema(description = "Arbeidsavtale/ansettelsesdetaljer for ordinære arbeidsforhold", allOf = Arbeidsavtale.class) -public class OrdinaerArbeidsavtale extends Arbeidsavtale { - - public static final String TYPE = "Ordinaer"; - - @Override - @JsonIgnore - public String getType() { - return TYPE; - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Organisasjon.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Organisasjon.java deleted file mode 100644 index 466e82008e0..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Organisasjon.java +++ /dev/null @@ -1,31 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode(callSuper = true) -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonPropertyOrder({ - "type", - "organisasjonsnummer" -}) -@Schema(description = "Informasjon om organisasjon (arbeidsgiver/opplysningspliktig)") -public class Organisasjon extends OpplysningspliktigArbeidsgiver implements OpplysningspliktigArbeidsgiverType { - - @Schema(description = "Organisasjonsnummer fra Enhetsregisteret", example = "987654321") - private String organisasjonsnummer; - - @Override - @JsonIgnore - public String getType() { - return this.getClass().getSimpleName(); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java deleted file mode 100644 index 021950c0cf3..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Periode.java +++ /dev/null @@ -1,69 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import lombok.experimental.SuperBuilder; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; - -import java.time.LocalDate; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@SuperBuilder -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonPropertyOrder({ - "fom", - "tom" -}) -@Schema(description = "Inneholder informasjon om periode") -public class Periode { - - private LocalDate fom; - - private LocalDate tom; - - @JsonIgnore - public LocalDate getFom() { - return fom; - } - - @JsonIgnore - public LocalDate getTom() { - return tom; - } - - @JsonProperty("fom") - @Schema(description = "Fra-og-med-dato for periode, format (ISO-8601): yyyy-MM-dd", example = "2014-07-01") - public String getFomAsString() { - return JavaTimeUtil.toString(fom); - } - - @JsonProperty("fom") - public void setFomAsString(String fom) { - this.fom = JavaTimeUtil.toLocalDate(fom); - } - - @JsonProperty("tom") - @Schema(description = "Til-og-med-dato for periode, format (ISO-8601): yyyy-MM-dd", example = "2015-12-31") - public String getTomAsString() { - return JavaTimeUtil.toString(tom); - } - - @JsonProperty("tom") - public void setTomAsString(String tom) { - this.tom = JavaTimeUtil.toLocalDate(tom); - } - - @Override - @SuppressWarnings({"pmd:ConsecutiveLiteralAppends", "pmd:ConsecutiveAppendsShouldReuse", "fb-contrib:UCPM_USE_CHARACTER_PARAMETERIZED_METHOD", "pmd:AppendCharacterWithChar"}) - public String toString() { - return "Periode{" + "fom=" + getFomAsString() + ", tom=" + getTomAsString() + "}"; - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/PermisjonPermittering.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/PermisjonPermittering.java deleted file mode 100644 index 0e9daef3da5..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/PermisjonPermittering.java +++ /dev/null @@ -1,41 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonPropertyOrder({ - "permisjonPermitteringId", - "periode", - "prosent", - "type", - "sporingsinformasjon" -}) -@Schema(description = "Informasjon om permisjon eller permittering") -public class PermisjonPermittering { - - @Schema(description = "Id fra opplysningspliktig", example = "123-xyz") - private String permisjonPermitteringId; - - private Periode periode; - - @Schema(description = "Prosent for permisjon eller permittering", example = "50.5") - private Double prosent; - - @Schema(description = "Permisjon-/permitteringstype (kodeverk: PermisjonsOgPermitteringsBeskrivelse)", example = "permisjonMedForeldrepenger") - private String type; - - @Schema(description = "Varslingskode (kodeverk: Varslingskode_5fAa-registeret) - benyttes hvis permisjon/permittering er lukket maskinelt") - private String varslingskode; - - @Schema(description = "Informasjon om opprettelse og endring av objekt") - private Sporingsinformasjon sporingsinformasjon; -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Person.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Person.java deleted file mode 100644 index f4c5fc0927f..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Person.java +++ /dev/null @@ -1,35 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode(callSuper = true) -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonPropertyOrder({ - "type", - "offentligIdent", - "aktoerId" -}) -@Schema(description = "Informasjon om person (arbeidstaker/arbeidsgiver/opplysningspliktig)") -public class Person extends OpplysningspliktigArbeidsgiver implements Persontype { - - @Schema(description = "Gjeldende offentlig ident", example = "31126700000") - private String offentligIdent; - - @Schema(description = "Aktør-id", example = "1234567890") - private String aktoerId; - - @Override - @JsonIgnore - public String getType() { - return this.getClass().getSimpleName(); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Persontype.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Persontype.java deleted file mode 100644 index 074425fa0cf..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Persontype.java +++ /dev/null @@ -1,6 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -public interface Persontype { - - String getType(); -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/README.md b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/README.md deleted file mode 100644 index 3df8cc38724..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# /Domain.v1 - -Denne mappen inneholder alle klassene for å hente ut og parse -dokumentene av skjermaet fra [GET](https://aareg-services-q2.intern.dev.nav.no/swagger-ui/index.html#/arbeidstaker/finnArbeidsforholdPrArbeidstaker_1) -og [PUT](https://aareg-vedlikehold-q2.dev.intern.nav.no/swagger-ui/index.html#/arbeidsforhold/endreArbeidsforhold) -endepunktene til AA-reg. Klassene er en eksakt kopi av [AA-reg sin modell](https://github.com/navikt/aareg-services/tree/main/src/main/java/no/nav/aareg/services/provider/rs/api/contract/arbeidsforhold/v1) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java deleted file mode 100644 index 4e846a94dcc..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Sporingsinformasjon.java +++ /dev/null @@ -1,86 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; - -import java.time.LocalDateTime; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonPropertyOrder({ - "opprettetTidspunkt", - "opprettetAv", - "opprettetKilde", - "opprettetKildereferanse", - "endretTidspunkt", - "endretAv", - "endretKilde", - "endretKildereferanse" -}) -@Schema(description = "Informasjon om opprettelse og endring av objekt. MERK: Skal IKKE eksponeres i selvbetjeningssonen (SBS).") -public class Sporingsinformasjon { - - private LocalDateTime opprettetTidspunkt; - - @Schema(description = "Brukernavn for opprettelse", example = "srvappserver") - private String opprettetAv; - - @Schema(description = "Kilde for opprettelse", example = "EDAG") - private String opprettetKilde; - - @Schema(description = "Kildereferanse for opprettelse", example = "22a26849-aeef-4b81-9174-e238c11e1081") - private String opprettetKildereferanse; - - private LocalDateTime endretTidspunkt; - - @Schema(description = "Brukernavn for endring", example = "Z990693") - private String endretAv; - - @Schema(description = "Kilde for endring", example = "AAREG") - private String endretKilde; - - @Schema(description = "Kildereferanse for endring", example = "referanse-fra-kilde") - private String endretKildereferanse; - - @JsonIgnore - public LocalDateTime getOpprettetTidspunkt() { - return opprettetTidspunkt; - } - - @JsonIgnore - public LocalDateTime getEndretTidspunkt() { - return endretTidspunkt; - } - - @JsonProperty("opprettetTidspunkt") - @Schema(description = "Tidspunkt for opprettelse, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:10:58.059") - public String getOpprettetTidspunktAsString() { - return JavaTimeUtil.toString(opprettetTidspunkt); - } - - @JsonProperty("opprettetTidspunkt") - public void setOpprettetTidspunktAsString(String opprettetTidspunkt) { - this.opprettetTidspunkt = JavaTimeUtil.toLocalDateTime(opprettetTidspunkt); - } - - @JsonProperty("endretTidspunkt") - @Schema(description = "Tidspunkt for endring, format (ISO-8601): yyyy-MM-dd'T'HH:mm[:ss[.SSSSSSSSS]]", example = "2018-09-19T12:11:20.79") - public String getEndretTidspunktAsString() { - return JavaTimeUtil.toString(endretTidspunkt); - } - - @JsonProperty("endretTidspunkt") - public void setEndretTidspunktAsString(String endretTidspunkt) { - this.endretTidspunkt = JavaTimeUtil.toLocalDateTime(endretTidspunkt); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java deleted file mode 100644 index 20b592321e2..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Utenlandsopphold.java +++ /dev/null @@ -1,55 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util.JavaTimeUtil; - -import java.time.YearMonth; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonPropertyOrder({ - "periode", - "landkode", - "rapporteringsperiode", - "sporingsinformasjon" -}) -@Schema(description = "Informasjon om utenlandsopphold") -public class Utenlandsopphold { - - @Schema(description = "Periode for utenlandsopphold") - private Periode periode; - - @Schema(description = "Landkode (kodeverk: Landkoder)", example = "JPN") - private String landkode; - - private YearMonth rapporteringsperiode; - - @Schema(description = "Informasjon om opprettelse og endring av objekt") - private Sporingsinformasjon sporingsinformasjon; - - @JsonIgnore - public YearMonth getRapporteringsperiode() { - return rapporteringsperiode; - } - - @JsonProperty("rapporteringsperiode") - @Schema(description = "Rapporteringsperiode for utenlandsopphold, format (ISO-8601): yyyy-MM", example = "2017-12") - public String getRapporteringsperiodeAsString() { - return JavaTimeUtil.toString(rapporteringsperiode); - } - - @JsonProperty("rapporteringsperiode") - public void setRapporteringsperiodeAsString(String rapporteringsperiode) { - this.rapporteringsperiode = JavaTimeUtil.toYearMonth(rapporteringsperiode); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varsel.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varsel.java deleted file mode 100644 index 313c7368a4d..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varsel.java +++ /dev/null @@ -1,28 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Builder -@EqualsAndHashCode -@JsonInclude(JsonInclude.Include.NON_EMPTY) -@JsonPropertyOrder({ - "entitet", - "type", - "varslingskode" -}) -@Schema(description = "Informasjon om varsel") -public class Varsel { - - @Schema(description = "Entitet for varsel") - private Varselentitet entitet; - - @Schema(description = "Varslingskode (kodeverk: Varslingskode_5fAa-registeret)") - private String varslingskode; -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varselentitet.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varselentitet.java deleted file mode 100644 index a2cdb3a38b5..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/Varselentitet.java +++ /dev/null @@ -1,11 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1; - -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(description = "Entitet for varsel") -public enum Varselentitet { - - ARBEIDSFORHOLD, - ANSETTELSESPERIODE, - PERMISJONPERMITTERING -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/util/JavaTimeUtil.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/util/JavaTimeUtil.java deleted file mode 100644 index 286a175f226..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/domain/v1/util/JavaTimeUtil.java +++ /dev/null @@ -1,38 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.util; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.YearMonth; -import java.time.format.DateTimeFormatter; - -import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE; -import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME; - -public class JavaTimeUtil { - - private static final String YEAR_MONTH_PATTERN = "yyyy-MM"; - - public static String toString(LocalDate date) { - return date != null ? date.format(ISO_LOCAL_DATE) : null; - } - - public static String toString(LocalDateTime dateTime) { - return dateTime != null ? dateTime.format(ISO_LOCAL_DATE_TIME) : null; - } - - public static String toString(YearMonth yearMonth) { - return yearMonth != null ? yearMonth.format(DateTimeFormatter.ofPattern(YEAR_MONTH_PATTERN)) : null; - } - - public static LocalDate toLocalDate(String date) { - return date != null ? LocalDate.parse(date, ISO_LOCAL_DATE) : null; - } - - public static LocalDateTime toLocalDateTime(String dateTime) { - return dateTime != null ? LocalDateTime.parse(dateTime, ISO_LOCAL_DATE_TIME) : null; - } - - public static YearMonth toYearMonth(String yearMonth) { - return yearMonth != null ? YearMonth.parse(yearMonth, DateTimeFormatter.ofPattern(YEAR_MONTH_PATTERN)) : null; - } -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/mapper/TenorResultMapperService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/mapper/TenorResultMapperService.java deleted file mode 100644 index 09ad4097a40..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/mapper/TenorResultMapperService.java +++ /dev/null @@ -1,114 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.mapper; -/* -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import io.swagger.v3.core.util.Json; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorRawResponse; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorOversiktResponse; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.tenor.TenorResponse; -import org.apache.commons.lang3.StringUtils; -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Service; -import org.springframework.web.server.ResponseStatusException; - -import java.lang.reflect.InvocationTargetException; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; -import java.util.StringTokenizer; - -import static java.util.Collections.emptyList; -import static java.util.Objects.nonNull; - -@Slf4j -@Service -@RequiredArgsConstructor -public class TenorResultMapperService { - - private final ObjectMapper objectMapper; - - public TenorOversiktResponse map(TenorResponse resultat, String query) { - - return TenorOversiktResponse.builder() - .status(resultat.getStatus()) - .error(resultat.getError()) - .data(convert(resultat)) - .query(query) - .build(); - } - - private TenorOversiktResponse.Data convert(TenorResponse tenorResponse) { - - if (tenorResponse.getStatus().is2xxSuccessful()) { - log.info("Mottok tenor respons: {}", Json.pretty(tenorResponse.getData())); - try { - var preamble = new StringBuilder(); - var noHyphenCharsInValues = new StringTokenizer(tenorResponse.getData().toString(), "-"); - while (noHyphenCharsInValues.hasMoreTokens()) { - preamble.append(StringUtils.capitalize(noHyphenCharsInValues.nextToken())); - } - - var response = objectMapper.readValue(preamble.toString(), TenorRawResponse.class); - return TenorOversiktResponse.Data.builder() - .rader(response.getRader()) - .treff(response.getTreff()) - .offset(response.getOffset()) - .nesteSide(response.getNesteSide()) - .seed(response.getSeed()) - .personer(map(response)) - .build(); - - } catch (JsonProcessingException e) { - log.error("Feil ved konvertering av tenor respons {}", e.getMessage(), e); - throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, - "Feil ved konvertering av tenor response: %s".formatted(e.getMessage()), e); - } - } else { - return null; - } - } - - private static List map(TenorRawResponse response) { - - return response.getDokumentListe().stream() - .map(TenorResultMapperService::map) - .toList(); - } - - private static TenorOversiktResponse.Person map(TenorRawResponse.Dokument dokument) { - - return TenorOversiktResponse.Person.builder() - .id(dokument.getId()) - .fornavn(dokument.getFornavn()) - .etternavn(dokument.getEtternavn()) - .tenorRelasjoner(map(dokument.getTenorRelasjoner())) - .build(); - } - - private static List map(TenorRawResponse.TenorRelasjoner tenorRelasjoner) { - - return nonNull(tenorRelasjoner) ? - Arrays.stream(tenorRelasjoner.getClass().getMethods()) - .filter(metode -> metode.getName().startsWith("get")) - .filter(metode -> metode.getReturnType().equals(List.class)) - .map(metode -> { - try { - return (List) metode.invoke(tenorRelasjoner); - } catch (IllegalAccessException | InvocationTargetException e) { - log.error("Kunne ikke hente relasjoner", e); - return null; - } - }) - .filter(Objects::nonNull) - .flatMap(List::stream) - .map(tenorRelasjon -> tenorRelasjon.getClass().getSimpleName()) - .distinct() - .sorted() - .map(TenorOversiktResponse.TenorRelasjon::valueOf) - .toList() : - emptyList(); - } -} -*/ \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java deleted file mode 100644 index 27f0def6072..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/ArbeidsforholdService.java +++ /dev/null @@ -1,48 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.service; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.AaregConsumer; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.domain.v1.Arbeidsforhold; -import org.springframework.stereotype.Service; - -import java.time.LocalDate; -import java.util.List; - -@Slf4j -@Service -@RequiredArgsConstructor -public class ArbeidsforholdService { - - private final AaregConsumer aaregConsumer; - private final String sluttAarsaksKode = "arbeidstakerHarSagtOppSelv"; - private final String varslingsKode = "NAVEND"; - - public void arbeidsforholdService(String aktoerId) { - List arbeidsforholdListe = hentArbeidsforhold(aktoerId); - if (!arbeidsforholdListe.isEmpty()) { - arbeidsforholdListe.forEach( - arbeidsforhold -> { - if (arbeidsforhold.getAnsettelsesperiode().getPeriode().getTom() == null){ - endreArbeidsforhold(arbeidsforhold); - } - } - ); - } - } - - public List hentArbeidsforhold(String ident) { - return aaregConsumer.hentArbeidsforhold(ident); - } - - public void endreArbeidsforhold(Arbeidsforhold arbeidsforhold){ - - arbeidsforhold.getAnsettelsesperiode().getPeriode().setTom(LocalDate.now()); - arbeidsforhold.getAnsettelsesperiode().setSluttaarsak(sluttAarsaksKode); - arbeidsforhold.getAnsettelsesperiode().setVarslingskode(varslingsKode); - arbeidsforhold.getArbeidsavtaler().forEach( - arbeidsavtale -> arbeidsavtale.setStillingsprosent(null)); - - aaregConsumer.endreArbeidsforhold(arbeidsforhold); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java deleted file mode 100644 index 040fa078b5a..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/service/TenorPersonService.java +++ /dev/null @@ -1,23 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.service; - -import com.fasterxml.jackson.core.JsonProcessingException; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import no.nav.testnorge.apps.levendearbeidsforholdansettelse.consumers.TenorConsumer; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Service; - -@Slf4j -@Service -@RequiredArgsConstructor -public class TenorPersonService { - - private final TenorConsumer tenorConsumer; - - @EventListener(ApplicationReadyEvent.class) - public void tenorPersonService() throws JsonProcessingException { - log.info("Henter tenor person"); - tenorConsumer.consume(); - } -} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/util/CallIdUtil.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/util/CallIdUtil.java deleted file mode 100644 index 0e3d1fdde93..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/util/CallIdUtil.java +++ /dev/null @@ -1,17 +0,0 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse.util; - -import lombok.experimental.UtilityClass; - -import java.util.UUID; - -import static java.lang.String.format; - -@UtilityClass -public final class CallIdUtil { - public static final String HEADER_NAV_CONSUMER_ID = "Nav-Consumer-Id"; - public static final String HEADER_NAV_CALL_ID = "Nav-Call-Id"; - public static final String CONSUMER = "Dolly"; - public static String generateCallId() { - return format("%s-%s", CONSUMER, UUID.randomUUID()); - } -} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application-dev.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application-dev.yml new file mode 100644 index 00000000000..e6df65b9e12 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application-dev.yml @@ -0,0 +1,2 @@ +kafka: + group-id: testnav-levende-arbeidsforhold-ansettelse diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.properties b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.properties deleted file mode 100644 index a3b6d8c16b2..00000000000 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -spring.application.name=levende-arbeidsforhold-ansettelse diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml index dea8e475143..61fbda87ab2 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -8,13 +8,13 @@ spring: version: application.version.todo #TODO Finn ut hvordan denne kan settes fra Gradle description: App for å hente PDL personer. security: - oauth2: - client: - resourceserver: - aad: - issuer-uri: ${AAD_ISSUER_URI}/v2.0 - jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys - accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} + oauth2: + client: + resourceserver: + aad: + issuer-uri: ${AAD_ISSUER_URI}/v2.0 + jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys + accepted-audience: ${azure.app.client.id}, api://${azure.app.client.id} cloud: vault: enabled: false @@ -53,6 +53,3 @@ consumers: namespace: dolly url: https://testnav-aareg-proxy.dev-fss-pub.nais.io cluster: dev-fss - testnav-tenor-search-service: - name: testnav-tenor-search-service - url: https://testdata.api.skatteetaten.no \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml index 5afe492963c..9583ff2d427 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml @@ -37,4 +37,4 @@ - + \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplicationTests.java b/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplicationTests.java similarity index 76% rename from apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplicationTests.java rename to apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplicationTests.java index 9e062d42766..2be24dfb493 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/testnorge/apps/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplicationTests.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/test/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/LevendeArbeidsforholdAnsettelseApplicationTests.java @@ -1,4 +1,4 @@ -package no.nav.testnorge.apps.levendearbeidsforholdansettelse; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; diff --git a/apps/levende-arbeidsforhold-ansettelse-v2/src/test/resources/application-test.properties b/apps/levende-arbeidsforhold-ansettelse/src/test/resources/application-test.properties similarity index 100% rename from apps/levende-arbeidsforhold-ansettelse-v2/src/test/resources/application-test.properties rename to apps/levende-arbeidsforhold-ansettelse/src/test/resources/application-test.properties diff --git a/settings.gradle b/settings.gradle index 39e9ff7e3ab..284f5e3786c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -126,7 +126,7 @@ includeBuild './apps/varslinger-service' includeBuild './apps/dollystatus' includeBuild './apps/skattekort-service' includeBuild './apps/levende-arbeidsforhold-service' -includeBuild'./apps/levende-arbeidsforhold-ansettelse-v2' +includeBuild'./apps/levende-arbeidsforhold-ansettelse' includeBuild './xsd/arbeidsforhold-xsd' From 0ca381b352bddf81fe24124b342e67d16c564d8d Mon Sep 17 00:00:00 2001 From: Martineem Date: Wed, 10 Jul 2024 14:32:09 +0200 Subject: [PATCH 149/161] Legger til tenor-search-service som consumer --- .../src/main/resources/application.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml index 61fbda87ab2..e13212027c6 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -53,3 +53,6 @@ consumers: namespace: dolly url: https://testnav-aareg-proxy.dev-fss-pub.nais.io cluster: dev-fss + testnav-tenor-search-service: + name: testnav-tenor-search-service + url: https://testdata.api.skatteetaten.no From 744421f706ae8e4aab24858cedf8bb464a2e30d6 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Wed, 10 Jul 2024 15:21:20 +0200 Subject: [PATCH 150/161] Laget EREG Consumers som henter Organisasjon --- .../config/Consumers.java | 2 + .../consumers/EregConsumer.java | 39 +++++++++++ .../command/HentOrganisasjonCommand.java | 46 +++++++++++++ .../domain/organisasjon/Adresse.java | 64 +++++++++++++++++++ .../domain/organisasjon/Organisasjon.java | 57 +++++++++++++++++ .../domain/organisasjon/dto/AdresseDTO.java | 26 ++++++++ .../domain/organisasjon/dto/DetaljerDTO.java | 18 ++++++ .../domain/organisasjon/dto/NavnDTO.java | 21 ++++++ .../organisasjon/dto/OrganisasjonDTO.java | 37 +++++++++++ .../dto/OrganisasjonDetaljerDTO.java | 22 +++++++ .../service/HentOrganisasjonService.java | 21 ++++++ .../src/main/resources/application.yml | 5 ++ 12 files changed, 358 insertions(+) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/EregConsumer.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/HentOrganisasjonCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Adresse.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Organisasjon.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/AdresseDTO.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/DetaljerDTO.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/NavnDTO.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/OrganisasjonDTO.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/OrganisasjonDetaljerDTO.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonService.java diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java index 6cddf881ebd..a17e15482cc 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java @@ -26,4 +26,6 @@ public class Consumers { private ServerProperties testnavAaregProxy; private ServerProperties testnavTenorSearchService; + private ServerProperties testnavEregProxy; + private ServerProperties pdlProxy; } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/EregConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/EregConsumer.java new file mode 100644 index 00000000000..0a543341ed9 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/EregConsumer.java @@ -0,0 +1,39 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers; + +import lombok.extern.slf4j.Slf4j; + +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command.HentOrganisasjonCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.WebClient; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; + +@Slf4j +@Component +public class EregConsumer { + private final WebClient webClient; + private final ServerProperties serverProperties; + private final TokenExchange tokenExchange; + + + public EregConsumer( + Consumers consumers, + TokenExchange tokenExchange) { + serverProperties = consumers.getTestnavEregProxy(); + this.webClient = WebClient + .builder() + .baseUrl(serverProperties.getUrl()) + .build(); + this.tokenExchange = tokenExchange; + } + + public Organisasjon getOrganisasjon(String orgnummer, String miljo) { + var accessToken = tokenExchange.exchange(serverProperties).block(); + OrganisasjonDTO dto = new HentOrganisasjonCommand(webClient, accessToken.getTokenValue(), miljo, orgnummer).call(); + return dto != null ? new Organisasjon(dto) : null; + } + +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/HentOrganisasjonCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/HentOrganisasjonCommand.java new file mode 100644 index 00000000000..93d73d65c86 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/HentOrganisasjonCommand.java @@ -0,0 +1,46 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command; + +import io.swagger.v3.core.util.Json; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; +import no.nav.testnav.libs.commands.utils.WebClientFilter; +import org.springframework.http.HttpHeaders; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import reactor.util.retry.Retry; + +import java.time.Duration; +import java.util.concurrent.Callable; + +@Slf4j +@RequiredArgsConstructor +public class HentOrganisasjonCommand implements Callable { + private final WebClient webClient; + private final String token; + private final String miljo; + private final String orgnummer; + + @Override + public OrganisasjonDTO call() { + log.info("Henter organisasjon med orgnummer {}.", orgnummer); + try { + return webClient + .get() .uri(builder -> builder + .path("/api/{miljo}/v2/organisasjon/{orgnummer}") + .queryParam("inkluderHierarki", true) + .queryParam("inkluderHistorikk", false) + .build(miljo, orgnummer)) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .retrieve() + .bodyToMono(OrganisasjonDTO.class) + .doOnSuccess(response -> log.info("Response: {}", Json.pretty(response))) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .block(); + } catch (WebClientResponseException.NotFound e) { + log.warn("Fant ikke {}.", orgnummer); + return null; + } + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Adresse.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Adresse.java new file mode 100644 index 00000000000..44e05ff6ea8 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Adresse.java @@ -0,0 +1,64 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon; + +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.AdresseDTO; + +import java.util.Arrays; + +public class Adresse { + private final String kommunenummer; + private final String adresselinje1; + private final String adresselinje2; + private final String adresselinje3; + private final String landkode; + private final String postnummer; + private final String poststed; + + public Adresse(AdresseDTO dto) { + this.kommunenummer = + this.adresselinje1 = dto.getAdresselinje1(); + this.adresselinje2 = dto.getAdresselinje2(); + this.adresselinje3 = dto.getAdresselinje3(); + this.landkode = dto.getLandkode(); + this.postnummer = dto.getPostnummer(); + this.poststed = dto.getPoststed(); + } + + public Adresse(no.nav.testnav.libs.dto.organisasjon.v1.AdresseDTO dto) { + this.kommunenummer = dto.getKommunenummer(); + this.adresselinje1 = dto.getAdresselinje1(); + this.adresselinje2 = dto.getAdresselinje2(); + this.adresselinje3 = dto.getAdresselinje3(); + this.landkode = dto.getLandkode(); + this.postnummer = dto.getPostnummer(); + this.poststed = dto.getPoststed(); + } + + public no.nav.testnav.libs.dto.organisasjon.v1.AdresseDTO toDTO() { + return no.nav.testnav.libs.dto.organisasjon.v1.AdresseDTO.builder() + .kommunenummer(kommunenummer) + .adresselinje1(adresselinje1) + .adresselinje2(adresselinje2) + .adresselinje3(adresselinje3) + .landkode(landkode) + .postnummer(postnummer) + .poststed(poststed) + .build(); + } + + + public no.nav.testnav.libs.dto.eregmapper.v1.AdresseDTO toAdresseDTO() { + return no.nav.testnav.libs.dto.eregmapper.v1.AdresseDTO + .builder() + .adresser(Arrays.asList( + adresselinje1, + adresselinje2, + adresselinje3 + )) + .kommunenr(kommunenummer) + .landkode(landkode) + .postnr(postnummer) + .poststed(poststed) + .build(); + } + +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Organisasjon.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Organisasjon.java new file mode 100644 index 00000000000..237e94c3215 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Organisasjon.java @@ -0,0 +1,57 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon; + +import lombok.Value; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; + +import java.util.Collections; +import java.util.List; + + +@Slf4j +@Value +public class Organisasjon { + String orgnummer; + String enhetType; + String navn; + String juridiskEnhet; + Adresse postadresse; + Adresse forretningsadresser; + String redigertnavn; + List driverVirksomheter; + + public Organisasjon(OrganisasjonDTO dto) { + + navn = dto.getNavn().getNavnelinje1(); + orgnummer = dto.getOrganisasjonsnummer(); + juridiskEnhet = dto.getParents().isEmpty() ? null : dto.getParents().get(0).getOrganisasjonsnummer(); + redigertnavn = dto.getNavn().getRedigertnavn(); + enhetType = dto.getDetaljer().getEnhetstype(); + + driverVirksomheter = dto.getChildren() != null + ? dto.getChildren().stream().map(OrganisasjonDTO::getOrganisasjonsnummer).toList() + : Collections.emptyList(); + + if (dto.getOrganisasjonDetaljer() != null) { + var postadresser = dto.getOrganisasjonDetaljer().getPostadresser(); + if (postadresser != null && !postadresser.isEmpty()) { + this.postadresse = new Adresse(postadresser.get(0)); + } else { + this.postadresse = null; + } + var forretningsadresser = dto.getOrganisasjonDetaljer().getForretningsadresser(); + if (forretningsadresser != null && !forretningsadresser.isEmpty()) { + this.forretningsadresser = new Adresse(forretningsadresser.get(0)); + } else { + this.forretningsadresser = null; + } + } else { + this.postadresse = null; + this.forretningsadresser = null; + } + } + + public no.nav.testnav.libs.dto.organisasjon.v1.OrganisasjonDTO toDTO() { + return no.nav.testnav.libs.dto.organisasjon.v1.OrganisasjonDTO.builder().navn(navn).enhetType(enhetType).orgnummer(orgnummer).juridiskEnhet(juridiskEnhet).postadresse(postadresse != null ? postadresse.toDTO() : null).forretningsadresser(forretningsadresser != null ? forretningsadresser.toDTO() : null).redigertnavn(redigertnavn).driverVirksomheter(driverVirksomheter).build(); + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/AdresseDTO.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/AdresseDTO.java new file mode 100644 index 00000000000..fde1d6fb531 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/AdresseDTO.java @@ -0,0 +1,26 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; +import lombok.Value; + +@Value +@NoArgsConstructor(force = true) +@AllArgsConstructor +public class AdresseDTO { + @JsonProperty + String adresselinje1; + @JsonProperty + String adresselinje2; + @JsonProperty + String adresselinje3; + @JsonProperty + String kommunenummer; + @JsonProperty + String landkode; + @JsonProperty + String postnummer; + @JsonProperty + String poststed; +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/DetaljerDTO.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/DetaljerDTO.java new file mode 100644 index 00000000000..9ce45066a85 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/DetaljerDTO.java @@ -0,0 +1,18 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.NoArgsConstructor; +import lombok.Value; + +@Value +@NoArgsConstructor(force = true) +@AllArgsConstructor +@Builder +@JsonIgnoreProperties(ignoreUnknown = true) +public class DetaljerDTO { + @JsonProperty + String enhetstype; +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/NavnDTO.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/NavnDTO.java new file mode 100644 index 00000000000..8e103c71a8a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/NavnDTO.java @@ -0,0 +1,21 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.NoArgsConstructor; +import lombok.Value; + +@Value +@Builder +@NoArgsConstructor(force = true) +@AllArgsConstructor +@JsonIgnoreProperties(ignoreUnknown = true) +public class NavnDTO { + + @JsonProperty + String redigertnavn; + @JsonProperty + String navnelinje1; +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/OrganisasjonDTO.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/OrganisasjonDTO.java new file mode 100644 index 00000000000..ca4d3668918 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/OrganisasjonDTO.java @@ -0,0 +1,37 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto; + +import com.fasterxml.jackson.annotation.JsonAlias; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.*; +import lombok.extern.slf4j.Slf4j; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Value +@Builder +@NoArgsConstructor(force = true) +@AllArgsConstructor +@JsonIgnoreProperties(ignoreUnknown = true) +@ToString +public class OrganisasjonDTO { + @JsonProperty(required = true) + String organisasjonsnummer; + @JsonProperty(required = true) + @JsonAlias({"virksomhetDetaljer", "juridiskEnhetDetaljer", "organisasjonsleddDetaljer"}) + DetaljerDTO detaljer; + @JsonProperty(required = true) + NavnDTO navn; + @JsonProperty(required = true) + String type; + @JsonProperty + @JsonAlias({"inngaarIJuridiskEnheter"}) + List parents = new ArrayList<>(); + @JsonProperty + OrganisasjonDetaljerDTO organisasjonDetaljer; + @JsonProperty + @JsonAlias({"driverVirksomheter"}) + List children = new ArrayList<>(); +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/OrganisasjonDetaljerDTO.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/OrganisasjonDetaljerDTO.java new file mode 100644 index 00000000000..46e78c62005 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/dto/OrganisasjonDetaljerDTO.java @@ -0,0 +1,22 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.NoArgsConstructor; +import lombok.Value; + +import java.util.List; + +@Value +@NoArgsConstructor(force = true) +@AllArgsConstructor +@Builder +@JsonIgnoreProperties(ignoreUnknown = true) +public class OrganisasjonDetaljerDTO { + @JsonProperty + List forretningsadresser; + @JsonProperty + List postadresser; +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonService.java new file mode 100644 index 00000000000..6eb8e160f8f --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonService.java @@ -0,0 +1,21 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.EregConsumer; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class HentOrganisasjonService { + private final EregConsumer eregConsumer; + @EventListener(ApplicationReadyEvent.class) + public void hentOrganisasjoner() { + System.out.println("Henter organisasjoner"); + log.info("eregConsumer.getOrganisasjon(\"955937864\", \"q2\")"); + eregConsumer.getOrganisasjon("955937864", "q2"); + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml index e13212027c6..2cb1cb08a0a 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -53,6 +53,11 @@ consumers: namespace: dolly url: https://testnav-aareg-proxy.dev-fss-pub.nais.io cluster: dev-fss + testnav-ereg-proxy: + name: testnav-ereg-proxy + namespace: dolly + url: https://testnav-ereg-proxy.dev-fss-pub.nais.io + cluster: dev-fss testnav-tenor-search-service: name: testnav-tenor-search-service url: https://testdata.api.skatteetaten.no From 69e5bfaad67340a78e2bcf0f08fb175055d6af5e Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Wed, 10 Jul 2024 17:26:41 +0200 Subject: [PATCH 151/161] =?UTF-8?q?Graphql=20sp=C3=B8rring=20fungerer=20og?= =?UTF-8?q?=20har=20lagt=20til=20command=20for=20testnav-organisasjon-fast?= =?UTF-8?q?e-data-service=20men=20f=C3=A5r=20401?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/Consumers.java | 3 +- .../OrganisasjonFasteDataConsumer.java | 38 + .../command/GetOrganisasjonerCommand.java | 34 + .../consumers/pdl/GraphQLRequest.java | 9 + .../pdl/JacksonExchangeStrategyUtil.java | 25 + .../consumers/pdl/PdlPersonConsumer.java | 98 ++ .../consumers/pdl/TemaGrunnlag.java | 6 + .../pdl/commad/PdlBolkPersonCommand.java | 61 ++ .../pdl/commad/PdlPersonGetCommand.java | 68 ++ .../pdl/domain/CommonKeysAndUtils.java | 11 + .../provider/v2/PdlMiljoer.java | 5 + .../provider/v2/PdlPersonController.java | 36 + .../HentOrganisasjonNummerService.java | 24 + .../service/HentOrganisasjonService.java | 5 +- .../service/HentPersonService.java | 28 + .../service/TenorPersonService.java | 2 +- .../src/main/resources/application.yml | 10 + .../src/main/resources/pdl/graphql.config.yml | 8 + .../main/resources/pdl/pdl-api-schema.graphql | 943 ++++++++++++++++++ .../main/resources/pdl/pdlHentIdent.graphql | 9 + .../resources/pdl/pdlPerson2Query.graphql | 596 +++++++++++ .../main/resources/pdl/pdlPersonQuery.graphql | 32 + .../src/main/resources/pdl/pdlQuery.graphql | 29 + .../main/resources/pdl/pdlbolkquery.graphql | 617 ++++++++++++ 24 files changed, 2693 insertions(+), 4 deletions(-) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/GraphQLRequest.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/JacksonExchangeStrategyUtil.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/TemaGrunnlag.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/domain/CommonKeysAndUtils.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlMiljoer.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlPersonController.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentPersonService.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/graphql.config.yml create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdl-api-schema.graphql create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlHentIdent.graphql create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPerson2Query.graphql create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPersonQuery.graphql create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlQuery.graphql create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlbolkquery.graphql diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java index a17e15482cc..a6db3f602b4 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java @@ -27,5 +27,6 @@ public class Consumers { private ServerProperties testnavAaregProxy; private ServerProperties testnavTenorSearchService; private ServerProperties testnavEregProxy; - private ServerProperties pdlProxy; + private ServerProperties testnavPdlProxy; + private ServerProperties testnavOrganisasjonFasteDataService; } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java new file mode 100644 index 00000000000..eb494a477e3 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers; + +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command.GetOrganisasjonerCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.Organisasjon; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.WebClient; + +import java.util.List; + +@Slf4j +@Component +public class OrganisasjonFasteDataConsumer { + private final WebClient webClient; + private final ServerProperties serverProperties; + private final TokenExchange tokenExchange; + + public OrganisasjonFasteDataConsumer( + Consumers consumers, + TokenExchange tokenExchange) { + serverProperties = consumers.getTestnavOrganisasjonFasteDataService(); + this.webClient = WebClient + .builder() + .baseUrl(serverProperties.getUrl()) + .build(); + this.tokenExchange = tokenExchange; + } + + public List hentOrganisasjoner() { + var accessToken = tokenExchange.exchange(serverProperties).block(); + List dto = new GetOrganisasjonerCommand(webClient, accessToken.getTokenValue()).call(); + return dto.stream().map(OrganisasjonDTO::getOrganisasjonsnummer).toList(); //org -> new Organisasjon(org.getOrganisasjonsnummer()) + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java new file mode 100644 index 00000000000..fa250a3278a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java @@ -0,0 +1,34 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; +import org.springframework.web.reactive.function.client.WebClient; + +import java.util.List; +import java.util.concurrent.Callable; + +@Slf4j +@RequiredArgsConstructor +public class GetOrganisasjonerCommand implements Callable> { + private final WebClient webClient; + private final String token; + + + @Override + public List call() { + return webClient + .get() + .uri(builder -> builder + .path("/api/v1/organisasjoner") + .queryParam("inkluderHierarki", true) + .queryParam("kanHaArbeidsforhold", true) + .build() + ) + .header("Authorization", "Bearer " + token) + .retrieve() + .bodyToFlux(OrganisasjonDTO.class) + .collectList() + .block(); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/GraphQLRequest.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/GraphQLRequest.java new file mode 100644 index 00000000000..1fcf6964431 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/GraphQLRequest.java @@ -0,0 +1,9 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl; + +import lombok.Builder; + +import java.util.Map; + +@Builder +public record GraphQLRequest(String query, Map variables) { +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/JacksonExchangeStrategyUtil.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/JacksonExchangeStrategyUtil.java new file mode 100644 index 00000000000..02148017563 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/JacksonExchangeStrategyUtil.java @@ -0,0 +1,25 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl; + +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.experimental.UtilityClass; +import org.springframework.http.MediaType; +import org.springframework.http.codec.json.Jackson2JsonDecoder; +import org.springframework.http.codec.json.Jackson2JsonEncoder; +import org.springframework.web.reactive.function.client.ExchangeStrategies; + +@UtilityClass +public final class JacksonExchangeStrategyUtil { + + public static ExchangeStrategies getJacksonStrategy(ObjectMapper objectMapper) { + return ExchangeStrategies.builder() + .codecs(config -> { + config.defaultCodecs() + .maxInMemorySize(32 * 1024 * 1024); + config.defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + config.defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + }).build(); + } + +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java new file mode 100644 index 00000000000..dbde526f5b1 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java @@ -0,0 +1,98 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import lombok.val; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad.PdlBolkPersonCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad.PdlPersonGetCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.provider.v2.PdlMiljoer; +import no.nav.testnav.libs.securitycore.domain.AccessToken; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.client.reactive.ReactorClientHttpConnector; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; +import reactor.netty.http.client.HttpClient; +import reactor.netty.resources.ConnectionProvider; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.time.Duration; +import java.util.List; +import java.util.stream.Collectors; + +import static java.nio.charset.StandardCharsets.UTF_8; +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.JacksonExchangeStrategyUtil.getJacksonStrategy; +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.JacksonExchangeStrategyUtil.getJacksonStrategy; + +@Slf4j +@Service +public class PdlPersonConsumer { + + private final TokenExchange tokenService; + private final ServerProperties serverProperties; + private final WebClient webClient; + + public PdlPersonConsumer( + TokenExchange tokenService, + Consumers consumers, + ObjectMapper objectMapper, + WebClient.Builder webClientBuilder + ) { + log.info("PdlPersonConsumer"); + serverProperties = consumers.getTestnavPdlProxy(); + log.info("serverProperties: {}", serverProperties); + this.tokenService = tokenService; + webClient = webClientBuilder + .baseUrl(serverProperties.getUrl()) + .exchangeStrategies(getJacksonStrategy(objectMapper)) + .clientConnector( + new ReactorClientHttpConnector( + HttpClient.create( + ConnectionProvider + .builder("custom") + .maxConnections(10) + .pendingAcquireMaxCount(5000) + .pendingAcquireTimeout(Duration.ofMinutes(15)) + .build()) + .responseTimeout(Duration.ofSeconds(5)))) + .build(); + } + + public Mono getPdlPerson(String ident, PdlMiljoer pdlMiljoe) { + log.info("getPdlPerson"); + var token = tokenService.exchange(serverProperties).block(); + log.info("token: {}", token); + log.info("TokenVaule: {}", token.getTokenValue()); + + return new PdlPersonGetCommand(webClient, ident, token.getTokenValue(), pdlMiljoe).call(); + /* + return tokenService.exchange(serverProperties) + .flatMap((AccessToken token) -> new PdlPersonGetCommand(webClient, ident, token.getTokenValue(), pdlMiljoe) + .call()); + + */ + } + + public Mono getPdlPersoner(List identer) { + + return tokenService.exchange(serverProperties) + .flatMap(token -> new PdlBolkPersonCommand(webClient, identer, token.getTokenValue()).call()); + } + + public static String hentQueryResource(String pathResource) { + val resource = new ClassPathResource(pathResource); + try (BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getInputStream(), UTF_8))) { + return reader.lines().collect(Collectors.joining("\n")); + + } catch (IOException e) { + log.error("Lesing av query ressurs {} feilet", pathResource, e); + return null; + } + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/TemaGrunnlag.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/TemaGrunnlag.java new file mode 100644 index 00000000000..172f41fbe8a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/TemaGrunnlag.java @@ -0,0 +1,6 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl; + +public enum TemaGrunnlag { + + GEN, PEN +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java new file mode 100644 index 00000000000..dd378daabe0 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java @@ -0,0 +1,61 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.RequiredArgsConstructor; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.GraphQLRequest; +import no.nav.testnav.libs.reactivecore.utils.WebClientFilter; +import org.springframework.web.reactive.function.BodyInserters; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import reactor.core.publisher.Mono; +import reactor.util.retry.Retry; + +import java.time.Duration; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.Callable; + +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.PdlPersonConsumer.hentQueryResource; +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.TemaGrunnlag.GEN; +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.domain.CommonKeysAndUtils.*; + +import static org.springframework.http.HttpHeaders.AUTHORIZATION; + +@RequiredArgsConstructor +public class PdlBolkPersonCommand implements Callable> { + + private static final String TEMA = "Tema"; + private static final String GRAPHQL_URL = "/graphql"; + private static final String PDL_API_URL = "/pdl-api"; + private static final String MULTI_PERSON_QUERY = "pdl/pdlbolkquery.graphql"; + + private final WebClient webClient; + private final List identer; + private final String token; + + @Override + public Mono call() { + + return webClient + .post() + .uri(uriBuilder -> uriBuilder + .path(PDL_API_URL) + .path(GRAPHQL_URL) + .build()) + .header(AUTHORIZATION, "Bearer " + token) + .header(HEADER_NAV_CONSUMER_ID, DOLLY) + .header(HEADER_NAV_CALL_ID, "Dolly: " + UUID.randomUUID()) + .header(TEMA, GEN.name()) + .body(BodyInserters + .fromValue(new GraphQLRequest(hentQueryResource(MULTI_PERSON_QUERY), + Map.of("identer", identer)))) + .retrieve() + .bodyToMono(JsonNode.class) + .doOnError(WebClientFilter::logErrorMessage) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .onErrorResume(throwable -> throwable instanceof WebClientResponseException.NotFound, + throwable -> Mono.empty()); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java new file mode 100644 index 00000000000..a33894d16f6 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java @@ -0,0 +1,68 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.GraphQLRequest; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.provider.v2.PdlMiljoer; +import no.nav.testnav.libs.reactivecore.utils.WebClientFilter; +import org.springframework.web.reactive.function.BodyInserters; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import reactor.core.publisher.Mono; +import reactor.util.retry.Retry; + +import java.time.Duration; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.Callable; + +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.PdlPersonConsumer.hentQueryResource; +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.TemaGrunnlag.GEN; +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.domain.CommonKeysAndUtils.*; + +import static org.springframework.http.HttpHeaders.AUTHORIZATION; + +@Slf4j +@RequiredArgsConstructor +public class PdlPersonGetCommand implements Callable> { + + private static final String TEMA = "Tema"; + private static final String GRAPHQL_URL = "/graphql"; + private static final String PDL_API_URL = "/pdl-api"; + private static final String SINGLE_PERSON_QUERY = "pdl/pdlPerson2Query.graphql"; + + private final WebClient webClient; + private final String ident; + private final String token; + private final PdlMiljoer pdlMiljoe; + + @Override + public Mono call() { + log.info("PdlPersonGetCommand"); + GraphQLRequest graphQLRequest = new GraphQLRequest(hentQueryResource(SINGLE_PERSON_QUERY), + Map.of("ident", ident, "historikk", true)); + log.info("graphQLRequest: {}", graphQLRequest); + return webClient + .post() + .uri(uriBuilder -> uriBuilder + .path(PDL_API_URL) + .path(pdlMiljoe.equals(PdlMiljoer.Q2) ? "" : "-" + pdlMiljoe.name().toLowerCase()) + .path(GRAPHQL_URL) + .build()) + .header(AUTHORIZATION, "Bearer " + token) + .header(HEADER_NAV_CONSUMER_ID, DOLLY) + .header(HEADER_NAV_CALL_ID, "Dolly: " + UUID.randomUUID()) + .header(TEMA, GEN.name()) + .body(BodyInserters + .fromValue(new GraphQLRequest(hentQueryResource(SINGLE_PERSON_QUERY), + Map.of("ident", ident, "historikk", true)))) + .retrieve() + .bodyToMono(JsonNode.class) + .doOnError(WebClientFilter::logErrorMessage) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .onErrorResume(throwable -> throwable instanceof WebClientResponseException.NotFound, + throwable -> Mono.empty()); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/domain/CommonKeysAndUtils.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/domain/CommonKeysAndUtils.java new file mode 100644 index 00000000000..b3590828851 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/domain/CommonKeysAndUtils.java @@ -0,0 +1,11 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.domain; + +import lombok.experimental.UtilityClass; + +@UtilityClass +public final class CommonKeysAndUtils { + + public static final String HEADER_NAV_CONSUMER_ID = "Nav-Consumer-Id"; + public static final String HEADER_NAV_CALL_ID = "Nav-Call-Id"; + public static final String DOLLY = "Dolly"; +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlMiljoer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlMiljoer.java new file mode 100644 index 00000000000..b0df72033a7 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlMiljoer.java @@ -0,0 +1,5 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.provider.v2; + +public enum PdlMiljoer { + Q1, Q2 + } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlPersonController.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlPersonController.java new file mode 100644 index 00000000000..fedfafd4cd9 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlPersonController.java @@ -0,0 +1,36 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.provider.v2; + +import com.fasterxml.jackson.databind.JsonNode; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; + +import org.springframework.web.bind.annotation.*; +import reactor.core.publisher.Mono; + +import java.util.List; + +@RestController +@RequestMapping("/api/v2/personer") +@RequiredArgsConstructor +public class PdlPersonController { + +/* + private final PdlPersonConsumer pdlPersonConsumer; + + @GetMapping("/ident/{ident}") + @Operation(description = "Henter PDL-person angitt ved ident fra PDL-API / PDL-API-Q1") + public Mono pdlPerson(@PathVariable("ident") String ident, + @RequestParam(value = "pdlMiljoe", required = false, defaultValue = "Q2") PdlMiljoer + pdlMiljoe) { + return pdlPersonConsumer.getPdlPerson(ident, pdlMiljoe); + } + + @GetMapping("/identer") + @Operation(description = "Henter flere PDL-personer i hht liste av identer fra PDL-API") + public Mono pdlPerson(@RequestParam("identer") List identer) { + + return pdlPersonConsumer.getPdlPersoner(identer); + } + + */ +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java new file mode 100644 index 00000000000..2ed92a0815c --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java @@ -0,0 +1,24 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.OrganisasjonFasteDataConsumer; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@RequiredArgsConstructor +@Service +public class HentOrganisasjonNummerService { + private final OrganisasjonFasteDataConsumer organisasjonFasteDataConsumer; + + @EventListener(ApplicationReadyEvent.class) + public void hentOrganisasjoner() { + List orgNummer = organisasjonFasteDataConsumer.hentOrganisasjoner(); + log.info("Hentet {} organisasjoner", orgNummer.size()); + log.info("Første org nr: {}", orgNummer.get(0)); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonService.java index 6eb8e160f8f..b4279e9e445 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonService.java @@ -12,10 +12,11 @@ @RequiredArgsConstructor public class HentOrganisasjonService { private final EregConsumer eregConsumer; - @EventListener(ApplicationReadyEvent.class) + //@EventListener(ApplicationReadyEvent.class) public void hentOrganisasjoner() { System.out.println("Henter organisasjoner"); log.info("eregConsumer.getOrganisasjon(\"955937864\", \"q2\")"); eregConsumer.getOrganisasjon("955937864", "q2"); } -} \ No newline at end of file +} + diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentPersonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentPersonService.java new file mode 100644 index 00000000000..eca30f558a9 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentPersonService.java @@ -0,0 +1,28 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.service; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.PdlPersonConsumer; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.provider.v2.PdlMiljoer; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class HentPersonService { + private final PdlPersonConsumer pdlPersonConsumer; + + //@EventListener(ApplicationReadyEvent.class) + public void hentPersoner() { + System.out.println("Henter personer"); + String ident = "15476606168"; + PdlMiljoer miljoe = PdlMiljoer.Q2; + log.info("pdlPersonConsumer.getPerson(\"12345678901\")"); + JsonNode pdl = pdlPersonConsumer.getPdlPerson(ident, miljoe).block(); + log.info("pdl: {}", pdl); + + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/TenorPersonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/TenorPersonService.java index 94341448240..637568d28c7 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/TenorPersonService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/TenorPersonService.java @@ -16,7 +16,7 @@ public class TenorPersonService { private final TenorConsumer tenorConsumer; - @EventListener(ApplicationReadyEvent.class) + //@EventListener(ApplicationReadyEvent.class) public void tenorPersonService() throws JsonProcessingException { log.info("Henter tenor person"); tenorConsumer.consume(); diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml index 2cb1cb08a0a..f0e02307c2b 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -58,6 +58,16 @@ consumers: namespace: dolly url: https://testnav-ereg-proxy.dev-fss-pub.nais.io cluster: dev-fss + testnav-pdl-proxy: + name: testnav-pdl-proxy + namespace: dolly + url: https://testnav-pdl-proxy.dev-fss-pub.nais.io + cluster: dev-fss testnav-tenor-search-service: name: testnav-tenor-search-service url: https://testdata.api.skatteetaten.no + testnav-organisasjon-faste-data-service: + name: testnav-organisasjon-faste-data-service + url: https://testnav-organisasjon-faste-data-service.dev-fss-pub.nais.io + cluster: dev-fss + namespace: dolly diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/graphql.config.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/graphql.config.yml new file mode 100644 index 00000000000..1f9a7cdf2a6 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/graphql.config.yml @@ -0,0 +1,8 @@ +schema: pdl-api-schema.graphql +extensions: + endpoints: + PDL GraphQL Endpoint: + url: https://pdl-api.dev.intern.nav.no/graphql + headers: + user-agent: '' + introspect: false diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdl-api-schema.graphql b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdl-api-schema.graphql new file mode 100644 index 00000000000..d0209854938 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdl-api-schema.graphql @@ -0,0 +1,943 @@ +# This file was generated. Do not edit manually. + +schema { + query: Query +} + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +type AdresseCompletionResult { + addressFound: CompletionAdresse + suggestions: [String!]! +} + +type AdresseSearchHit { + matrikkeladresse: MatrikkeladresseResult + score: Float + vegadresse: VegadresseResult +} + +type AdresseSearchResult { + hits: [AdresseSearchHit!]! + pageNumber: Int + totalHits: Int + totalPages: Int +} + +type Adressebeskyttelse { + folkeregistermetadata: Folkeregistermetadata + gradering: AdressebeskyttelseGradering! + metadata: Metadata! +} + +type Bostedsadresse { + angittFlyttedato: Date + coAdressenavn: String + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: DateTime + gyldigTilOgMed: DateTime + matrikkeladresse: Matrikkeladresse + metadata: Metadata! + ukjentBosted: UkjentBosted + utenlandskAdresse: UtenlandskAdresse + vegadresse: Vegadresse +} + +type CompletionAdresse { + matrikkeladresse: MatrikkeladresseResult + vegadresse: VegadresseResult +} + +type DeltBosted { + coAdressenavn: String + folkeregistermetadata: Folkeregistermetadata! + matrikkeladresse: Matrikkeladresse + metadata: Metadata! + sluttdatoForKontrakt: Date + startdatoForKontrakt: Date! + ukjentBosted: UkjentBosted + utenlandskAdresse: UtenlandskAdresse + vegadresse: Vegadresse +} + +type DoedfoedtBarn { + dato: Date + folkeregistermetadata: Folkeregistermetadata! + metadata: Metadata! +} + +type Doedsfall { + doedsdato: Date + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +" Endring som har blitt utført på opplysningen. F.eks: Opprett -> Korriger -> Korriger" +type Endring { + hendelseId: String! + """ + + Opphavet til informasjonen. I NAV blir dette satt i forbindelse med registrering (f.eks: Sykehuskassan). + Fra Folkeregisteret får vi opphaven til dems opplysning, altså NAV, UDI, Politiet, Skatteetaten o.l.. Fra Folkeregisteret kan det også være tekniske navn som: DSF_MIGRERING, m.m.. + """ + kilde: String! + " Tidspunktet for registrering." + registrert: DateTime! + " Hvem endringen har blitt utført av, ofte saksbehandler (f.eks Z990200), men kan også være system (f.eks srvXXXX). Denne blir satt til \"Folkeregisteret\" for det vi får fra dem." + registrertAv: String! + " Hvilke system endringen har kommet fra (f.eks srvXXX). Denne blir satt til \"FREG\" for det vi får fra Folkeregisteret." + systemkilde: String! + " Hvilke type endring som har blitt utført." + type: Endringstype! +} + +type FalskIdentitet { + erFalsk: Boolean! + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + rettIdentitetErUkjent: Boolean + rettIdentitetVedIdentifikasjonsnummer: String + rettIdentitetVedOpplysninger: FalskIdentitetIdentifiserendeInformasjon +} + +type FalskIdentitetIdentifiserendeInformasjon { + foedselsdato: Date + kjoenn: KjoennType + personnavn: Personnavn! + statsborgerskap: [String!]! +} + +type Foedested { + foedekommune: String + foedeland: String + foedested: String + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +type Foedsel { + foedekommune: String + foedeland: String + foedested: String + foedselsaar: Int + foedselsdato: Date + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +type Foedselsdato { + foedselsaar: Int + foedselsdato: Date + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +type Folkeregisteridentifikator { + folkeregistermetadata: Folkeregistermetadata! + identifikasjonsnummer: String! + metadata: Metadata! + status: String! + type: String! +} + +type Folkeregistermetadata { + aarsak: String + ajourholdstidspunkt: DateTime + gyldighetstidspunkt: DateTime + kilde: String + opphoerstidspunkt: DateTime + sekvens: Int +} + +type Folkeregisterpersonstatus { + folkeregistermetadata: Folkeregistermetadata! + forenkletStatus: String! + metadata: Metadata! + status: String! +} + +type ForelderBarnRelasjon { + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + minRolleForPerson: ForelderBarnRelasjonRolle + relatertPersonUtenFolkeregisteridentifikator: RelatertBiPerson + relatertPersonsIdent: String + relatertPersonsRolle: ForelderBarnRelasjonRolle! +} + +type Foreldreansvar { + ansvar: String + ansvarlig: String + ansvarligUtenIdentifikator: RelatertBiPerson + ansvarssubjekt: String + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +type Fullmakt { + gyldigFraOgMed: Date! + gyldigTilOgMed: Date! + metadata: Metadata! + motpartsPersonident: String! + motpartsRolle: FullmaktsRolle! + omraader: [String!]! +} + +type GeografiskTilknytning { + gtBydel: String + gtKommune: String + gtLand: String + gtType: GtType! + regel: String! +} + +type HentIdenterBolkResult { + code: String! + ident: String! + identer: [IdentInformasjon!] +} + +type HentPersonBolkResult { + code: String! + ident: String! + person: Person +} + +type IdentInformasjon { + gruppe: IdentGruppe! + historisk: Boolean! + ident: String! +} + +type IdentifiserendeInformasjon { + foedselsdato: Date + kjoenn: String + navn: Personnavn + statsborgerskap: [String!] +} + +type Identitetsgrunnlag { + folkeregistermetadata: Folkeregistermetadata! + metadata: Metadata! + status: Identitetsgrunnlagsstatus! +} + +type Identliste { + identer: [IdentInformasjon!]! +} + +type InnflyttingTilNorge { + folkeregistermetadata: Folkeregistermetadata + fraflyttingsland: String + fraflyttingsstedIUtlandet: String + metadata: Metadata! +} + +type KartverketAdresse { + id: Long! + matrikkeladresse: KartverketMatrikkeladresse + vegadresse: KartverketVegadresse +} + +type KartverketBydel { + bydelsnavn: String + bydelsnummer: String +} + +type KartverketFylke { + navn: String + nummer: String +} + +type KartverketGrunnkrets { + grunnkretsnavn: String + grunnkretsnummer: String +} + +type KartverketKommune { + fylke: KartverketFylke + navn: String + nummer: String +} + +type KartverketMatrikkeladresse { + adressetilleggsnavn: String + bydel: KartverketBydel + grunnkrets: KartverketGrunnkrets + kortnavn: String + matrikkelnummer: KartverketMatrikkelnummer + postnummeromraade: KartverketPostnummeromraade + representasjonspunkt: KartverketRepresentasjonspunkt + undernummer: Int +} + +type KartverketMatrikkelnummer { + bruksnummer: Int + festenummer: Int + gaardsnummer: Int + kommunenummer: String + seksjonsnummer: Int +} + +type KartverketPostnummeromraade { + postnummer: String + poststed: String +} + +type KartverketRepresentasjonspunkt { + posisjonskvalitet: Int + x: Float + y: Float + z: Float +} + +type KartverketVeg { + adressekode: Int + adressenavn: String + kommune: KartverketKommune + kortnavn: String + stedsnummer: String +} + +type KartverketVegadresse { + adressetilleggsnavn: String + bokstav: String + bydel: KartverketBydel + grunnkrets: KartverketGrunnkrets + kortnavn: String + nummer: Int + postnummeromraade: KartverketPostnummeromraade + representasjonspunkt: KartverketRepresentasjonspunkt + veg: KartverketVeg +} + +type Kjoenn { + folkeregistermetadata: Folkeregistermetadata + kjoenn: KjoennType + metadata: Metadata! +} + +type Kontaktadresse { + coAdressenavn: String + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: DateTime + gyldigTilOgMed: DateTime + metadata: Metadata! + postadresseIFrittFormat: PostadresseIFrittFormat + postboksadresse: Postboksadresse + type: KontaktadresseType! + utenlandskAdresse: UtenlandskAdresse + utenlandskAdresseIFrittFormat: UtenlandskAdresseIFrittFormat + vegadresse: Vegadresse +} + +type KontaktinformasjonForDoedsbo { + adresse: KontaktinformasjonForDoedsboAdresse! + advokatSomKontakt: KontaktinformasjonForDoedsboAdvokatSomKontakt + attestutstedelsesdato: Date! + folkeregistermetadata: Folkeregistermetadata! + metadata: Metadata! + organisasjonSomKontakt: KontaktinformasjonForDoedsboOrganisasjonSomKontakt + personSomKontakt: KontaktinformasjonForDoedsboPersonSomKontakt + skifteform: KontaktinformasjonForDoedsboSkifteform! +} + +type KontaktinformasjonForDoedsboAdresse { + adresselinje1: String! + adresselinje2: String + landkode: String + postnummer: String! + poststedsnavn: String! +} + +type KontaktinformasjonForDoedsboAdvokatSomKontakt { + organisasjonsnavn: String + organisasjonsnummer: String + personnavn: Personnavn! +} + +type KontaktinformasjonForDoedsboOrganisasjonSomKontakt { + kontaktperson: Personnavn + organisasjonsnavn: String! + organisasjonsnummer: String +} + +type KontaktinformasjonForDoedsboPersonSomKontakt { + foedselsdato: Date + identifikasjonsnummer: String + personnavn: Personnavn +} + +type Koordinater { + kvalitet: Int + x: Float + y: Float + z: Float +} + +type Matrikkeladresse { + bruksenhetsnummer: String + kommunenummer: String + koordinater: Koordinater + matrikkelId: Long + postnummer: String + tilleggsnavn: String +} + +type MatrikkeladresseResult { + bruksnummer: String + gaardsnummer: String + kommunenummer: String + matrikkelId: String + postnummer: String + poststed: String + tilleggsnavn: String +} + +type Metadata { + """ + + En liste over alle endringer som har blitt utført over tid. + Vær obs på at denne kan endre seg og man burde takle at det finnes flere korrigeringer i listen, så dersom man ønsker å kun vise den siste, så må man selv filtrere ut dette. + Det kan også ved svært få tilfeller skje at opprett blir fjernet. F.eks ved splitt tilfeller av identer. Dette skal skje i svært få tilfeller. Dersom man ønsker å presentere opprettet tidspunktet, så blir det tidspunktet på den første endringen. + """ + endringer: [Endring!]! + """ + + Feltet betegner hvorvidt dette er en funksjonelt historisk opplysning, for eksempel en tidligere fraflyttet adresse eller et foreldreansvar som er utløpt fordi barnet har fylt 18 år. + I de fleste tilfeller kan dette utledes ved å se på de andre feltene i opplysningen. Dette er imidlertid ikke alltid tilfellet, blant annet for foreldreansvar. + Feltet bør brukes av konsumenter som henter informasjon fra GraphQL med historikk, men som også trenger å utlede gjeldende informasjon. + """ + historisk: Boolean! + " Master refererer til hvem som eier opplysningen, f.eks så har PDL en kopi av Folkeregisteret, da vil master være FREG og eventuelle endringer på dette må gå via Folkeregisteret (API mot dem eller andre rutiner)." + master: String! + """ + + I PDL så får alle forekomster av en opplysning en ID som representerer dens unike forekomst. + F.eks, så vil en Opprett ha ID X, korriger ID Y (der hvor den spesifiserer at den korrigerer X). + Dersom en opplysning ikke er lagret i PDL, så vil denne verdien ikke være utfylt. + """ + opplysningsId: String +} + +type Navn { + etternavn: String! + folkeregistermetadata: Folkeregistermetadata + forkortetNavn: String @deprecated(reason: "No longer supported") + fornavn: String! + gyldigFraOgMed: Date + mellomnavn: String + metadata: Metadata! + originaltNavn: OriginaltNavn +} + +type Opphold { + folkeregistermetadata: Folkeregistermetadata! + metadata: Metadata! + oppholdFra: Date + oppholdTil: Date + type: Oppholdstillatelse! +} + +type Oppholdsadresse { + coAdressenavn: String + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: DateTime + gyldigTilOgMed: DateTime + matrikkeladresse: Matrikkeladresse + metadata: Metadata! + oppholdAnnetSted: String + utenlandskAdresse: UtenlandskAdresse + vegadresse: Vegadresse +} + +type OriginaltNavn { + etternavn: String + fornavn: String + mellomnavn: String +} + +type Person { + adressebeskyttelse(historikk: Boolean = false): [Adressebeskyttelse!]! + bostedsadresse(historikk: Boolean = false): [Bostedsadresse!]! + deltBosted(historikk: Boolean = false): [DeltBosted!]! + doedfoedtBarn: [DoedfoedtBarn!]! + doedsfall: [Doedsfall!]! + falskIdentitet: FalskIdentitet + foedested: [Foedested!]! + foedsel: [Foedsel!]! @deprecated(reason: "Erstattet av foedselsdato & foedested") + foedselsdato: [Foedselsdato!]! + folkeregisteridentifikator(historikk: Boolean = false): [Folkeregisteridentifikator!]! + folkeregisterpersonstatus(historikk: Boolean = false): [Folkeregisterpersonstatus!]! + forelderBarnRelasjon: [ForelderBarnRelasjon!]! + foreldreansvar(historikk: Boolean = false): [Foreldreansvar!]! + fullmakt(historikk: Boolean = false): [Fullmakt!]! + identitetsgrunnlag(historikk: Boolean = false): [Identitetsgrunnlag!]! + innflyttingTilNorge: [InnflyttingTilNorge!]! + kjoenn(historikk: Boolean = false): [Kjoenn!]! + kontaktadresse(historikk: Boolean = false): [Kontaktadresse!]! + kontaktinformasjonForDoedsbo(historikk: Boolean = false): [KontaktinformasjonForDoedsbo!]! + navn(historikk: Boolean = false): [Navn!]! + opphold(historikk: Boolean = false): [Opphold!]! + oppholdsadresse(historikk: Boolean = false): [Oppholdsadresse!]! + rettsligHandleevne(historikk: Boolean = false): [RettsligHandleevne!]! + sikkerhetstiltak: [Sikkerhetstiltak!]! + sivilstand(historikk: Boolean = false): [Sivilstand!]! + statsborgerskap(historikk: Boolean = false): [Statsborgerskap!]! + telefonnummer(historikk: Boolean = false): [Telefonnummer!]! + tilrettelagtKommunikasjon: [TilrettelagtKommunikasjon!]! + utenlandskIdentifikasjonsnummer(historikk: Boolean = false): [UtenlandskIdentifikasjonsnummer!]! + utflyttingFraNorge: [UtflyttingFraNorge!]! + vergemaalEllerFremtidsfullmakt(historikk: Boolean = false): [VergemaalEllerFremtidsfullmakt!]! +} + +type PersonSearchHighlight { + " Forteller hvorvidt opplysningen som ga treff er markert som historisk." + historisk: Boolean + """ + + liste med feltene og verdiene som ga treff. + Merk at for fritekst søk så vil disse kunne referere til hjelpe felter som ikke er synelig i resultatene. + """ + matches: [SearchMatch] + """ + + Navn/Sti til opplysningen som ga treff. Merk at dette ikke er feltet som ga treff men opplysningen. + F.eks. hvis du søker på person.navn.fornavn så vil opplysingen være person.navn. + """ + opplysning: String + """ + + Gitt att opplysningen som ga treff har en opplysningsId så vil den returneres her. + alle søk under person skal ha opplysningsId, men søk i identer vil kunne returnere treff uten opplysningsId. + """ + opplysningsId: String +} + +type PersonSearchHit { + " Infromasjon om hva som ga treff i søke resultatet." + highlights: [PersonSearchHighlight] + " forespurte data" + identer(historikk: Boolean = false): [IdentInformasjon!]! + " forespurte data" + person: Person + " Poengsummen elasticsearch har gitt dette resultatet (brukt til feilsøking, og tuning av søk)" + score: Float +} + +type PersonSearchResult { + " treff liste" + hits: [PersonSearchHit!]! + " Side nummer for siden som vises" + pageNumber: Int + " Totalt antall treff (øvre grense er satt til 10 000)" + totalHits: Int + " Totalt antall sider" + totalPages: Int +} + +type Personnavn { + etternavn: String! + fornavn: String! + mellomnavn: String +} + +type PostadresseIFrittFormat { + adresselinje1: String + adresselinje2: String + adresselinje3: String + postnummer: String +} + +type Postboksadresse { + postboks: String! + postbokseier: String + postnummer: String +} + +type Query { + forslagAdresse(parameters: CompletionParameters): AdresseCompletionResult + hentAdresse(matrikkelId: ID!): KartverketAdresse + hentGeografiskTilknytning(ident: ID!): GeografiskTilknytning + hentGeografiskTilknytningBolk(identer: [ID!]!): [hentGeografiskTilknytningBolkResult!]! + hentIdenter(grupper: [IdentGruppe!], historikk: Boolean = false, ident: ID!): Identliste + hentIdenterBolk(grupper: [IdentGruppe!], historikk: Boolean = false, identer: [ID!]!): [HentIdenterBolkResult!]! + hentPerson(ident: ID!): Person + hentPersonBolk(identer: [ID!]!): [HentPersonBolkResult!]! + sokAdresse(criteria: [Criterion], paging: Paging): AdresseSearchResult + sokPerson(criteria: [Criterion], paging: Paging): PersonSearchResult +} + +type RelatertBiPerson { + foedselsdato: Date + kjoenn: KjoennType + navn: Personnavn + statsborgerskap: String +} + +type RettsligHandleevne { + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + rettsligHandleevneomfang: String +} + +type SearchMatch { + " feltnavn med sti til feltet so ga treff." + field: String! + " Verdien som ga treff" + fragments: [String] + type: String +} + +type Sikkerhetstiltak { + beskrivelse: String! + gyldigFraOgMed: Date! + gyldigTilOgMed: Date! + kontaktperson: SikkerhetstiltakKontaktperson + metadata: Metadata! + tiltakstype: String! +} + +type SikkerhetstiltakKontaktperson { + enhet: String! + personident: String! +} + +type Sivilstand { + bekreftelsesdato: Date + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: Date + metadata: Metadata! + relatertVedSivilstand: String + type: Sivilstandstype! +} + +type Statsborgerskap { + bekreftelsesdato: Date + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: Date + gyldigTilOgMed: Date + land: String! + metadata: Metadata! +} + +type Telefonnummer { + landskode: String! + metadata: Metadata! + nummer: String! + prioritet: Int! +} + +type TilrettelagtKommunikasjon { + metadata: Metadata! + talespraaktolk: Tolk + tegnspraaktolk: Tolk +} + +type Tjenesteomraade { + tjenesteoppgave: String + tjenestevirksomhet: String +} + +type Tolk { + spraak: String +} + +type UkjentBosted { + bostedskommune: String +} + +type UtenlandskAdresse { + adressenavnNummer: String + bySted: String + bygningEtasjeLeilighet: String + landkode: String! + postboksNummerNavn: String + postkode: String + regionDistriktOmraade: String +} + +type UtenlandskAdresseIFrittFormat { + adresselinje1: String + adresselinje2: String + adresselinje3: String + byEllerStedsnavn: String + landkode: String! + postkode: String +} + +type UtenlandskIdentifikasjonsnummer { + folkeregistermetadata: Folkeregistermetadata + identifikasjonsnummer: String! + metadata: Metadata! + opphoert: Boolean! + utstederland: String! +} + +type UtflyttingFraNorge { + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + tilflyttingsland: String + tilflyttingsstedIUtlandet: String + utflyttingsdato: Date +} + +type Vegadresse { + adressenavn: String + bruksenhetsnummer: String + bydelsnummer: String + husbokstav: String + husnummer: String + kommunenummer: String + koordinater: Koordinater + matrikkelId: Long + postnummer: String + tilleggsnavn: String +} + +type VegadresseResult { + adressekode: String + adressenavn: String + bydelsnavn: String + bydelsnummer: String + fylkesnavn: String + fylkesnummer: String + husbokstav: String + husnummer: Int + kommunenavn: String + kommunenummer: String + matrikkelId: String + postnummer: String + poststed: String + tilleggsnavn: String +} + +type VergeEllerFullmektig { + identifiserendeInformasjon: IdentifiserendeInformasjon + motpartsPersonident: String + navn: Personnavn @deprecated(reason: "Erstattes av navn iidentifiserendeInformasjon") + omfang: String + omfangetErInnenPersonligOmraade: Boolean + tjenesteomraade: [Tjenesteomraade!] +} + +type VergemaalEllerFremtidsfullmakt { + embete: String + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + type: String + vergeEllerFullmektig: VergeEllerFullmektig! +} + +type hentGeografiskTilknytningBolkResult { + code: String! + geografiskTilknytning: GeografiskTilknytning + ident: String! +} + +enum AdressebeskyttelseGradering { + FORTROLIG + STRENGT_FORTROLIG + STRENGT_FORTROLIG_UTLAND + UGRADERT +} + +enum Direction { + ASC + DESC +} + +enum Endringstype { + KORRIGER + OPPHOER + OPPRETT +} + +enum Familierelasjonsrolle { + BARN + FAR + MEDMOR + MOR +} + +enum ForelderBarnRelasjonRolle { + BARN + FAR + MEDMOR + MOR +} + +enum FullmaktsRolle { + FULLMAKTSGIVER + FULLMEKTIG +} + +enum GtType { + BYDEL + KOMMUNE + UDEFINERT + UTLAND +} + +enum IdentGruppe { + AKTORID + FOLKEREGISTERIDENT + NPID +} + +enum Identitetsgrunnlagsstatus { + IKKE_KONTROLLERT + INGEN_STATUS + KONTROLLERT +} + +enum KjoennType { + KVINNE + MANN + UKJENT +} + +enum KontaktadresseType { + Innland + Utland +} + +enum KontaktinformasjonForDoedsboSkifteform { + ANNET + OFFENTLIG +} + +enum Oppholdstillatelse { + MIDLERTIDIG + OPPLYSNING_MANGLER + PERMANENT +} + +enum Sivilstandstype { + ENKE_ELLER_ENKEMANN + GIFT + GJENLEVENDE_PARTNER + REGISTRERT_PARTNER + SEPARERT + SEPARERT_PARTNER + SKILT + SKILT_PARTNER + UGIFT + UOPPGITT +} + +"Format: YYYY-MM-DD (ISO-8601), example: 2017-11-24" +scalar Date + +"Format: YYYY-MM-DDTHH:mm:SS (ISO-8601), example: 2011-12-03T10:15:30" +scalar DateTime + +"A 64-bit signed integer" +scalar Long + +input CompletionFieldValue { + fieldName: String! + fieldValue: String +} + +input CompletionParameters { + completionField: String! + fieldValues: [CompletionFieldValue]! + maxSuggestions: Int +} + +input Criterion { + and: [Criterion] + " Feltnavn inkludert sti til ønsket felt (Eksempel: person.navn.fornavn)" + fieldName: String + not: [Criterion] + or: [Criterion] + """ + + Søk i historiske data + true = søker kun i historiske data. + false = søker kun i gjeldende data. + null = søke i både historiske og gjeldende data. + """ + searchHistorical: Boolean + searchRule: SearchRule +} + +input Paging { + " Hvilken side i resultatsettet man ønsker vist." + pageNumber: Int = 1 + " antall treff per side (maks 100)" + resultsPerPage: Int = 10 + """ + + Liste over felter man ønsker resultatene sortert etter + Standard er "score". Score er poengsummen Elasticsearch tildeler hvert resultat. + """ + sortBy: [SearchSorting] +} + +input SearchRule { + " Brukes til søke etter datoer som kommer etter opgitt dato." + after: String + " Brukes til søke etter datoer som kommer før opgitt dato." + before: String + " Boost brukes til å gi ett søkekriterie høyere eller lavere vektlegging en de andre søke kriteriene." + boost: Float + " [Flag] Kan brukes til å overstyre standard oppførsellen for søk i felter (standard er case insensitive)" + caseSensitive: Boolean + " Gir treff når opgitt felt inneholder en eller flere ord fra input verdien." + contains: String + " [Flag] Brukes til å deaktivere fonetisk søk feltene som har dette som standard (Navn)" + disablePhonetic: Boolean + " Begrenser treff til kun de hvor felt har input verdi" + equals: String + " Sjekker om feltet finnes / at det ikke har en null verdi." + exists: String + """ + + Søk fra og med (se fromExcluding for bare fra men ikke med) + kan benyttes på tall og dato + """ + from: String + """ + + Søk fra men ikke med oppgitt verdi + kan benyttes på tall og dato + """ + fromExcluding: String + " Søk som gir treff også for små variasjoner i skrivemåte" + fuzzy: String + " Brukes til å søke i tall og finner verdier som er størren en input verdi." + greaterThan: String + " Brukes til å søke i tall og finner verdier som er mindre en input verdi." + lessThan: String + " Filtrerer bort treff hvor felt inneholder input verdi" + notEquals: String + " Søk som gir tilfeldig poengsum til hvert treff (kun ment til generering av testdata)" + random: String + " Regex søk for spesielle situasjoner (Dette er en treg opprasjon og bør ikke brukes)" + regex: String + " Gir treff når opgitt feltstarter med opgitt verdi." + startsWith: String + """ + + Søk til og med (se toExcluding for bare til men ikke med) + kan benyttes på tall og dato + """ + to: String + """ + + Søk til men ikke med oppgitt verdi + kan benyttes på tall og dato + """ + toExcluding: String + " Bruk \"?\" som wildcard for enkelt tegn, og \"*\" som wildcard for 0 eller flere tegn." + wildcard: String +} + +input SearchSorting { + direction: Direction! + " Feltnavn ikludert sti til ønsket felt (eksepmel: person.navn.fornavn)" + fieldName: String! +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlHentIdent.graphql b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlHentIdent.graphql new file mode 100644 index 00000000000..3e4345f18b8 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlHentIdent.graphql @@ -0,0 +1,9 @@ +query ($ident: ID!) { + hentIdenter(ident: $ident, historikk: true, grupper: [AKTORID, FOLKEREGISTERIDENT, NPID]) { + identer { + ident, + historisk, + gruppe + } + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPerson2Query.graphql b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPerson2Query.graphql new file mode 100644 index 00000000000..3707c0c0ca1 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPerson2Query.graphql @@ -0,0 +1,596 @@ +fragment folkeregistermetadataDetails on Folkeregistermetadata { + aarsak + ajourholdstidspunkt + gyldighetstidspunkt + kilde + opphoerstidspunkt + sekvens +} + +fragment metadataDetails on Metadata { + endringer { + kilde + registrert + registrertAv + systemkilde + type + hendelseId + } + historisk + master + opplysningsId +} + +query($ident: ID!, $historikk: Boolean!) { + hentIdenter(ident: $ident, historikk: true) { + identer { + ident, + historisk, + gruppe + } + } + hentGeografiskTilknytning(ident: $ident) { + gtType, + gtLand, + gtKommune, + gtBydel, + regel + } + hentPerson(ident: $ident) { + falskIdentitet { + erFalsk, + rettIdentitetErUkjent, + rettIdentitetVedIdentifikasjonsnummer, + rettIdentitetVedOpplysninger { + personnavn { + fornavn, + mellomnavn, + etternavn + } + foedselsdato, + statsborgerskap, + kjoenn + }, + metadata { + ...metadataDetails + } + }, + bostedsadresse(historikk: $historikk) { + angittFlyttedato, + coAdressenavn, + gyldigFraOgMed, + gyldigTilOgMed, + vegadresse { + matrikkelId, + husbokstav, + husnummer, + adressenavn, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + matrikkeladresse { + matrikkelId, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + koordinater { + x, + y, + z + kvalitet + } + }, + ukjentBosted { + bostedskommune + }, + utenlandskAdresse { + adressenavnNummer, + bygningEtasjeLeilighet, + postboksNummerNavn, + postkode, + bySted, + regionDistriktOmraade, + landkode + } + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + oppholdsadresse(historikk: $historikk) { + utenlandskAdresse { + adressenavnNummer, + bygningEtasjeLeilighet, + postboksNummerNavn, + postkode, + bySted, + regionDistriktOmraade, + landkode + }, + vegadresse { + matrikkelId, + husbokstav, + husnummer, + adressenavn, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + matrikkeladresse { + matrikkelId, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + koordinater { + x, + y, + z + kvalitet + } + }, + oppholdAnnetSted, + coAdressenavn, + gyldigFraOgMed, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + } + deltBosted(historikk: $historikk) { + startdatoForKontrakt, + sluttdatoForKontrakt, + coAdressenavn, + vegadresse { + matrikkelId, + adressenavn, + husnummer, + husbokstav, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + matrikkeladresse { + matrikkelId, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + koordinater { + x, + y, + z + kvalitet + } + }, + ukjentBosted { + bostedskommune + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + forelderBarnRelasjon { + relatertPersonsIdent, + relatertPersonsRolle, + minRolleForPerson, + relatertPersonUtenFolkeregisteridentifikator { + navn { + fornavn, + mellomnavn, + etternavn + }, + foedselsdato, + kjoenn + statsborgerskap + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + kontaktadresse(historikk: $historikk) { + gyldigFraOgMed, + gyldigTilOgMed, + type, + coAdressenavn, + postboksadresse { + postbokseier, + postboks, + postnummer + }, + vegadresse { + matrikkelId, + husbokstav, + husnummer, + adressenavn, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + postadresseIFrittFormat { + adresselinje1, + adresselinje2, + adresselinje3, + postnummer + }, + utenlandskAdresse { + adressenavnNummer, + bygningEtasjeLeilighet, + postboksNummerNavn, + postkode, + bySted, + regionDistriktOmraade, + landkode + }, + utenlandskAdresseIFrittFormat { + adresselinje1, + adresselinje2, + adresselinje3, + postkode, + byEllerStedsnavn, + landkode + } + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + kontaktinformasjonForDoedsbo(historikk: $historikk) { + skifteform, + attestutstedelsesdato, + folkeregistermetadata { + ajourholdstidspunkt, + gyldighetstidspunkt, + opphoerstidspunkt, + aarsak, + kilde + } + personSomKontakt { + foedselsdato, + personnavn { + fornavn, + mellomnavn, + etternavn + }, + identifikasjonsnummer + }, + advokatSomKontakt { + personnavn { + fornavn, + mellomnavn, + etternavn + }, + organisasjonsnavn, + organisasjonsnummer + }, + organisasjonSomKontakt { + kontaktperson { + fornavn, + mellomnavn, + etternavn + }, + organisasjonsnavn, + organisasjonsnummer + }, + adresse { + adresselinje1, + adresselinje2, + poststedsnavn, + postnummer, + landkode + }, + metadata { + ...metadataDetails + } + }, + utenlandskIdentifikasjonsnummer(historikk: $historikk) { + identifikasjonsnummer, + utstederland, + opphoert, + metadata { + ...metadataDetails + } + }, + adressebeskyttelse(historikk: $historikk) { + gradering, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foedsel { + foedselsaar, + foedselsdato, + foedeland, + foedested, + foedekommune, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foedested { + foedested, + foedekommune, + foedeland, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foedselsdato { + foedselsdato, + foedselsaar, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + } + doedfoedtBarn{ + dato, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + doedsfall { + doedsdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + kjoenn(historikk: $historikk) { + kjoenn, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + navn(historikk: $historikk) { + fornavn, + mellomnavn, + etternavn, + forkortetNavn, + originaltNavn { + fornavn, + mellomnavn, + etternavn + }, + gyldigFraOgMed, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + folkeregisterpersonstatus(historikk: $historikk) { + status, + forenkletStatus, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + identitetsgrunnlag(historikk: $historikk) { + status, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + tilrettelagtKommunikasjon { + talespraaktolk { + spraak + }, + tegnspraaktolk { + spraak + } + metadata { + ...metadataDetails + } + }, + fullmakt(historikk: $historikk) { + motpartsPersonident, + motpartsRolle, + omraader, + gyldigFraOgMed, + gyldigTilOgMed, + metadata { + ...metadataDetails + } + }, + folkeregisteridentifikator(historikk: $historikk) { + identifikasjonsnummer, + status, + type, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + statsborgerskap(historikk: $historikk) { + land, + gyldigFraOgMed, + gyldigTilOgMed, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + sikkerhetstiltak { + tiltakstype, + beskrivelse, + kontaktperson { + personident, + enhet + } + gyldigFraOgMed, + gyldigTilOgMed, + metadata { + ...metadataDetails + } + }, + opphold(historikk: $historikk) { + type, + oppholdFra, + oppholdTil, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + sivilstand(historikk: $historikk) { + type, + gyldigFraOgMed, + relatertVedSivilstand, + bekreftelsesdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + telefonnummer { + landskode, + nummer, + prioritet, + metadata { + ...metadataDetails + } + }, + innflyttingTilNorge { + fraflyttingsland, + fraflyttingsstedIUtlandet, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + utflyttingFraNorge { + tilflyttingsland, + tilflyttingsstedIUtlandet, + utflyttingsdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + vergemaalEllerFremtidsfullmakt(historikk: $historikk) { + type, + embete, + vergeEllerFullmektig { + navn { + fornavn, + mellomnavn, + etternavn + }, + motpartsPersonident, + omfang, + omfangetErInnenPersonligOmraade + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + foreldreansvar(historikk: $historikk) { + ansvar, + ansvarlig, + ansvarligUtenIdentifikator { + navn { + fornavn, + mellomnavn, + etternavn + }, + foedselsdato, + statsborgerskap, + kjoenn + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + } + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPersonQuery.graphql b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPersonQuery.graphql new file mode 100644 index 00000000000..cac59339c69 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPersonQuery.graphql @@ -0,0 +1,32 @@ + +query($ident1: ID!) { + hentPerson(ident: $ident1) { + navn { + metadata { + opplysningsId + } + } + foedsel { + metadata { + opplysningsId + } + } + kjoenn { + metadata { + opplysningsId + } + } + folkeregisterpersonstatus { + metadata { + opplysningsId + } + } + }, + hentIdenter(ident: $ident1, historikk: true, grupper: [AKTORID, FOLKEREGISTERIDENT, NPID]) { + identer { + ident, + historisk, + gruppe + } + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlQuery.graphql b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlQuery.graphql new file mode 100644 index 00000000000..0d940372b26 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlQuery.graphql @@ -0,0 +1,29 @@ +fragment vegadresseDetails on Vegadresse { + husnummer + adressenavn + postnummer + kommunenummer +} + +query ($ident: ID!, $historikk: Boolean) { + hentPerson(ident: $ident) { + navn(historikk: $historikk) { + fornavn, + mellomnavn, + etternavn + }, + bostedsadresse(historikk: $historikk) { + vegadresse { + ...vegadresseDetails + } + }, + foedsel { + foedselsdato + }, + folkeregisteridentifikator(historikk: $historikk) { + identifikasjonsnummer, + status, + type + } + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlbolkquery.graphql b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlbolkquery.graphql new file mode 100644 index 00000000000..054a824a9ed --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlbolkquery.graphql @@ -0,0 +1,617 @@ +fragment folkeregistermetadataDetails on Folkeregistermetadata { + aarsak + ajourholdstidspunkt + gyldighetstidspunkt + kilde + opphoerstidspunkt + sekvens +} + +fragment metadataDetails on Metadata { + endringer { + kilde + registrert + registrertAv + systemkilde + type + } + historisk + master + opplysningsId +} + +query($identer: [ID!]!) { + hentIdenterBolk(identer: $identer, historikk: true) { + ident, + identer { + ident, + gruppe, + historisk + }, + code + } + hentGeografiskTilknytningBolk(identer: $identer) { + ident, + geografiskTilknytning { + gtType, + gtLand, + gtKommune, + gtBydel, + regel + } + code + }, + hentPersonBolk(identer: $identer) { + ident, + person { + falskIdentitet { + erFalsk, + rettIdentitetErUkjent, + rettIdentitetVedIdentifikasjonsnummer, + rettIdentitetVedOpplysninger { + personnavn { + fornavn, + mellomnavn, + etternavn + } + foedselsdato, + statsborgerskap, + kjoenn + }, + metadata { + ...metadataDetails + } + }, + bostedsadresse(historikk: true) { + angittFlyttedato, + coAdressenavn, + gyldigFraOgMed, + gyldigTilOgMed, + vegadresse { + matrikkelId, + husbokstav, + husnummer, + adressenavn, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + matrikkeladresse { + matrikkelId, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + koordinater { + x, + y, + z + kvalitet + } + }, + ukjentBosted { + bostedskommune + }, + utenlandskAdresse { + adressenavnNummer, + bygningEtasjeLeilighet, + postboksNummerNavn, + postkode, + bySted, + regionDistriktOmraade, + landkode + } + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + oppholdsadresse(historikk: true) { + utenlandskAdresse { + adressenavnNummer, + bygningEtasjeLeilighet, + postboksNummerNavn, + postkode, + bySted, + regionDistriktOmraade, + landkode + }, + vegadresse { + matrikkelId, + husbokstav, + husnummer, + adressenavn, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + matrikkeladresse { + matrikkelId, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + koordinater { + x, + y, + z + kvalitet + } + }, + oppholdAnnetSted, + coAdressenavn, + gyldigFraOgMed, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + } + deltBosted(historikk: true) { + startdatoForKontrakt, + sluttdatoForKontrakt, + coAdressenavn, + vegadresse { + matrikkelId, + adressenavn, + husnummer, + husbokstav, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + matrikkeladresse { + matrikkelId, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + koordinater { + x, + y, + z + kvalitet + } + }, + ukjentBosted { + bostedskommune + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + forelderBarnRelasjon { + relatertPersonsIdent, + relatertPersonsRolle, + minRolleForPerson, + relatertPersonUtenFolkeregisteridentifikator { + navn { + fornavn, + mellomnavn, + etternavn + }, + foedselsdato, + kjoenn + statsborgerskap + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + kontaktadresse(historikk: true) { + gyldigFraOgMed, + gyldigTilOgMed, + type, + coAdressenavn, + postboksadresse { + postbokseier, + postboks, + postnummer + }, + vegadresse { + matrikkelId, + husbokstav, + husnummer, + adressenavn, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + postadresseIFrittFormat { + adresselinje1, + adresselinje2, + adresselinje3, + postnummer + }, + utenlandskAdresse { + adressenavnNummer, + bygningEtasjeLeilighet, + postboksNummerNavn, + postkode, + bySted, + regionDistriktOmraade, + landkode + }, + utenlandskAdresseIFrittFormat { + adresselinje1, + adresselinje2, + adresselinje3, + postkode, + byEllerStedsnavn, + landkode + } + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + kontaktinformasjonForDoedsbo(historikk: true) { + skifteform, + attestutstedelsesdato, + folkeregistermetadata { + ajourholdstidspunkt, + gyldighetstidspunkt, + opphoerstidspunkt, + aarsak, + kilde + } + personSomKontakt { + foedselsdato, + personnavn { + fornavn, + mellomnavn, + etternavn + }, + identifikasjonsnummer + }, + advokatSomKontakt { + personnavn { + fornavn, + mellomnavn, + etternavn + }, + organisasjonsnavn, + organisasjonsnummer + }, + organisasjonSomKontakt { + kontaktperson { + fornavn, + mellomnavn, + etternavn + }, + organisasjonsnavn, + organisasjonsnummer + }, + adresse { + adresselinje1, + adresselinje2, + poststedsnavn, + postnummer, + landkode + }, + metadata { + ...metadataDetails + } + }, + utenlandskIdentifikasjonsnummer(historikk: true) { + identifikasjonsnummer, + utstederland, + opphoert, + metadata { + ...metadataDetails + } + }, + adressebeskyttelse(historikk: true) { + gradering, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foedsel { + foedselsaar, + foedselsdato, + foedeland, + foedested, + foedekommune, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foedselsdato { + foedselsaar, + foedselsdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foedested { + foedested, + foedekommune, + foedeland, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + doedfoedtBarn{ + dato, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + doedsfall { + doedsdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + kjoenn(historikk: true) { + kjoenn, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + navn(historikk: true) { + fornavn, + mellomnavn, + etternavn, + forkortetNavn, + originaltNavn { + fornavn, + mellomnavn, + etternavn + }, + gyldigFraOgMed, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + folkeregisterpersonstatus(historikk: true) { + status, + forenkletStatus, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + identitetsgrunnlag(historikk: true) { + status, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + tilrettelagtKommunikasjon { + talespraaktolk { + spraak + }, + tegnspraaktolk { + spraak + } + metadata { + ...metadataDetails + } + }, + fullmakt(historikk: true) { + motpartsPersonident, + motpartsRolle, + omraader, + gyldigFraOgMed, + gyldigTilOgMed, + metadata { + ...metadataDetails + } + }, + folkeregisteridentifikator(historikk: true) { + identifikasjonsnummer, + status, + type, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + statsborgerskap(historikk: true) { + land, + gyldigFraOgMed, + gyldigTilOgMed, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + sikkerhetstiltak { + tiltakstype, + beskrivelse, + kontaktperson { + personident, + enhet + } + gyldigFraOgMed, + gyldigTilOgMed, + metadata { + ...metadataDetails + } + }, + opphold(historikk: true) { + type, + oppholdFra, + oppholdTil, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + sivilstand(historikk: true) { + type, + gyldigFraOgMed, + relatertVedSivilstand, + bekreftelsesdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + telefonnummer { + landskode, + nummer, + prioritet, + metadata { + ...metadataDetails + } + }, + innflyttingTilNorge { + fraflyttingsland, + fraflyttingsstedIUtlandet, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + utflyttingFraNorge { + tilflyttingsland, + tilflyttingsstedIUtlandet, + utflyttingsdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + vergemaalEllerFremtidsfullmakt(historikk: true) { + type, + embete, + vergeEllerFullmektig { + navn { + fornavn, + mellomnavn, + etternavn + }, + motpartsPersonident, + omfang, + omfangetErInnenPersonligOmraade + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + forelderBarnRelasjon { + relatertPersonsIdent, + relatertPersonsRolle, + minRolleForPerson, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foreldreansvar(historikk: true) { + ansvar, + ansvarlig, + ansvarssubjekt, + ansvarligUtenIdentifikator { + navn { + fornavn, + mellomnavn, + etternavn + }, + foedselsdato, + statsborgerskap, + kjoenn + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + } + } + code + } +} \ No newline at end of file From bf7b3034b993d1af9856e4d78568a54c6adc08c0 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Wed, 10 Jul 2024 18:05:11 +0200 Subject: [PATCH 152/161] =?UTF-8?q?F=C3=A5r=20kontaktet=20endepunktet=20fo?= =?UTF-8?q?r=20=C3=A5=20f=C3=A5=20organisasjoner=20m=C3=A5=20fikse=20encod?= =?UTF-8?q?ing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OrganisasjonFasteDataConsumer.java | 7 +-- .../command/GetOrganisasjonerCommand.java | 7 +-- .../consumers/pdl/PdlPersonConsumer.java | 6 +-- .../PdlBolkPersonCommand.java | 2 +- .../PdlPersonGetCommand.java | 2 +- .../domain/organisasjon/Organisasjon2.java | 48 +++++++++++++++++++ .../HentOrganisasjonNummerService.java | 3 +- .../src/main/resources/application.yml | 4 +- 8 files changed, 64 insertions(+), 15 deletions(-) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/{commad => command}/PdlBolkPersonCommand.java (99%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/{commad => command}/PdlPersonGetCommand.java (99%) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Organisasjon2.java diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java index eb494a477e3..74b91ddfb6a 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java @@ -3,6 +3,7 @@ import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command.GetOrganisasjonerCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.Organisasjon; import no.nav.testnav.libs.securitycore.domain.ServerProperties; @@ -30,9 +31,9 @@ public OrganisasjonFasteDataConsumer( this.tokenExchange = tokenExchange; } - public List hentOrganisasjoner() { + public List hentOrganisasjoner() { var accessToken = tokenExchange.exchange(serverProperties).block(); - List dto = new GetOrganisasjonerCommand(webClient, accessToken.getTokenValue()).call(); - return dto.stream().map(OrganisasjonDTO::getOrganisasjonsnummer).toList(); //org -> new Organisasjon(org.getOrganisasjonsnummer()) + List dto = new GetOrganisasjonerCommand(webClient, accessToken.getTokenValue()).call(); + return dto; //org -> new Organisasjon(org.getOrganisasjonsnummer()) } } diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java index fa250a3278a..1e1d9465179 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java @@ -2,6 +2,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; import org.springframework.web.reactive.function.client.WebClient; @@ -10,13 +11,13 @@ @Slf4j @RequiredArgsConstructor -public class GetOrganisasjonerCommand implements Callable> { +public class GetOrganisasjonerCommand implements Callable> { private final WebClient webClient; private final String token; @Override - public List call() { + public List call() { return webClient .get() .uri(builder -> builder @@ -27,7 +28,7 @@ public List call() { ) .header("Authorization", "Bearer " + token) .retrieve() - .bodyToFlux(OrganisasjonDTO.class) + .bodyToFlux(Organisasjon2.class) .collectList() .block(); } diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java index dbde526f5b1..b6c83d103df 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java @@ -5,10 +5,9 @@ import lombok.extern.slf4j.Slf4j; import lombok.val; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; -import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad.PdlBolkPersonCommand; -import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad.PdlPersonGetCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.command.PdlBolkPersonCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.command.PdlPersonGetCommand; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.provider.v2.PdlMiljoer; -import no.nav.testnav.libs.securitycore.domain.AccessToken; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; import org.springframework.core.io.ClassPathResource; @@ -28,7 +27,6 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.JacksonExchangeStrategyUtil.getJacksonStrategy; -import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.JacksonExchangeStrategyUtil.getJacksonStrategy; @Slf4j @Service diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/command/PdlBolkPersonCommand.java similarity index 99% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/command/PdlBolkPersonCommand.java index dd378daabe0..271fe00eefd 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/command/PdlBolkPersonCommand.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.command; import com.fasterxml.jackson.databind.JsonNode; import lombok.RequiredArgsConstructor; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/command/PdlPersonGetCommand.java similarity index 99% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/command/PdlPersonGetCommand.java index a33894d16f6..25d6ed1954b 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/command/PdlPersonGetCommand.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.command; import com.fasterxml.jackson.databind.JsonNode; import lombok.RequiredArgsConstructor; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Organisasjon2.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Organisasjon2.java new file mode 100644 index 00000000000..bb0ecfbc521 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Organisasjon2.java @@ -0,0 +1,48 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Value; +//import no.nav.registre.sdforvalter.domain.Ereg; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; + +@Value +@Builder +@AllArgsConstructor +public class Organisasjon2 { + @JsonProperty(required = true) + private String orgnummer; + @JsonProperty + private String enhetType; + @JsonProperty + private String navn; + @JsonProperty + private String juridiskEnhet; + @JsonProperty + private Adresse postadresse; + @JsonProperty + private Adresse forretningsadresser; + @JsonProperty + private String redigertnavn; +/* + public Organisasjon2(Ereg ereg) { + orgnummer = ereg.getOrgnr(); + enhetType = ereg.getEnhetstype(); + navn = ereg.getNavn() != null ? ereg.getNavn().toUpperCase() : null; + redigertnavn = ereg.getRedigertNavn() != null ? ereg.getRedigertNavn().toUpperCase() : null; + juridiskEnhet = ereg.getJuridiskEnhet(); + postadresse = ereg.getPostadresse() != null ? new Adresse(ereg.getPostadresse()) : null; + forretningsadresser = ereg.getForretningsAdresse() != null ? new Adresse(ereg.getForretningsAdresse()) : null; + } +*/ + public Organisasjon2(OrganisasjonDTO dto) { + orgnummer = dto.getOrganisasjonsnummer(); + enhetType = dto.getType(); + navn = dto.getNavn().getNavnelinje1(); + juridiskEnhet = dto.getDetaljer().getEnhetstype(); + postadresse = dto.getOrganisasjonDetaljer().getPostadresser() != null ? new Adresse(dto.getOrganisasjonDetaljer().getPostadresser().getFirst()) : null; + forretningsadresser = dto.getOrganisasjonDetaljer().getForretningsadresser() != null ? new Adresse(dto.getOrganisasjonDetaljer().getForretningsadresser().getFirst()) : null; + redigertnavn = dto.getNavn().getRedigertnavn(); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java index 2ed92a0815c..564742e9db1 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java @@ -3,6 +3,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.OrganisasjonFasteDataConsumer; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; @@ -17,7 +18,7 @@ public class HentOrganisasjonNummerService { @EventListener(ApplicationReadyEvent.class) public void hentOrganisasjoner() { - List orgNummer = organisasjonFasteDataConsumer.hentOrganisasjoner(); + List orgNummer = organisasjonFasteDataConsumer.hentOrganisasjoner(); log.info("Hentet {} organisasjoner", orgNummer.size()); log.info("Første org nr: {}", orgNummer.get(0)); } diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml index f0e02307c2b..0054961ac7c 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -67,7 +67,7 @@ consumers: name: testnav-tenor-search-service url: https://testdata.api.skatteetaten.no testnav-organisasjon-faste-data-service: + url: https://testnav-organisasjon-faste-data-service.intern.dev.nav.no name: testnav-organisasjon-faste-data-service - url: https://testnav-organisasjon-faste-data-service.dev-fss-pub.nais.io - cluster: dev-fss + cluster: dev-gcp namespace: dolly From 85c04df3231b376fba1855828ed9bd4a1026acfd Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 11 Jul 2024 08:50:50 +0200 Subject: [PATCH 153/161] Legger til PostgreSQL database instans #deploy-testnav-levende-arbeidsforhold-ansettelse --- apps/levende-arbeidsforhold-ansettelse/config.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/apps/levende-arbeidsforhold-ansettelse/config.yml b/apps/levende-arbeidsforhold-ansettelse/config.yml index 6def333173b..7ba539a0847 100644 --- a/apps/levende-arbeidsforhold-ansettelse/config.yml +++ b/apps/levende-arbeidsforhold-ansettelse/config.yml @@ -52,3 +52,14 @@ spec: pool: nav-dev ingresses: - "https://testnav-levende-arbeidsforhold-ansettelse.intern.dev.nav.no" + gcp: + sqlInstances: + - type: POSTGRES_14 + name: testnav-levende-arbeidsforhold-ansettelse + databases: + - name: ansettelse-jobber + autoBackupHour: 3 #Lager backup av hele SQL instancen hver dag kl 03:00 + tier: db-f1-micro + diskAutoresize: true #Kanskje ikke nødvendig? + #collation: DESC + From db65c8b1c86e01964b45e881d027e53d25486b84 Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Thu, 11 Jul 2024 08:51:02 +0200 Subject: [PATCH 154/161] =?UTF-8?q?F=C3=A5r=20hentet=20organisasjonsnr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/OrganisasjonFasteDataConsumer.java | 6 +++--- .../consumers/command/GetOrganisasjonerCommand.java | 11 ++++++----- .../service/HentOrganisasjonNummerService.java | 3 ++- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java index 74b91ddfb6a..722d413f261 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java @@ -4,7 +4,7 @@ import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command.GetOrganisasjonerCommand; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; -import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; +import no.nav.testnav.libs.dto.organisasjonfastedataservice.v1.OrganisasjonDTO; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.Organisasjon; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; @@ -31,9 +31,9 @@ public OrganisasjonFasteDataConsumer( this.tokenExchange = tokenExchange; } - public List hentOrganisasjoner() { + public List hentOrganisasjoner() { var accessToken = tokenExchange.exchange(serverProperties).block(); - List dto = new GetOrganisasjonerCommand(webClient, accessToken.getTokenValue()).call(); + List dto = new GetOrganisasjonerCommand(webClient, accessToken.getTokenValue()).call(); return dto; //org -> new Organisasjon(org.getOrganisasjonsnummer()) } } diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java index 1e1d9465179..e27c9830e38 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java @@ -2,8 +2,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; -import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; +//import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; +//import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; +import no.nav.testnav.libs.dto.organisasjonfastedataservice.v1.OrganisasjonDTO; import org.springframework.web.reactive.function.client.WebClient; import java.util.List; @@ -11,13 +12,13 @@ @Slf4j @RequiredArgsConstructor -public class GetOrganisasjonerCommand implements Callable> { +public class GetOrganisasjonerCommand implements Callable> { private final WebClient webClient; private final String token; @Override - public List call() { + public List call() { return webClient .get() .uri(builder -> builder @@ -28,7 +29,7 @@ public List call() { ) .header("Authorization", "Bearer " + token) .retrieve() - .bodyToFlux(Organisasjon2.class) + .bodyToFlux(OrganisasjonDTO.class) .collectList() .block(); } diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java index 564742e9db1..ec2980b3f7c 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java @@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.OrganisasjonFasteDataConsumer; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; +import no.nav.testnav.libs.dto.organisasjonfastedataservice.v1.OrganisasjonDTO; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; @@ -18,7 +19,7 @@ public class HentOrganisasjonNummerService { @EventListener(ApplicationReadyEvent.class) public void hentOrganisasjoner() { - List orgNummer = organisasjonFasteDataConsumer.hentOrganisasjoner(); + List orgNummer = organisasjonFasteDataConsumer.hentOrganisasjoner(); log.info("Hentet {} organisasjoner", orgNummer.size()); log.info("Første org nr: {}", orgNummer.get(0)); } From 7d3b5143d0527813dbaa456da085c110bc245adb Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Wed, 10 Jul 2024 17:26:41 +0200 Subject: [PATCH 155/161] =?UTF-8?q?Graphql=20sp=C3=B8rring=20fungerer=20og?= =?UTF-8?q?=20har=20lagt=20til=20command=20for=20testnav-organisasjon-fast?= =?UTF-8?q?e-data-service=20men=20f=C3=A5r=20401?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/Consumers.java | 3 +- .../OrganisasjonFasteDataConsumer.java | 38 + .../command/GetOrganisasjonerCommand.java | 34 + .../consumers/pdl/GraphQLRequest.java | 9 + .../pdl/JacksonExchangeStrategyUtil.java | 25 + .../consumers/pdl/PdlPersonConsumer.java | 98 ++ .../consumers/pdl/TemaGrunnlag.java | 6 + .../pdl/commad/PdlBolkPersonCommand.java | 61 ++ .../pdl/commad/PdlPersonGetCommand.java | 68 ++ .../pdl/domain/CommonKeysAndUtils.java | 11 + .../provider/v2/PdlMiljoer.java | 5 + .../provider/v2/PdlPersonController.java | 36 + .../HentOrganisasjonNummerService.java | 24 + .../service/HentOrganisasjonService.java | 5 +- .../service/HentPersonService.java | 28 + .../service/TenorPersonService.java | 2 +- .../src/main/resources/application.yml | 10 + .../src/main/resources/pdl/graphql.config.yml | 8 + .../main/resources/pdl/pdl-api-schema.graphql | 943 ++++++++++++++++++ .../main/resources/pdl/pdlHentIdent.graphql | 9 + .../resources/pdl/pdlPerson2Query.graphql | 596 +++++++++++ .../main/resources/pdl/pdlPersonQuery.graphql | 32 + .../src/main/resources/pdl/pdlQuery.graphql | 29 + .../main/resources/pdl/pdlbolkquery.graphql | 617 ++++++++++++ 24 files changed, 2693 insertions(+), 4 deletions(-) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/GraphQLRequest.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/JacksonExchangeStrategyUtil.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/TemaGrunnlag.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/domain/CommonKeysAndUtils.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlMiljoer.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlPersonController.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentPersonService.java create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/graphql.config.yml create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdl-api-schema.graphql create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlHentIdent.graphql create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPerson2Query.graphql create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPersonQuery.graphql create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlQuery.graphql create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlbolkquery.graphql diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java index a17e15482cc..a6db3f602b4 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/config/Consumers.java @@ -27,5 +27,6 @@ public class Consumers { private ServerProperties testnavAaregProxy; private ServerProperties testnavTenorSearchService; private ServerProperties testnavEregProxy; - private ServerProperties pdlProxy; + private ServerProperties testnavPdlProxy; + private ServerProperties testnavOrganisasjonFasteDataService; } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java new file mode 100644 index 00000000000..eb494a477e3 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java @@ -0,0 +1,38 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers; + +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command.GetOrganisasjonerCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.Organisasjon; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.WebClient; + +import java.util.List; + +@Slf4j +@Component +public class OrganisasjonFasteDataConsumer { + private final WebClient webClient; + private final ServerProperties serverProperties; + private final TokenExchange tokenExchange; + + public OrganisasjonFasteDataConsumer( + Consumers consumers, + TokenExchange tokenExchange) { + serverProperties = consumers.getTestnavOrganisasjonFasteDataService(); + this.webClient = WebClient + .builder() + .baseUrl(serverProperties.getUrl()) + .build(); + this.tokenExchange = tokenExchange; + } + + public List hentOrganisasjoner() { + var accessToken = tokenExchange.exchange(serverProperties).block(); + List dto = new GetOrganisasjonerCommand(webClient, accessToken.getTokenValue()).call(); + return dto.stream().map(OrganisasjonDTO::getOrganisasjonsnummer).toList(); //org -> new Organisasjon(org.getOrganisasjonsnummer()) + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java new file mode 100644 index 00000000000..fa250a3278a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java @@ -0,0 +1,34 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; +import org.springframework.web.reactive.function.client.WebClient; + +import java.util.List; +import java.util.concurrent.Callable; + +@Slf4j +@RequiredArgsConstructor +public class GetOrganisasjonerCommand implements Callable> { + private final WebClient webClient; + private final String token; + + + @Override + public List call() { + return webClient + .get() + .uri(builder -> builder + .path("/api/v1/organisasjoner") + .queryParam("inkluderHierarki", true) + .queryParam("kanHaArbeidsforhold", true) + .build() + ) + .header("Authorization", "Bearer " + token) + .retrieve() + .bodyToFlux(OrganisasjonDTO.class) + .collectList() + .block(); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/GraphQLRequest.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/GraphQLRequest.java new file mode 100644 index 00000000000..1fcf6964431 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/GraphQLRequest.java @@ -0,0 +1,9 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl; + +import lombok.Builder; + +import java.util.Map; + +@Builder +public record GraphQLRequest(String query, Map variables) { +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/JacksonExchangeStrategyUtil.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/JacksonExchangeStrategyUtil.java new file mode 100644 index 00000000000..02148017563 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/JacksonExchangeStrategyUtil.java @@ -0,0 +1,25 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl; + +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.experimental.UtilityClass; +import org.springframework.http.MediaType; +import org.springframework.http.codec.json.Jackson2JsonDecoder; +import org.springframework.http.codec.json.Jackson2JsonEncoder; +import org.springframework.web.reactive.function.client.ExchangeStrategies; + +@UtilityClass +public final class JacksonExchangeStrategyUtil { + + public static ExchangeStrategies getJacksonStrategy(ObjectMapper objectMapper) { + return ExchangeStrategies.builder() + .codecs(config -> { + config.defaultCodecs() + .maxInMemorySize(32 * 1024 * 1024); + config.defaultCodecs() + .jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON)); + config.defaultCodecs() + .jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON)); + }).build(); + } + +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java new file mode 100644 index 00000000000..dbde526f5b1 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java @@ -0,0 +1,98 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import lombok.val; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad.PdlBolkPersonCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad.PdlPersonGetCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.provider.v2.PdlMiljoer; +import no.nav.testnav.libs.securitycore.domain.AccessToken; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.client.reactive.ReactorClientHttpConnector; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; +import reactor.netty.http.client.HttpClient; +import reactor.netty.resources.ConnectionProvider; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.time.Duration; +import java.util.List; +import java.util.stream.Collectors; + +import static java.nio.charset.StandardCharsets.UTF_8; +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.JacksonExchangeStrategyUtil.getJacksonStrategy; +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.JacksonExchangeStrategyUtil.getJacksonStrategy; + +@Slf4j +@Service +public class PdlPersonConsumer { + + private final TokenExchange tokenService; + private final ServerProperties serverProperties; + private final WebClient webClient; + + public PdlPersonConsumer( + TokenExchange tokenService, + Consumers consumers, + ObjectMapper objectMapper, + WebClient.Builder webClientBuilder + ) { + log.info("PdlPersonConsumer"); + serverProperties = consumers.getTestnavPdlProxy(); + log.info("serverProperties: {}", serverProperties); + this.tokenService = tokenService; + webClient = webClientBuilder + .baseUrl(serverProperties.getUrl()) + .exchangeStrategies(getJacksonStrategy(objectMapper)) + .clientConnector( + new ReactorClientHttpConnector( + HttpClient.create( + ConnectionProvider + .builder("custom") + .maxConnections(10) + .pendingAcquireMaxCount(5000) + .pendingAcquireTimeout(Duration.ofMinutes(15)) + .build()) + .responseTimeout(Duration.ofSeconds(5)))) + .build(); + } + + public Mono getPdlPerson(String ident, PdlMiljoer pdlMiljoe) { + log.info("getPdlPerson"); + var token = tokenService.exchange(serverProperties).block(); + log.info("token: {}", token); + log.info("TokenVaule: {}", token.getTokenValue()); + + return new PdlPersonGetCommand(webClient, ident, token.getTokenValue(), pdlMiljoe).call(); + /* + return tokenService.exchange(serverProperties) + .flatMap((AccessToken token) -> new PdlPersonGetCommand(webClient, ident, token.getTokenValue(), pdlMiljoe) + .call()); + + */ + } + + public Mono getPdlPersoner(List identer) { + + return tokenService.exchange(serverProperties) + .flatMap(token -> new PdlBolkPersonCommand(webClient, identer, token.getTokenValue()).call()); + } + + public static String hentQueryResource(String pathResource) { + val resource = new ClassPathResource(pathResource); + try (BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getInputStream(), UTF_8))) { + return reader.lines().collect(Collectors.joining("\n")); + + } catch (IOException e) { + log.error("Lesing av query ressurs {} feilet", pathResource, e); + return null; + } + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/TemaGrunnlag.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/TemaGrunnlag.java new file mode 100644 index 00000000000..172f41fbe8a --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/TemaGrunnlag.java @@ -0,0 +1,6 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl; + +public enum TemaGrunnlag { + + GEN, PEN +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java new file mode 100644 index 00000000000..dd378daabe0 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java @@ -0,0 +1,61 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.RequiredArgsConstructor; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.GraphQLRequest; +import no.nav.testnav.libs.reactivecore.utils.WebClientFilter; +import org.springframework.web.reactive.function.BodyInserters; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import reactor.core.publisher.Mono; +import reactor.util.retry.Retry; + +import java.time.Duration; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.Callable; + +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.PdlPersonConsumer.hentQueryResource; +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.TemaGrunnlag.GEN; +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.domain.CommonKeysAndUtils.*; + +import static org.springframework.http.HttpHeaders.AUTHORIZATION; + +@RequiredArgsConstructor +public class PdlBolkPersonCommand implements Callable> { + + private static final String TEMA = "Tema"; + private static final String GRAPHQL_URL = "/graphql"; + private static final String PDL_API_URL = "/pdl-api"; + private static final String MULTI_PERSON_QUERY = "pdl/pdlbolkquery.graphql"; + + private final WebClient webClient; + private final List identer; + private final String token; + + @Override + public Mono call() { + + return webClient + .post() + .uri(uriBuilder -> uriBuilder + .path(PDL_API_URL) + .path(GRAPHQL_URL) + .build()) + .header(AUTHORIZATION, "Bearer " + token) + .header(HEADER_NAV_CONSUMER_ID, DOLLY) + .header(HEADER_NAV_CALL_ID, "Dolly: " + UUID.randomUUID()) + .header(TEMA, GEN.name()) + .body(BodyInserters + .fromValue(new GraphQLRequest(hentQueryResource(MULTI_PERSON_QUERY), + Map.of("identer", identer)))) + .retrieve() + .bodyToMono(JsonNode.class) + .doOnError(WebClientFilter::logErrorMessage) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .onErrorResume(throwable -> throwable instanceof WebClientResponseException.NotFound, + throwable -> Mono.empty()); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java new file mode 100644 index 00000000000..a33894d16f6 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java @@ -0,0 +1,68 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.GraphQLRequest; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.provider.v2.PdlMiljoer; +import no.nav.testnav.libs.reactivecore.utils.WebClientFilter; +import org.springframework.web.reactive.function.BodyInserters; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import reactor.core.publisher.Mono; +import reactor.util.retry.Retry; + +import java.time.Duration; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.Callable; + +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.PdlPersonConsumer.hentQueryResource; +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.TemaGrunnlag.GEN; +import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.domain.CommonKeysAndUtils.*; + +import static org.springframework.http.HttpHeaders.AUTHORIZATION; + +@Slf4j +@RequiredArgsConstructor +public class PdlPersonGetCommand implements Callable> { + + private static final String TEMA = "Tema"; + private static final String GRAPHQL_URL = "/graphql"; + private static final String PDL_API_URL = "/pdl-api"; + private static final String SINGLE_PERSON_QUERY = "pdl/pdlPerson2Query.graphql"; + + private final WebClient webClient; + private final String ident; + private final String token; + private final PdlMiljoer pdlMiljoe; + + @Override + public Mono call() { + log.info("PdlPersonGetCommand"); + GraphQLRequest graphQLRequest = new GraphQLRequest(hentQueryResource(SINGLE_PERSON_QUERY), + Map.of("ident", ident, "historikk", true)); + log.info("graphQLRequest: {}", graphQLRequest); + return webClient + .post() + .uri(uriBuilder -> uriBuilder + .path(PDL_API_URL) + .path(pdlMiljoe.equals(PdlMiljoer.Q2) ? "" : "-" + pdlMiljoe.name().toLowerCase()) + .path(GRAPHQL_URL) + .build()) + .header(AUTHORIZATION, "Bearer " + token) + .header(HEADER_NAV_CONSUMER_ID, DOLLY) + .header(HEADER_NAV_CALL_ID, "Dolly: " + UUID.randomUUID()) + .header(TEMA, GEN.name()) + .body(BodyInserters + .fromValue(new GraphQLRequest(hentQueryResource(SINGLE_PERSON_QUERY), + Map.of("ident", ident, "historikk", true)))) + .retrieve() + .bodyToMono(JsonNode.class) + .doOnError(WebClientFilter::logErrorMessage) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)) + .onErrorResume(throwable -> throwable instanceof WebClientResponseException.NotFound, + throwable -> Mono.empty()); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/domain/CommonKeysAndUtils.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/domain/CommonKeysAndUtils.java new file mode 100644 index 00000000000..b3590828851 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/domain/CommonKeysAndUtils.java @@ -0,0 +1,11 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.domain; + +import lombok.experimental.UtilityClass; + +@UtilityClass +public final class CommonKeysAndUtils { + + public static final String HEADER_NAV_CONSUMER_ID = "Nav-Consumer-Id"; + public static final String HEADER_NAV_CALL_ID = "Nav-Call-Id"; + public static final String DOLLY = "Dolly"; +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlMiljoer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlMiljoer.java new file mode 100644 index 00000000000..b0df72033a7 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlMiljoer.java @@ -0,0 +1,5 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.provider.v2; + +public enum PdlMiljoer { + Q1, Q2 + } \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlPersonController.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlPersonController.java new file mode 100644 index 00000000000..fedfafd4cd9 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/provider/v2/PdlPersonController.java @@ -0,0 +1,36 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.provider.v2; + +import com.fasterxml.jackson.databind.JsonNode; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; + +import org.springframework.web.bind.annotation.*; +import reactor.core.publisher.Mono; + +import java.util.List; + +@RestController +@RequestMapping("/api/v2/personer") +@RequiredArgsConstructor +public class PdlPersonController { + +/* + private final PdlPersonConsumer pdlPersonConsumer; + + @GetMapping("/ident/{ident}") + @Operation(description = "Henter PDL-person angitt ved ident fra PDL-API / PDL-API-Q1") + public Mono pdlPerson(@PathVariable("ident") String ident, + @RequestParam(value = "pdlMiljoe", required = false, defaultValue = "Q2") PdlMiljoer + pdlMiljoe) { + return pdlPersonConsumer.getPdlPerson(ident, pdlMiljoe); + } + + @GetMapping("/identer") + @Operation(description = "Henter flere PDL-personer i hht liste av identer fra PDL-API") + public Mono pdlPerson(@RequestParam("identer") List identer) { + + return pdlPersonConsumer.getPdlPersoner(identer); + } + + */ +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java new file mode 100644 index 00000000000..2ed92a0815c --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java @@ -0,0 +1,24 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.OrganisasjonFasteDataConsumer; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@RequiredArgsConstructor +@Service +public class HentOrganisasjonNummerService { + private final OrganisasjonFasteDataConsumer organisasjonFasteDataConsumer; + + @EventListener(ApplicationReadyEvent.class) + public void hentOrganisasjoner() { + List orgNummer = organisasjonFasteDataConsumer.hentOrganisasjoner(); + log.info("Hentet {} organisasjoner", orgNummer.size()); + log.info("Første org nr: {}", orgNummer.get(0)); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonService.java index 6eb8e160f8f..b4279e9e445 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonService.java @@ -12,10 +12,11 @@ @RequiredArgsConstructor public class HentOrganisasjonService { private final EregConsumer eregConsumer; - @EventListener(ApplicationReadyEvent.class) + //@EventListener(ApplicationReadyEvent.class) public void hentOrganisasjoner() { System.out.println("Henter organisasjoner"); log.info("eregConsumer.getOrganisasjon(\"955937864\", \"q2\")"); eregConsumer.getOrganisasjon("955937864", "q2"); } -} \ No newline at end of file +} + diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentPersonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentPersonService.java new file mode 100644 index 00000000000..eca30f558a9 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentPersonService.java @@ -0,0 +1,28 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.service; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.PdlPersonConsumer; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.provider.v2.PdlMiljoer; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class HentPersonService { + private final PdlPersonConsumer pdlPersonConsumer; + + //@EventListener(ApplicationReadyEvent.class) + public void hentPersoner() { + System.out.println("Henter personer"); + String ident = "15476606168"; + PdlMiljoer miljoe = PdlMiljoer.Q2; + log.info("pdlPersonConsumer.getPerson(\"12345678901\")"); + JsonNode pdl = pdlPersonConsumer.getPdlPerson(ident, miljoe).block(); + log.info("pdl: {}", pdl); + + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/TenorPersonService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/TenorPersonService.java index 94341448240..637568d28c7 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/TenorPersonService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/TenorPersonService.java @@ -16,7 +16,7 @@ public class TenorPersonService { private final TenorConsumer tenorConsumer; - @EventListener(ApplicationReadyEvent.class) + //@EventListener(ApplicationReadyEvent.class) public void tenorPersonService() throws JsonProcessingException { log.info("Henter tenor person"); tenorConsumer.consume(); diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml index 2cb1cb08a0a..f0e02307c2b 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -58,6 +58,16 @@ consumers: namespace: dolly url: https://testnav-ereg-proxy.dev-fss-pub.nais.io cluster: dev-fss + testnav-pdl-proxy: + name: testnav-pdl-proxy + namespace: dolly + url: https://testnav-pdl-proxy.dev-fss-pub.nais.io + cluster: dev-fss testnav-tenor-search-service: name: testnav-tenor-search-service url: https://testdata.api.skatteetaten.no + testnav-organisasjon-faste-data-service: + name: testnav-organisasjon-faste-data-service + url: https://testnav-organisasjon-faste-data-service.dev-fss-pub.nais.io + cluster: dev-fss + namespace: dolly diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/graphql.config.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/graphql.config.yml new file mode 100644 index 00000000000..1f9a7cdf2a6 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/graphql.config.yml @@ -0,0 +1,8 @@ +schema: pdl-api-schema.graphql +extensions: + endpoints: + PDL GraphQL Endpoint: + url: https://pdl-api.dev.intern.nav.no/graphql + headers: + user-agent: '' + introspect: false diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdl-api-schema.graphql b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdl-api-schema.graphql new file mode 100644 index 00000000000..d0209854938 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdl-api-schema.graphql @@ -0,0 +1,943 @@ +# This file was generated. Do not edit manually. + +schema { + query: Query +} + +"Indicates an Input Object is a OneOf Input Object." +directive @oneOf on INPUT_OBJECT + +type AdresseCompletionResult { + addressFound: CompletionAdresse + suggestions: [String!]! +} + +type AdresseSearchHit { + matrikkeladresse: MatrikkeladresseResult + score: Float + vegadresse: VegadresseResult +} + +type AdresseSearchResult { + hits: [AdresseSearchHit!]! + pageNumber: Int + totalHits: Int + totalPages: Int +} + +type Adressebeskyttelse { + folkeregistermetadata: Folkeregistermetadata + gradering: AdressebeskyttelseGradering! + metadata: Metadata! +} + +type Bostedsadresse { + angittFlyttedato: Date + coAdressenavn: String + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: DateTime + gyldigTilOgMed: DateTime + matrikkeladresse: Matrikkeladresse + metadata: Metadata! + ukjentBosted: UkjentBosted + utenlandskAdresse: UtenlandskAdresse + vegadresse: Vegadresse +} + +type CompletionAdresse { + matrikkeladresse: MatrikkeladresseResult + vegadresse: VegadresseResult +} + +type DeltBosted { + coAdressenavn: String + folkeregistermetadata: Folkeregistermetadata! + matrikkeladresse: Matrikkeladresse + metadata: Metadata! + sluttdatoForKontrakt: Date + startdatoForKontrakt: Date! + ukjentBosted: UkjentBosted + utenlandskAdresse: UtenlandskAdresse + vegadresse: Vegadresse +} + +type DoedfoedtBarn { + dato: Date + folkeregistermetadata: Folkeregistermetadata! + metadata: Metadata! +} + +type Doedsfall { + doedsdato: Date + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +" Endring som har blitt utført på opplysningen. F.eks: Opprett -> Korriger -> Korriger" +type Endring { + hendelseId: String! + """ + + Opphavet til informasjonen. I NAV blir dette satt i forbindelse med registrering (f.eks: Sykehuskassan). + Fra Folkeregisteret får vi opphaven til dems opplysning, altså NAV, UDI, Politiet, Skatteetaten o.l.. Fra Folkeregisteret kan det også være tekniske navn som: DSF_MIGRERING, m.m.. + """ + kilde: String! + " Tidspunktet for registrering." + registrert: DateTime! + " Hvem endringen har blitt utført av, ofte saksbehandler (f.eks Z990200), men kan også være system (f.eks srvXXXX). Denne blir satt til \"Folkeregisteret\" for det vi får fra dem." + registrertAv: String! + " Hvilke system endringen har kommet fra (f.eks srvXXX). Denne blir satt til \"FREG\" for det vi får fra Folkeregisteret." + systemkilde: String! + " Hvilke type endring som har blitt utført." + type: Endringstype! +} + +type FalskIdentitet { + erFalsk: Boolean! + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + rettIdentitetErUkjent: Boolean + rettIdentitetVedIdentifikasjonsnummer: String + rettIdentitetVedOpplysninger: FalskIdentitetIdentifiserendeInformasjon +} + +type FalskIdentitetIdentifiserendeInformasjon { + foedselsdato: Date + kjoenn: KjoennType + personnavn: Personnavn! + statsborgerskap: [String!]! +} + +type Foedested { + foedekommune: String + foedeland: String + foedested: String + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +type Foedsel { + foedekommune: String + foedeland: String + foedested: String + foedselsaar: Int + foedselsdato: Date + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +type Foedselsdato { + foedselsaar: Int + foedselsdato: Date + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +type Folkeregisteridentifikator { + folkeregistermetadata: Folkeregistermetadata! + identifikasjonsnummer: String! + metadata: Metadata! + status: String! + type: String! +} + +type Folkeregistermetadata { + aarsak: String + ajourholdstidspunkt: DateTime + gyldighetstidspunkt: DateTime + kilde: String + opphoerstidspunkt: DateTime + sekvens: Int +} + +type Folkeregisterpersonstatus { + folkeregistermetadata: Folkeregistermetadata! + forenkletStatus: String! + metadata: Metadata! + status: String! +} + +type ForelderBarnRelasjon { + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + minRolleForPerson: ForelderBarnRelasjonRolle + relatertPersonUtenFolkeregisteridentifikator: RelatertBiPerson + relatertPersonsIdent: String + relatertPersonsRolle: ForelderBarnRelasjonRolle! +} + +type Foreldreansvar { + ansvar: String + ansvarlig: String + ansvarligUtenIdentifikator: RelatertBiPerson + ansvarssubjekt: String + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! +} + +type Fullmakt { + gyldigFraOgMed: Date! + gyldigTilOgMed: Date! + metadata: Metadata! + motpartsPersonident: String! + motpartsRolle: FullmaktsRolle! + omraader: [String!]! +} + +type GeografiskTilknytning { + gtBydel: String + gtKommune: String + gtLand: String + gtType: GtType! + regel: String! +} + +type HentIdenterBolkResult { + code: String! + ident: String! + identer: [IdentInformasjon!] +} + +type HentPersonBolkResult { + code: String! + ident: String! + person: Person +} + +type IdentInformasjon { + gruppe: IdentGruppe! + historisk: Boolean! + ident: String! +} + +type IdentifiserendeInformasjon { + foedselsdato: Date + kjoenn: String + navn: Personnavn + statsborgerskap: [String!] +} + +type Identitetsgrunnlag { + folkeregistermetadata: Folkeregistermetadata! + metadata: Metadata! + status: Identitetsgrunnlagsstatus! +} + +type Identliste { + identer: [IdentInformasjon!]! +} + +type InnflyttingTilNorge { + folkeregistermetadata: Folkeregistermetadata + fraflyttingsland: String + fraflyttingsstedIUtlandet: String + metadata: Metadata! +} + +type KartverketAdresse { + id: Long! + matrikkeladresse: KartverketMatrikkeladresse + vegadresse: KartverketVegadresse +} + +type KartverketBydel { + bydelsnavn: String + bydelsnummer: String +} + +type KartverketFylke { + navn: String + nummer: String +} + +type KartverketGrunnkrets { + grunnkretsnavn: String + grunnkretsnummer: String +} + +type KartverketKommune { + fylke: KartverketFylke + navn: String + nummer: String +} + +type KartverketMatrikkeladresse { + adressetilleggsnavn: String + bydel: KartverketBydel + grunnkrets: KartverketGrunnkrets + kortnavn: String + matrikkelnummer: KartverketMatrikkelnummer + postnummeromraade: KartverketPostnummeromraade + representasjonspunkt: KartverketRepresentasjonspunkt + undernummer: Int +} + +type KartverketMatrikkelnummer { + bruksnummer: Int + festenummer: Int + gaardsnummer: Int + kommunenummer: String + seksjonsnummer: Int +} + +type KartverketPostnummeromraade { + postnummer: String + poststed: String +} + +type KartverketRepresentasjonspunkt { + posisjonskvalitet: Int + x: Float + y: Float + z: Float +} + +type KartverketVeg { + adressekode: Int + adressenavn: String + kommune: KartverketKommune + kortnavn: String + stedsnummer: String +} + +type KartverketVegadresse { + adressetilleggsnavn: String + bokstav: String + bydel: KartverketBydel + grunnkrets: KartverketGrunnkrets + kortnavn: String + nummer: Int + postnummeromraade: KartverketPostnummeromraade + representasjonspunkt: KartverketRepresentasjonspunkt + veg: KartverketVeg +} + +type Kjoenn { + folkeregistermetadata: Folkeregistermetadata + kjoenn: KjoennType + metadata: Metadata! +} + +type Kontaktadresse { + coAdressenavn: String + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: DateTime + gyldigTilOgMed: DateTime + metadata: Metadata! + postadresseIFrittFormat: PostadresseIFrittFormat + postboksadresse: Postboksadresse + type: KontaktadresseType! + utenlandskAdresse: UtenlandskAdresse + utenlandskAdresseIFrittFormat: UtenlandskAdresseIFrittFormat + vegadresse: Vegadresse +} + +type KontaktinformasjonForDoedsbo { + adresse: KontaktinformasjonForDoedsboAdresse! + advokatSomKontakt: KontaktinformasjonForDoedsboAdvokatSomKontakt + attestutstedelsesdato: Date! + folkeregistermetadata: Folkeregistermetadata! + metadata: Metadata! + organisasjonSomKontakt: KontaktinformasjonForDoedsboOrganisasjonSomKontakt + personSomKontakt: KontaktinformasjonForDoedsboPersonSomKontakt + skifteform: KontaktinformasjonForDoedsboSkifteform! +} + +type KontaktinformasjonForDoedsboAdresse { + adresselinje1: String! + adresselinje2: String + landkode: String + postnummer: String! + poststedsnavn: String! +} + +type KontaktinformasjonForDoedsboAdvokatSomKontakt { + organisasjonsnavn: String + organisasjonsnummer: String + personnavn: Personnavn! +} + +type KontaktinformasjonForDoedsboOrganisasjonSomKontakt { + kontaktperson: Personnavn + organisasjonsnavn: String! + organisasjonsnummer: String +} + +type KontaktinformasjonForDoedsboPersonSomKontakt { + foedselsdato: Date + identifikasjonsnummer: String + personnavn: Personnavn +} + +type Koordinater { + kvalitet: Int + x: Float + y: Float + z: Float +} + +type Matrikkeladresse { + bruksenhetsnummer: String + kommunenummer: String + koordinater: Koordinater + matrikkelId: Long + postnummer: String + tilleggsnavn: String +} + +type MatrikkeladresseResult { + bruksnummer: String + gaardsnummer: String + kommunenummer: String + matrikkelId: String + postnummer: String + poststed: String + tilleggsnavn: String +} + +type Metadata { + """ + + En liste over alle endringer som har blitt utført over tid. + Vær obs på at denne kan endre seg og man burde takle at det finnes flere korrigeringer i listen, så dersom man ønsker å kun vise den siste, så må man selv filtrere ut dette. + Det kan også ved svært få tilfeller skje at opprett blir fjernet. F.eks ved splitt tilfeller av identer. Dette skal skje i svært få tilfeller. Dersom man ønsker å presentere opprettet tidspunktet, så blir det tidspunktet på den første endringen. + """ + endringer: [Endring!]! + """ + + Feltet betegner hvorvidt dette er en funksjonelt historisk opplysning, for eksempel en tidligere fraflyttet adresse eller et foreldreansvar som er utløpt fordi barnet har fylt 18 år. + I de fleste tilfeller kan dette utledes ved å se på de andre feltene i opplysningen. Dette er imidlertid ikke alltid tilfellet, blant annet for foreldreansvar. + Feltet bør brukes av konsumenter som henter informasjon fra GraphQL med historikk, men som også trenger å utlede gjeldende informasjon. + """ + historisk: Boolean! + " Master refererer til hvem som eier opplysningen, f.eks så har PDL en kopi av Folkeregisteret, da vil master være FREG og eventuelle endringer på dette må gå via Folkeregisteret (API mot dem eller andre rutiner)." + master: String! + """ + + I PDL så får alle forekomster av en opplysning en ID som representerer dens unike forekomst. + F.eks, så vil en Opprett ha ID X, korriger ID Y (der hvor den spesifiserer at den korrigerer X). + Dersom en opplysning ikke er lagret i PDL, så vil denne verdien ikke være utfylt. + """ + opplysningsId: String +} + +type Navn { + etternavn: String! + folkeregistermetadata: Folkeregistermetadata + forkortetNavn: String @deprecated(reason: "No longer supported") + fornavn: String! + gyldigFraOgMed: Date + mellomnavn: String + metadata: Metadata! + originaltNavn: OriginaltNavn +} + +type Opphold { + folkeregistermetadata: Folkeregistermetadata! + metadata: Metadata! + oppholdFra: Date + oppholdTil: Date + type: Oppholdstillatelse! +} + +type Oppholdsadresse { + coAdressenavn: String + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: DateTime + gyldigTilOgMed: DateTime + matrikkeladresse: Matrikkeladresse + metadata: Metadata! + oppholdAnnetSted: String + utenlandskAdresse: UtenlandskAdresse + vegadresse: Vegadresse +} + +type OriginaltNavn { + etternavn: String + fornavn: String + mellomnavn: String +} + +type Person { + adressebeskyttelse(historikk: Boolean = false): [Adressebeskyttelse!]! + bostedsadresse(historikk: Boolean = false): [Bostedsadresse!]! + deltBosted(historikk: Boolean = false): [DeltBosted!]! + doedfoedtBarn: [DoedfoedtBarn!]! + doedsfall: [Doedsfall!]! + falskIdentitet: FalskIdentitet + foedested: [Foedested!]! + foedsel: [Foedsel!]! @deprecated(reason: "Erstattet av foedselsdato & foedested") + foedselsdato: [Foedselsdato!]! + folkeregisteridentifikator(historikk: Boolean = false): [Folkeregisteridentifikator!]! + folkeregisterpersonstatus(historikk: Boolean = false): [Folkeregisterpersonstatus!]! + forelderBarnRelasjon: [ForelderBarnRelasjon!]! + foreldreansvar(historikk: Boolean = false): [Foreldreansvar!]! + fullmakt(historikk: Boolean = false): [Fullmakt!]! + identitetsgrunnlag(historikk: Boolean = false): [Identitetsgrunnlag!]! + innflyttingTilNorge: [InnflyttingTilNorge!]! + kjoenn(historikk: Boolean = false): [Kjoenn!]! + kontaktadresse(historikk: Boolean = false): [Kontaktadresse!]! + kontaktinformasjonForDoedsbo(historikk: Boolean = false): [KontaktinformasjonForDoedsbo!]! + navn(historikk: Boolean = false): [Navn!]! + opphold(historikk: Boolean = false): [Opphold!]! + oppholdsadresse(historikk: Boolean = false): [Oppholdsadresse!]! + rettsligHandleevne(historikk: Boolean = false): [RettsligHandleevne!]! + sikkerhetstiltak: [Sikkerhetstiltak!]! + sivilstand(historikk: Boolean = false): [Sivilstand!]! + statsborgerskap(historikk: Boolean = false): [Statsborgerskap!]! + telefonnummer(historikk: Boolean = false): [Telefonnummer!]! + tilrettelagtKommunikasjon: [TilrettelagtKommunikasjon!]! + utenlandskIdentifikasjonsnummer(historikk: Boolean = false): [UtenlandskIdentifikasjonsnummer!]! + utflyttingFraNorge: [UtflyttingFraNorge!]! + vergemaalEllerFremtidsfullmakt(historikk: Boolean = false): [VergemaalEllerFremtidsfullmakt!]! +} + +type PersonSearchHighlight { + " Forteller hvorvidt opplysningen som ga treff er markert som historisk." + historisk: Boolean + """ + + liste med feltene og verdiene som ga treff. + Merk at for fritekst søk så vil disse kunne referere til hjelpe felter som ikke er synelig i resultatene. + """ + matches: [SearchMatch] + """ + + Navn/Sti til opplysningen som ga treff. Merk at dette ikke er feltet som ga treff men opplysningen. + F.eks. hvis du søker på person.navn.fornavn så vil opplysingen være person.navn. + """ + opplysning: String + """ + + Gitt att opplysningen som ga treff har en opplysningsId så vil den returneres her. + alle søk under person skal ha opplysningsId, men søk i identer vil kunne returnere treff uten opplysningsId. + """ + opplysningsId: String +} + +type PersonSearchHit { + " Infromasjon om hva som ga treff i søke resultatet." + highlights: [PersonSearchHighlight] + " forespurte data" + identer(historikk: Boolean = false): [IdentInformasjon!]! + " forespurte data" + person: Person + " Poengsummen elasticsearch har gitt dette resultatet (brukt til feilsøking, og tuning av søk)" + score: Float +} + +type PersonSearchResult { + " treff liste" + hits: [PersonSearchHit!]! + " Side nummer for siden som vises" + pageNumber: Int + " Totalt antall treff (øvre grense er satt til 10 000)" + totalHits: Int + " Totalt antall sider" + totalPages: Int +} + +type Personnavn { + etternavn: String! + fornavn: String! + mellomnavn: String +} + +type PostadresseIFrittFormat { + adresselinje1: String + adresselinje2: String + adresselinje3: String + postnummer: String +} + +type Postboksadresse { + postboks: String! + postbokseier: String + postnummer: String +} + +type Query { + forslagAdresse(parameters: CompletionParameters): AdresseCompletionResult + hentAdresse(matrikkelId: ID!): KartverketAdresse + hentGeografiskTilknytning(ident: ID!): GeografiskTilknytning + hentGeografiskTilknytningBolk(identer: [ID!]!): [hentGeografiskTilknytningBolkResult!]! + hentIdenter(grupper: [IdentGruppe!], historikk: Boolean = false, ident: ID!): Identliste + hentIdenterBolk(grupper: [IdentGruppe!], historikk: Boolean = false, identer: [ID!]!): [HentIdenterBolkResult!]! + hentPerson(ident: ID!): Person + hentPersonBolk(identer: [ID!]!): [HentPersonBolkResult!]! + sokAdresse(criteria: [Criterion], paging: Paging): AdresseSearchResult + sokPerson(criteria: [Criterion], paging: Paging): PersonSearchResult +} + +type RelatertBiPerson { + foedselsdato: Date + kjoenn: KjoennType + navn: Personnavn + statsborgerskap: String +} + +type RettsligHandleevne { + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + rettsligHandleevneomfang: String +} + +type SearchMatch { + " feltnavn med sti til feltet so ga treff." + field: String! + " Verdien som ga treff" + fragments: [String] + type: String +} + +type Sikkerhetstiltak { + beskrivelse: String! + gyldigFraOgMed: Date! + gyldigTilOgMed: Date! + kontaktperson: SikkerhetstiltakKontaktperson + metadata: Metadata! + tiltakstype: String! +} + +type SikkerhetstiltakKontaktperson { + enhet: String! + personident: String! +} + +type Sivilstand { + bekreftelsesdato: Date + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: Date + metadata: Metadata! + relatertVedSivilstand: String + type: Sivilstandstype! +} + +type Statsborgerskap { + bekreftelsesdato: Date + folkeregistermetadata: Folkeregistermetadata + gyldigFraOgMed: Date + gyldigTilOgMed: Date + land: String! + metadata: Metadata! +} + +type Telefonnummer { + landskode: String! + metadata: Metadata! + nummer: String! + prioritet: Int! +} + +type TilrettelagtKommunikasjon { + metadata: Metadata! + talespraaktolk: Tolk + tegnspraaktolk: Tolk +} + +type Tjenesteomraade { + tjenesteoppgave: String + tjenestevirksomhet: String +} + +type Tolk { + spraak: String +} + +type UkjentBosted { + bostedskommune: String +} + +type UtenlandskAdresse { + adressenavnNummer: String + bySted: String + bygningEtasjeLeilighet: String + landkode: String! + postboksNummerNavn: String + postkode: String + regionDistriktOmraade: String +} + +type UtenlandskAdresseIFrittFormat { + adresselinje1: String + adresselinje2: String + adresselinje3: String + byEllerStedsnavn: String + landkode: String! + postkode: String +} + +type UtenlandskIdentifikasjonsnummer { + folkeregistermetadata: Folkeregistermetadata + identifikasjonsnummer: String! + metadata: Metadata! + opphoert: Boolean! + utstederland: String! +} + +type UtflyttingFraNorge { + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + tilflyttingsland: String + tilflyttingsstedIUtlandet: String + utflyttingsdato: Date +} + +type Vegadresse { + adressenavn: String + bruksenhetsnummer: String + bydelsnummer: String + husbokstav: String + husnummer: String + kommunenummer: String + koordinater: Koordinater + matrikkelId: Long + postnummer: String + tilleggsnavn: String +} + +type VegadresseResult { + adressekode: String + adressenavn: String + bydelsnavn: String + bydelsnummer: String + fylkesnavn: String + fylkesnummer: String + husbokstav: String + husnummer: Int + kommunenavn: String + kommunenummer: String + matrikkelId: String + postnummer: String + poststed: String + tilleggsnavn: String +} + +type VergeEllerFullmektig { + identifiserendeInformasjon: IdentifiserendeInformasjon + motpartsPersonident: String + navn: Personnavn @deprecated(reason: "Erstattes av navn iidentifiserendeInformasjon") + omfang: String + omfangetErInnenPersonligOmraade: Boolean + tjenesteomraade: [Tjenesteomraade!] +} + +type VergemaalEllerFremtidsfullmakt { + embete: String + folkeregistermetadata: Folkeregistermetadata + metadata: Metadata! + type: String + vergeEllerFullmektig: VergeEllerFullmektig! +} + +type hentGeografiskTilknytningBolkResult { + code: String! + geografiskTilknytning: GeografiskTilknytning + ident: String! +} + +enum AdressebeskyttelseGradering { + FORTROLIG + STRENGT_FORTROLIG + STRENGT_FORTROLIG_UTLAND + UGRADERT +} + +enum Direction { + ASC + DESC +} + +enum Endringstype { + KORRIGER + OPPHOER + OPPRETT +} + +enum Familierelasjonsrolle { + BARN + FAR + MEDMOR + MOR +} + +enum ForelderBarnRelasjonRolle { + BARN + FAR + MEDMOR + MOR +} + +enum FullmaktsRolle { + FULLMAKTSGIVER + FULLMEKTIG +} + +enum GtType { + BYDEL + KOMMUNE + UDEFINERT + UTLAND +} + +enum IdentGruppe { + AKTORID + FOLKEREGISTERIDENT + NPID +} + +enum Identitetsgrunnlagsstatus { + IKKE_KONTROLLERT + INGEN_STATUS + KONTROLLERT +} + +enum KjoennType { + KVINNE + MANN + UKJENT +} + +enum KontaktadresseType { + Innland + Utland +} + +enum KontaktinformasjonForDoedsboSkifteform { + ANNET + OFFENTLIG +} + +enum Oppholdstillatelse { + MIDLERTIDIG + OPPLYSNING_MANGLER + PERMANENT +} + +enum Sivilstandstype { + ENKE_ELLER_ENKEMANN + GIFT + GJENLEVENDE_PARTNER + REGISTRERT_PARTNER + SEPARERT + SEPARERT_PARTNER + SKILT + SKILT_PARTNER + UGIFT + UOPPGITT +} + +"Format: YYYY-MM-DD (ISO-8601), example: 2017-11-24" +scalar Date + +"Format: YYYY-MM-DDTHH:mm:SS (ISO-8601), example: 2011-12-03T10:15:30" +scalar DateTime + +"A 64-bit signed integer" +scalar Long + +input CompletionFieldValue { + fieldName: String! + fieldValue: String +} + +input CompletionParameters { + completionField: String! + fieldValues: [CompletionFieldValue]! + maxSuggestions: Int +} + +input Criterion { + and: [Criterion] + " Feltnavn inkludert sti til ønsket felt (Eksempel: person.navn.fornavn)" + fieldName: String + not: [Criterion] + or: [Criterion] + """ + + Søk i historiske data + true = søker kun i historiske data. + false = søker kun i gjeldende data. + null = søke i både historiske og gjeldende data. + """ + searchHistorical: Boolean + searchRule: SearchRule +} + +input Paging { + " Hvilken side i resultatsettet man ønsker vist." + pageNumber: Int = 1 + " antall treff per side (maks 100)" + resultsPerPage: Int = 10 + """ + + Liste over felter man ønsker resultatene sortert etter + Standard er "score". Score er poengsummen Elasticsearch tildeler hvert resultat. + """ + sortBy: [SearchSorting] +} + +input SearchRule { + " Brukes til søke etter datoer som kommer etter opgitt dato." + after: String + " Brukes til søke etter datoer som kommer før opgitt dato." + before: String + " Boost brukes til å gi ett søkekriterie høyere eller lavere vektlegging en de andre søke kriteriene." + boost: Float + " [Flag] Kan brukes til å overstyre standard oppførsellen for søk i felter (standard er case insensitive)" + caseSensitive: Boolean + " Gir treff når opgitt felt inneholder en eller flere ord fra input verdien." + contains: String + " [Flag] Brukes til å deaktivere fonetisk søk feltene som har dette som standard (Navn)" + disablePhonetic: Boolean + " Begrenser treff til kun de hvor felt har input verdi" + equals: String + " Sjekker om feltet finnes / at det ikke har en null verdi." + exists: String + """ + + Søk fra og med (se fromExcluding for bare fra men ikke med) + kan benyttes på tall og dato + """ + from: String + """ + + Søk fra men ikke med oppgitt verdi + kan benyttes på tall og dato + """ + fromExcluding: String + " Søk som gir treff også for små variasjoner i skrivemåte" + fuzzy: String + " Brukes til å søke i tall og finner verdier som er størren en input verdi." + greaterThan: String + " Brukes til å søke i tall og finner verdier som er mindre en input verdi." + lessThan: String + " Filtrerer bort treff hvor felt inneholder input verdi" + notEquals: String + " Søk som gir tilfeldig poengsum til hvert treff (kun ment til generering av testdata)" + random: String + " Regex søk for spesielle situasjoner (Dette er en treg opprasjon og bør ikke brukes)" + regex: String + " Gir treff når opgitt feltstarter med opgitt verdi." + startsWith: String + """ + + Søk til og med (se toExcluding for bare til men ikke med) + kan benyttes på tall og dato + """ + to: String + """ + + Søk til men ikke med oppgitt verdi + kan benyttes på tall og dato + """ + toExcluding: String + " Bruk \"?\" som wildcard for enkelt tegn, og \"*\" som wildcard for 0 eller flere tegn." + wildcard: String +} + +input SearchSorting { + direction: Direction! + " Feltnavn ikludert sti til ønsket felt (eksepmel: person.navn.fornavn)" + fieldName: String! +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlHentIdent.graphql b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlHentIdent.graphql new file mode 100644 index 00000000000..3e4345f18b8 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlHentIdent.graphql @@ -0,0 +1,9 @@ +query ($ident: ID!) { + hentIdenter(ident: $ident, historikk: true, grupper: [AKTORID, FOLKEREGISTERIDENT, NPID]) { + identer { + ident, + historisk, + gruppe + } + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPerson2Query.graphql b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPerson2Query.graphql new file mode 100644 index 00000000000..3707c0c0ca1 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPerson2Query.graphql @@ -0,0 +1,596 @@ +fragment folkeregistermetadataDetails on Folkeregistermetadata { + aarsak + ajourholdstidspunkt + gyldighetstidspunkt + kilde + opphoerstidspunkt + sekvens +} + +fragment metadataDetails on Metadata { + endringer { + kilde + registrert + registrertAv + systemkilde + type + hendelseId + } + historisk + master + opplysningsId +} + +query($ident: ID!, $historikk: Boolean!) { + hentIdenter(ident: $ident, historikk: true) { + identer { + ident, + historisk, + gruppe + } + } + hentGeografiskTilknytning(ident: $ident) { + gtType, + gtLand, + gtKommune, + gtBydel, + regel + } + hentPerson(ident: $ident) { + falskIdentitet { + erFalsk, + rettIdentitetErUkjent, + rettIdentitetVedIdentifikasjonsnummer, + rettIdentitetVedOpplysninger { + personnavn { + fornavn, + mellomnavn, + etternavn + } + foedselsdato, + statsborgerskap, + kjoenn + }, + metadata { + ...metadataDetails + } + }, + bostedsadresse(historikk: $historikk) { + angittFlyttedato, + coAdressenavn, + gyldigFraOgMed, + gyldigTilOgMed, + vegadresse { + matrikkelId, + husbokstav, + husnummer, + adressenavn, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + matrikkeladresse { + matrikkelId, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + koordinater { + x, + y, + z + kvalitet + } + }, + ukjentBosted { + bostedskommune + }, + utenlandskAdresse { + adressenavnNummer, + bygningEtasjeLeilighet, + postboksNummerNavn, + postkode, + bySted, + regionDistriktOmraade, + landkode + } + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + oppholdsadresse(historikk: $historikk) { + utenlandskAdresse { + adressenavnNummer, + bygningEtasjeLeilighet, + postboksNummerNavn, + postkode, + bySted, + regionDistriktOmraade, + landkode + }, + vegadresse { + matrikkelId, + husbokstav, + husnummer, + adressenavn, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + matrikkeladresse { + matrikkelId, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + koordinater { + x, + y, + z + kvalitet + } + }, + oppholdAnnetSted, + coAdressenavn, + gyldigFraOgMed, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + } + deltBosted(historikk: $historikk) { + startdatoForKontrakt, + sluttdatoForKontrakt, + coAdressenavn, + vegadresse { + matrikkelId, + adressenavn, + husnummer, + husbokstav, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + matrikkeladresse { + matrikkelId, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + koordinater { + x, + y, + z + kvalitet + } + }, + ukjentBosted { + bostedskommune + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + forelderBarnRelasjon { + relatertPersonsIdent, + relatertPersonsRolle, + minRolleForPerson, + relatertPersonUtenFolkeregisteridentifikator { + navn { + fornavn, + mellomnavn, + etternavn + }, + foedselsdato, + kjoenn + statsborgerskap + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + kontaktadresse(historikk: $historikk) { + gyldigFraOgMed, + gyldigTilOgMed, + type, + coAdressenavn, + postboksadresse { + postbokseier, + postboks, + postnummer + }, + vegadresse { + matrikkelId, + husbokstav, + husnummer, + adressenavn, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + postadresseIFrittFormat { + adresselinje1, + adresselinje2, + adresselinje3, + postnummer + }, + utenlandskAdresse { + adressenavnNummer, + bygningEtasjeLeilighet, + postboksNummerNavn, + postkode, + bySted, + regionDistriktOmraade, + landkode + }, + utenlandskAdresseIFrittFormat { + adresselinje1, + adresselinje2, + adresselinje3, + postkode, + byEllerStedsnavn, + landkode + } + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + kontaktinformasjonForDoedsbo(historikk: $historikk) { + skifteform, + attestutstedelsesdato, + folkeregistermetadata { + ajourholdstidspunkt, + gyldighetstidspunkt, + opphoerstidspunkt, + aarsak, + kilde + } + personSomKontakt { + foedselsdato, + personnavn { + fornavn, + mellomnavn, + etternavn + }, + identifikasjonsnummer + }, + advokatSomKontakt { + personnavn { + fornavn, + mellomnavn, + etternavn + }, + organisasjonsnavn, + organisasjonsnummer + }, + organisasjonSomKontakt { + kontaktperson { + fornavn, + mellomnavn, + etternavn + }, + organisasjonsnavn, + organisasjonsnummer + }, + adresse { + adresselinje1, + adresselinje2, + poststedsnavn, + postnummer, + landkode + }, + metadata { + ...metadataDetails + } + }, + utenlandskIdentifikasjonsnummer(historikk: $historikk) { + identifikasjonsnummer, + utstederland, + opphoert, + metadata { + ...metadataDetails + } + }, + adressebeskyttelse(historikk: $historikk) { + gradering, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foedsel { + foedselsaar, + foedselsdato, + foedeland, + foedested, + foedekommune, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foedested { + foedested, + foedekommune, + foedeland, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foedselsdato { + foedselsdato, + foedselsaar, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + } + doedfoedtBarn{ + dato, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + doedsfall { + doedsdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + kjoenn(historikk: $historikk) { + kjoenn, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + navn(historikk: $historikk) { + fornavn, + mellomnavn, + etternavn, + forkortetNavn, + originaltNavn { + fornavn, + mellomnavn, + etternavn + }, + gyldigFraOgMed, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + folkeregisterpersonstatus(historikk: $historikk) { + status, + forenkletStatus, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + identitetsgrunnlag(historikk: $historikk) { + status, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + tilrettelagtKommunikasjon { + talespraaktolk { + spraak + }, + tegnspraaktolk { + spraak + } + metadata { + ...metadataDetails + } + }, + fullmakt(historikk: $historikk) { + motpartsPersonident, + motpartsRolle, + omraader, + gyldigFraOgMed, + gyldigTilOgMed, + metadata { + ...metadataDetails + } + }, + folkeregisteridentifikator(historikk: $historikk) { + identifikasjonsnummer, + status, + type, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + statsborgerskap(historikk: $historikk) { + land, + gyldigFraOgMed, + gyldigTilOgMed, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + sikkerhetstiltak { + tiltakstype, + beskrivelse, + kontaktperson { + personident, + enhet + } + gyldigFraOgMed, + gyldigTilOgMed, + metadata { + ...metadataDetails + } + }, + opphold(historikk: $historikk) { + type, + oppholdFra, + oppholdTil, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + sivilstand(historikk: $historikk) { + type, + gyldigFraOgMed, + relatertVedSivilstand, + bekreftelsesdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + telefonnummer { + landskode, + nummer, + prioritet, + metadata { + ...metadataDetails + } + }, + innflyttingTilNorge { + fraflyttingsland, + fraflyttingsstedIUtlandet, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + utflyttingFraNorge { + tilflyttingsland, + tilflyttingsstedIUtlandet, + utflyttingsdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + vergemaalEllerFremtidsfullmakt(historikk: $historikk) { + type, + embete, + vergeEllerFullmektig { + navn { + fornavn, + mellomnavn, + etternavn + }, + motpartsPersonident, + omfang, + omfangetErInnenPersonligOmraade + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + foreldreansvar(historikk: $historikk) { + ansvar, + ansvarlig, + ansvarligUtenIdentifikator { + navn { + fornavn, + mellomnavn, + etternavn + }, + foedselsdato, + statsborgerskap, + kjoenn + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + } + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPersonQuery.graphql b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPersonQuery.graphql new file mode 100644 index 00000000000..cac59339c69 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlPersonQuery.graphql @@ -0,0 +1,32 @@ + +query($ident1: ID!) { + hentPerson(ident: $ident1) { + navn { + metadata { + opplysningsId + } + } + foedsel { + metadata { + opplysningsId + } + } + kjoenn { + metadata { + opplysningsId + } + } + folkeregisterpersonstatus { + metadata { + opplysningsId + } + } + }, + hentIdenter(ident: $ident1, historikk: true, grupper: [AKTORID, FOLKEREGISTERIDENT, NPID]) { + identer { + ident, + historisk, + gruppe + } + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlQuery.graphql b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlQuery.graphql new file mode 100644 index 00000000000..0d940372b26 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlQuery.graphql @@ -0,0 +1,29 @@ +fragment vegadresseDetails on Vegadresse { + husnummer + adressenavn + postnummer + kommunenummer +} + +query ($ident: ID!, $historikk: Boolean) { + hentPerson(ident: $ident) { + navn(historikk: $historikk) { + fornavn, + mellomnavn, + etternavn + }, + bostedsadresse(historikk: $historikk) { + vegadresse { + ...vegadresseDetails + } + }, + foedsel { + foedselsdato + }, + folkeregisteridentifikator(historikk: $historikk) { + identifikasjonsnummer, + status, + type + } + } +} \ No newline at end of file diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlbolkquery.graphql b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlbolkquery.graphql new file mode 100644 index 00000000000..054a824a9ed --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/pdl/pdlbolkquery.graphql @@ -0,0 +1,617 @@ +fragment folkeregistermetadataDetails on Folkeregistermetadata { + aarsak + ajourholdstidspunkt + gyldighetstidspunkt + kilde + opphoerstidspunkt + sekvens +} + +fragment metadataDetails on Metadata { + endringer { + kilde + registrert + registrertAv + systemkilde + type + } + historisk + master + opplysningsId +} + +query($identer: [ID!]!) { + hentIdenterBolk(identer: $identer, historikk: true) { + ident, + identer { + ident, + gruppe, + historisk + }, + code + } + hentGeografiskTilknytningBolk(identer: $identer) { + ident, + geografiskTilknytning { + gtType, + gtLand, + gtKommune, + gtBydel, + regel + } + code + }, + hentPersonBolk(identer: $identer) { + ident, + person { + falskIdentitet { + erFalsk, + rettIdentitetErUkjent, + rettIdentitetVedIdentifikasjonsnummer, + rettIdentitetVedOpplysninger { + personnavn { + fornavn, + mellomnavn, + etternavn + } + foedselsdato, + statsborgerskap, + kjoenn + }, + metadata { + ...metadataDetails + } + }, + bostedsadresse(historikk: true) { + angittFlyttedato, + coAdressenavn, + gyldigFraOgMed, + gyldigTilOgMed, + vegadresse { + matrikkelId, + husbokstav, + husnummer, + adressenavn, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + matrikkeladresse { + matrikkelId, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + koordinater { + x, + y, + z + kvalitet + } + }, + ukjentBosted { + bostedskommune + }, + utenlandskAdresse { + adressenavnNummer, + bygningEtasjeLeilighet, + postboksNummerNavn, + postkode, + bySted, + regionDistriktOmraade, + landkode + } + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + oppholdsadresse(historikk: true) { + utenlandskAdresse { + adressenavnNummer, + bygningEtasjeLeilighet, + postboksNummerNavn, + postkode, + bySted, + regionDistriktOmraade, + landkode + }, + vegadresse { + matrikkelId, + husbokstav, + husnummer, + adressenavn, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + matrikkeladresse { + matrikkelId, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + koordinater { + x, + y, + z + kvalitet + } + }, + oppholdAnnetSted, + coAdressenavn, + gyldigFraOgMed, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + } + deltBosted(historikk: true) { + startdatoForKontrakt, + sluttdatoForKontrakt, + coAdressenavn, + vegadresse { + matrikkelId, + adressenavn, + husnummer, + husbokstav, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + matrikkeladresse { + matrikkelId, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + koordinater { + x, + y, + z + kvalitet + } + }, + ukjentBosted { + bostedskommune + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + forelderBarnRelasjon { + relatertPersonsIdent, + relatertPersonsRolle, + minRolleForPerson, + relatertPersonUtenFolkeregisteridentifikator { + navn { + fornavn, + mellomnavn, + etternavn + }, + foedselsdato, + kjoenn + statsborgerskap + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + kontaktadresse(historikk: true) { + gyldigFraOgMed, + gyldigTilOgMed, + type, + coAdressenavn, + postboksadresse { + postbokseier, + postboks, + postnummer + }, + vegadresse { + matrikkelId, + husbokstav, + husnummer, + adressenavn, + bruksenhetsnummer, + tilleggsnavn, + postnummer, + kommunenummer, + bydelsnummer, + koordinater { + x, + y, + z + kvalitet + } + }, + postadresseIFrittFormat { + adresselinje1, + adresselinje2, + adresselinje3, + postnummer + }, + utenlandskAdresse { + adressenavnNummer, + bygningEtasjeLeilighet, + postboksNummerNavn, + postkode, + bySted, + regionDistriktOmraade, + landkode + }, + utenlandskAdresseIFrittFormat { + adresselinje1, + adresselinje2, + adresselinje3, + postkode, + byEllerStedsnavn, + landkode + } + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + kontaktinformasjonForDoedsbo(historikk: true) { + skifteform, + attestutstedelsesdato, + folkeregistermetadata { + ajourholdstidspunkt, + gyldighetstidspunkt, + opphoerstidspunkt, + aarsak, + kilde + } + personSomKontakt { + foedselsdato, + personnavn { + fornavn, + mellomnavn, + etternavn + }, + identifikasjonsnummer + }, + advokatSomKontakt { + personnavn { + fornavn, + mellomnavn, + etternavn + }, + organisasjonsnavn, + organisasjonsnummer + }, + organisasjonSomKontakt { + kontaktperson { + fornavn, + mellomnavn, + etternavn + }, + organisasjonsnavn, + organisasjonsnummer + }, + adresse { + adresselinje1, + adresselinje2, + poststedsnavn, + postnummer, + landkode + }, + metadata { + ...metadataDetails + } + }, + utenlandskIdentifikasjonsnummer(historikk: true) { + identifikasjonsnummer, + utstederland, + opphoert, + metadata { + ...metadataDetails + } + }, + adressebeskyttelse(historikk: true) { + gradering, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foedsel { + foedselsaar, + foedselsdato, + foedeland, + foedested, + foedekommune, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foedselsdato { + foedselsaar, + foedselsdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foedested { + foedested, + foedekommune, + foedeland, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + doedfoedtBarn{ + dato, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + doedsfall { + doedsdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + kjoenn(historikk: true) { + kjoenn, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + navn(historikk: true) { + fornavn, + mellomnavn, + etternavn, + forkortetNavn, + originaltNavn { + fornavn, + mellomnavn, + etternavn + }, + gyldigFraOgMed, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + folkeregisterpersonstatus(historikk: true) { + status, + forenkletStatus, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + identitetsgrunnlag(historikk: true) { + status, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + tilrettelagtKommunikasjon { + talespraaktolk { + spraak + }, + tegnspraaktolk { + spraak + } + metadata { + ...metadataDetails + } + }, + fullmakt(historikk: true) { + motpartsPersonident, + motpartsRolle, + omraader, + gyldigFraOgMed, + gyldigTilOgMed, + metadata { + ...metadataDetails + } + }, + folkeregisteridentifikator(historikk: true) { + identifikasjonsnummer, + status, + type, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + statsborgerskap(historikk: true) { + land, + gyldigFraOgMed, + gyldigTilOgMed, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + sikkerhetstiltak { + tiltakstype, + beskrivelse, + kontaktperson { + personident, + enhet + } + gyldigFraOgMed, + gyldigTilOgMed, + metadata { + ...metadataDetails + } + }, + opphold(historikk: true) { + type, + oppholdFra, + oppholdTil, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + sivilstand(historikk: true) { + type, + gyldigFraOgMed, + relatertVedSivilstand, + bekreftelsesdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + telefonnummer { + landskode, + nummer, + prioritet, + metadata { + ...metadataDetails + } + }, + innflyttingTilNorge { + fraflyttingsland, + fraflyttingsstedIUtlandet, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + utflyttingFraNorge { + tilflyttingsland, + tilflyttingsstedIUtlandet, + utflyttingsdato, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + vergemaalEllerFremtidsfullmakt(historikk: true) { + type, + embete, + vergeEllerFullmektig { + navn { + fornavn, + mellomnavn, + etternavn + }, + motpartsPersonident, + omfang, + omfangetErInnenPersonligOmraade + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + }, + forelderBarnRelasjon { + relatertPersonsIdent, + relatertPersonsRolle, + minRolleForPerson, + folkeregistermetadata { + ...folkeregistermetadataDetails + } + metadata { + ...metadataDetails + } + }, + foreldreansvar(historikk: true) { + ansvar, + ansvarlig, + ansvarssubjekt, + ansvarligUtenIdentifikator { + navn { + fornavn, + mellomnavn, + etternavn + }, + foedselsdato, + statsborgerskap, + kjoenn + }, + folkeregistermetadata { + ...folkeregistermetadataDetails + }, + metadata { + ...metadataDetails + } + } + } + code + } +} \ No newline at end of file From 32280fbe29cf0cb49d12f869b1cb1b402801f7aa Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Wed, 10 Jul 2024 18:05:11 +0200 Subject: [PATCH 156/161] =?UTF-8?q?F=C3=A5r=20kontaktet=20endepunktet=20fo?= =?UTF-8?q?r=20=C3=A5=20f=C3=A5=20organisasjoner=20m=C3=A5=20fikse=20encod?= =?UTF-8?q?ing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OrganisasjonFasteDataConsumer.java | 7 +-- .../command/GetOrganisasjonerCommand.java | 7 +-- .../consumers/pdl/PdlPersonConsumer.java | 6 +-- .../PdlBolkPersonCommand.java | 2 +- .../PdlPersonGetCommand.java | 2 +- .../domain/organisasjon/Organisasjon2.java | 48 +++++++++++++++++++ .../HentOrganisasjonNummerService.java | 3 +- .../src/main/resources/application.yml | 4 +- 8 files changed, 64 insertions(+), 15 deletions(-) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/{commad => command}/PdlBolkPersonCommand.java (99%) rename apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/{commad => command}/PdlPersonGetCommand.java (99%) create mode 100644 apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Organisasjon2.java diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java index eb494a477e3..74b91ddfb6a 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java @@ -3,6 +3,7 @@ import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command.GetOrganisasjonerCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.Organisasjon; import no.nav.testnav.libs.securitycore.domain.ServerProperties; @@ -30,9 +31,9 @@ public OrganisasjonFasteDataConsumer( this.tokenExchange = tokenExchange; } - public List hentOrganisasjoner() { + public List hentOrganisasjoner() { var accessToken = tokenExchange.exchange(serverProperties).block(); - List dto = new GetOrganisasjonerCommand(webClient, accessToken.getTokenValue()).call(); - return dto.stream().map(OrganisasjonDTO::getOrganisasjonsnummer).toList(); //org -> new Organisasjon(org.getOrganisasjonsnummer()) + List dto = new GetOrganisasjonerCommand(webClient, accessToken.getTokenValue()).call(); + return dto; //org -> new Organisasjon(org.getOrganisasjonsnummer()) } } diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java index fa250a3278a..1e1d9465179 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java @@ -2,6 +2,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; import org.springframework.web.reactive.function.client.WebClient; @@ -10,13 +11,13 @@ @Slf4j @RequiredArgsConstructor -public class GetOrganisasjonerCommand implements Callable> { +public class GetOrganisasjonerCommand implements Callable> { private final WebClient webClient; private final String token; @Override - public List call() { + public List call() { return webClient .get() .uri(builder -> builder @@ -27,7 +28,7 @@ public List call() { ) .header("Authorization", "Bearer " + token) .retrieve() - .bodyToFlux(OrganisasjonDTO.class) + .bodyToFlux(Organisasjon2.class) .collectList() .block(); } diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java index dbde526f5b1..b6c83d103df 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/PdlPersonConsumer.java @@ -5,10 +5,9 @@ import lombok.extern.slf4j.Slf4j; import lombok.val; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; -import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad.PdlBolkPersonCommand; -import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad.PdlPersonGetCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.command.PdlBolkPersonCommand; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.command.PdlPersonGetCommand; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.provider.v2.PdlMiljoer; -import no.nav.testnav.libs.securitycore.domain.AccessToken; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; import org.springframework.core.io.ClassPathResource; @@ -28,7 +27,6 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.JacksonExchangeStrategyUtil.getJacksonStrategy; -import static no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.JacksonExchangeStrategyUtil.getJacksonStrategy; @Slf4j @Service diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/command/PdlBolkPersonCommand.java similarity index 99% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/command/PdlBolkPersonCommand.java index dd378daabe0..271fe00eefd 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlBolkPersonCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/command/PdlBolkPersonCommand.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.command; import com.fasterxml.jackson.databind.JsonNode; import lombok.RequiredArgsConstructor; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/command/PdlPersonGetCommand.java similarity index 99% rename from apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java rename to apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/command/PdlPersonGetCommand.java index a33894d16f6..25d6ed1954b 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/commad/PdlPersonGetCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/pdl/command/PdlPersonGetCommand.java @@ -1,4 +1,4 @@ -package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.commad; +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.pdl.command; import com.fasterxml.jackson.databind.JsonNode; import lombok.RequiredArgsConstructor; diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Organisasjon2.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Organisasjon2.java new file mode 100644 index 00000000000..bb0ecfbc521 --- /dev/null +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/domain/organisasjon/Organisasjon2.java @@ -0,0 +1,48 @@ +package no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Value; +//import no.nav.registre.sdforvalter.domain.Ereg; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; + +@Value +@Builder +@AllArgsConstructor +public class Organisasjon2 { + @JsonProperty(required = true) + private String orgnummer; + @JsonProperty + private String enhetType; + @JsonProperty + private String navn; + @JsonProperty + private String juridiskEnhet; + @JsonProperty + private Adresse postadresse; + @JsonProperty + private Adresse forretningsadresser; + @JsonProperty + private String redigertnavn; +/* + public Organisasjon2(Ereg ereg) { + orgnummer = ereg.getOrgnr(); + enhetType = ereg.getEnhetstype(); + navn = ereg.getNavn() != null ? ereg.getNavn().toUpperCase() : null; + redigertnavn = ereg.getRedigertNavn() != null ? ereg.getRedigertNavn().toUpperCase() : null; + juridiskEnhet = ereg.getJuridiskEnhet(); + postadresse = ereg.getPostadresse() != null ? new Adresse(ereg.getPostadresse()) : null; + forretningsadresser = ereg.getForretningsAdresse() != null ? new Adresse(ereg.getForretningsAdresse()) : null; + } +*/ + public Organisasjon2(OrganisasjonDTO dto) { + orgnummer = dto.getOrganisasjonsnummer(); + enhetType = dto.getType(); + navn = dto.getNavn().getNavnelinje1(); + juridiskEnhet = dto.getDetaljer().getEnhetstype(); + postadresse = dto.getOrganisasjonDetaljer().getPostadresser() != null ? new Adresse(dto.getOrganisasjonDetaljer().getPostadresser().getFirst()) : null; + forretningsadresser = dto.getOrganisasjonDetaljer().getForretningsadresser() != null ? new Adresse(dto.getOrganisasjonDetaljer().getForretningsadresser().getFirst()) : null; + redigertnavn = dto.getNavn().getRedigertnavn(); + } +} diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java index 2ed92a0815c..564742e9db1 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java @@ -3,6 +3,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.OrganisasjonFasteDataConsumer; +import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; @@ -17,7 +18,7 @@ public class HentOrganisasjonNummerService { @EventListener(ApplicationReadyEvent.class) public void hentOrganisasjoner() { - List orgNummer = organisasjonFasteDataConsumer.hentOrganisasjoner(); + List orgNummer = organisasjonFasteDataConsumer.hentOrganisasjoner(); log.info("Hentet {} organisasjoner", orgNummer.size()); log.info("Første org nr: {}", orgNummer.get(0)); } diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml index f0e02307c2b..0054961ac7c 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/resources/application.yml @@ -67,7 +67,7 @@ consumers: name: testnav-tenor-search-service url: https://testdata.api.skatteetaten.no testnav-organisasjon-faste-data-service: + url: https://testnav-organisasjon-faste-data-service.intern.dev.nav.no name: testnav-organisasjon-faste-data-service - url: https://testnav-organisasjon-faste-data-service.dev-fss-pub.nais.io - cluster: dev-fss + cluster: dev-gcp namespace: dolly From d3afa0d418775f5ca5a28bfe2f58949db852921d Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Thu, 11 Jul 2024 08:51:02 +0200 Subject: [PATCH 157/161] =?UTF-8?q?F=C3=A5r=20hentet=20organisasjonsnr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/OrganisasjonFasteDataConsumer.java | 6 +++--- .../consumers/command/GetOrganisasjonerCommand.java | 11 ++++++----- .../service/HentOrganisasjonNummerService.java | 3 ++- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java index 74b91ddfb6a..722d413f261 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/OrganisasjonFasteDataConsumer.java @@ -4,7 +4,7 @@ import no.nav.registre.testnorge.levendearbeidsforholdansettelse.config.Consumers; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.command.GetOrganisasjonerCommand; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; -import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; +import no.nav.testnav.libs.dto.organisasjonfastedataservice.v1.OrganisasjonDTO; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.v1.Organisasjon; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; @@ -31,9 +31,9 @@ public OrganisasjonFasteDataConsumer( this.tokenExchange = tokenExchange; } - public List hentOrganisasjoner() { + public List hentOrganisasjoner() { var accessToken = tokenExchange.exchange(serverProperties).block(); - List dto = new GetOrganisasjonerCommand(webClient, accessToken.getTokenValue()).call(); + List dto = new GetOrganisasjonerCommand(webClient, accessToken.getTokenValue()).call(); return dto; //org -> new Organisasjon(org.getOrganisasjonsnummer()) } } diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java index 1e1d9465179..e27c9830e38 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/command/GetOrganisasjonerCommand.java @@ -2,8 +2,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; -import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; +//import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; +//import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.dto.OrganisasjonDTO; +import no.nav.testnav.libs.dto.organisasjonfastedataservice.v1.OrganisasjonDTO; import org.springframework.web.reactive.function.client.WebClient; import java.util.List; @@ -11,13 +12,13 @@ @Slf4j @RequiredArgsConstructor -public class GetOrganisasjonerCommand implements Callable> { +public class GetOrganisasjonerCommand implements Callable> { private final WebClient webClient; private final String token; @Override - public List call() { + public List call() { return webClient .get() .uri(builder -> builder @@ -28,7 +29,7 @@ public List call() { ) .header("Authorization", "Bearer " + token) .retrieve() - .bodyToFlux(Organisasjon2.class) + .bodyToFlux(OrganisasjonDTO.class) .collectList() .block(); } diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java index 564742e9db1..ec2980b3f7c 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/service/HentOrganisasjonNummerService.java @@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.consumers.OrganisasjonFasteDataConsumer; import no.nav.registre.testnorge.levendearbeidsforholdansettelse.domain.organisasjon.Organisasjon2; +import no.nav.testnav.libs.dto.organisasjonfastedataservice.v1.OrganisasjonDTO; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; @@ -18,7 +19,7 @@ public class HentOrganisasjonNummerService { @EventListener(ApplicationReadyEvent.class) public void hentOrganisasjoner() { - List orgNummer = organisasjonFasteDataConsumer.hentOrganisasjoner(); + List orgNummer = organisasjonFasteDataConsumer.hentOrganisasjoner(); log.info("Hentet {} organisasjoner", orgNummer.size()); log.info("Første org nr: {}", orgNummer.get(0)); } From c92162617d89066fcf2caf8aecb5648ad1acacd3 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 11 Jul 2024 08:59:52 +0200 Subject: [PATCH 158/161] Legger til workflow for github actions #deploy-levende-arbeidsforhold-ansettelse --- .../app.levende-arbeidsforhold-ansettelse.yml | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/app.levende-arbeidsforhold-ansettelse.yml diff --git a/.github/workflows/app.levende-arbeidsforhold-ansettelse.yml b/.github/workflows/app.levende-arbeidsforhold-ansettelse.yml new file mode 100644 index 00000000000..5c87616a576 --- /dev/null +++ b/.github/workflows/app.levende-arbeidsforhold-ansettelse.yml @@ -0,0 +1,23 @@ +name: levende-arbeidsforhold-ansettelse + +on: + push: + paths: + - libs/commands/** + - libs/data-transfer-objects/** + - libs/security-core/** + - libs/servlet-core/** + - libs/servlet-security/** + - apps/levende-arbeidsforhold-service/** + - .github/workflows/app.levende-arbeidsforhold-ansettelse.yml + +jobs: + workflow: + uses: ./.github/workflows/common.workflow.backend.yml + with: + working-directory: "apps/levende-arbeidsforhold-ansettelse" + deploy-tag: "#deploy-levende-arbeidsforhold-ansettelse" + permissions: + contents: read + id-token: write + secrets: inherit From a06977ae49b612f49b8c8a9ac581ef4bafff7fdb Mon Sep 17 00:00:00 2001 From: Andrea Devold Fjeld Date: Thu, 11 Jul 2024 09:24:29 +0200 Subject: [PATCH 159/161] Lagt til gradle.wrapper --- .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43453 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 +++ .../levende-arbeidsforhold-ansettelse/gradlew | 51 +++++++++++------- .../gradlew.bat | 35 ++++++------ 4 files changed, 59 insertions(+), 34 deletions(-) create mode 100644 apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.jar create mode 100644 apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.properties diff --git a/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.jar b/apps/levende-arbeidsforhold-ansettelse/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e6441136f3d4ba8a0da8d277868979cfbc8ad796 GIT binary patch literal 43453 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 yu?e%!_ptzGB|8GrCfu%p?(_ zQccdaaVK$5bz;*rnyK{_SQYM>;aES6Qs^lj9lEs6_J+%nIiuQC*fN;z8md>r_~Mfl zU%p5Dt_YT>gQqfr@`cR!$NWr~+`CZb%dn;WtzrAOI>P_JtsB76PYe*<%H(y>qx-`Kq!X_; z<{RpAqYhE=L1r*M)gNF3B8r(<%8mo*SR2hu zccLRZwGARt)Hlo1euqTyM>^!HK*!Q2P;4UYrysje@;(<|$&%vQekbn|0Ruu_Io(w4#%p6ld2Yp7tlA`Y$cciThP zKzNGIMPXX%&Ud0uQh!uQZz|FB`4KGD?3!ND?wQt6!n*f4EmCoJUh&b?;B{|lxs#F- z31~HQ`SF4x$&v00@(P+j1pAaj5!s`)b2RDBp*PB=2IB>oBF!*6vwr7Dp%zpAx*dPr zb@Zjq^XjN?O4QcZ*O+8>)|HlrR>oD*?WQl5ri3R#2?*W6iJ>>kH%KnnME&TT@ZzrHS$Q%LC?n|e>V+D+8D zYc4)QddFz7I8#}y#Wj6>4P%34dZH~OUDb?uP%-E zwjXM(?Sg~1!|wI(RVuxbu)-rH+O=igSho_pDCw(c6b=P zKk4ATlB?bj9+HHlh<_!&z0rx13K3ZrAR8W)!@Y}o`?a*JJsD+twZIv`W)@Y?Amu_u zz``@-e2X}27$i(2=9rvIu5uTUOVhzwu%mNazS|lZb&PT;XE2|B&W1>=B58#*!~D&) zfVmJGg8UdP*fx(>Cj^?yS^zH#o-$Q-*$SnK(ZVFkw+er=>N^7!)FtP3y~Xxnu^nzY zikgB>Nj0%;WOltWIob|}%lo?_C7<``a5hEkx&1ku$|)i>Rh6@3h*`slY=9U}(Ql_< zaNG*J8vb&@zpdhAvv`?{=zDedJ23TD&Zg__snRAH4eh~^oawdYi6A3w8<Ozh@Kw)#bdktM^GVb zrG08?0bG?|NG+w^&JvD*7LAbjED{_Zkc`3H!My>0u5Q}m!+6VokMLXxl`Mkd=g&Xx z-a>m*#G3SLlhbKB!)tnzfWOBV;u;ftU}S!NdD5+YtOjLg?X}dl>7m^gOpihrf1;PY zvll&>dIuUGs{Qnd- zwIR3oIrct8Va^Tm0t#(bJD7c$Z7DO9*7NnRZorrSm`b`cxz>OIC;jSE3DO8`hX955ui`s%||YQtt2 z5DNA&pG-V+4oI2s*x^>-$6J?p=I>C|9wZF8z;VjR??Icg?1w2v5Me+FgAeGGa8(3S z4vg*$>zC-WIVZtJ7}o9{D-7d>zCe|z#<9>CFve-OPAYsneTb^JH!Enaza#j}^mXy1 z+ULn^10+rWLF6j2>Ya@@Kq?26>AqK{A_| zQKb*~F1>sE*=d?A?W7N2j?L09_7n+HGi{VY;MoTGr_)G9)ot$p!-UY5zZ2Xtbm=t z@dpPSGwgH=QtIcEulQNI>S-#ifbnO5EWkI;$A|pxJd885oM+ zGZ0_0gDvG8q2xebj+fbCHYfAXuZStH2j~|d^sBAzo46(K8n59+T6rzBwK)^rfPT+B zyIFw)9YC-V^rhtK`!3jrhmW-sTmM+tPH+;nwjL#-SjQPUZ53L@A>y*rt(#M(qsiB2 zx6B)dI}6Wlsw%bJ8h|(lhkJVogQZA&n{?Vgs6gNSXzuZpEyu*xySy8ro07QZ7Vk1!3tJphN_5V7qOiyK8p z#@jcDD8nmtYi1^l8ml;AF<#IPK?!pqf9D4moYk>d99Im}Jtwj6c#+A;f)CQ*f-hZ< z=p_T86jog%!p)D&5g9taSwYi&eP z#JuEK%+NULWus;0w32-SYFku#i}d~+{Pkho&^{;RxzP&0!RCm3-9K6`>KZpnzS6?L z^H^V*s!8<>x8bomvD%rh>Zp3>Db%kyin;qtl+jAv8Oo~1g~mqGAC&Qi_wy|xEt2iz zWAJEfTV%cl2Cs<1L&DLRVVH05EDq`pH7Oh7sR`NNkL%wi}8n>IXcO40hp+J+sC!W?!krJf!GJNE8uj zg-y~Ns-<~D?yqbzVRB}G>0A^f0!^N7l=$m0OdZuqAOQqLc zX?AEGr1Ht+inZ-Qiwnl@Z0qukd__a!C*CKuGdy5#nD7VUBM^6OCpxCa2A(X;e0&V4 zM&WR8+wErQ7UIc6LY~Q9x%Sn*Tn>>P`^t&idaOEnOd(Ufw#>NoR^1QdhJ8s`h^|R_ zXX`c5*O~Xdvh%q;7L!_!ohf$NfEBmCde|#uVZvEo>OfEq%+Ns7&_f$OR9xsihRpBb z+cjk8LyDm@U{YN>+r46?nn{7Gh(;WhFw6GAxtcKD+YWV?uge>;+q#Xx4!GpRkVZYu zzsF}1)7$?%s9g9CH=Zs+B%M_)+~*j3L0&Q9u7!|+T`^O{xE6qvAP?XWv9_MrZKdo& z%IyU)$Q95AB4!#hT!_dA>4e@zjOBD*Y=XjtMm)V|+IXzjuM;(l+8aA5#Kaz_$rR6! zj>#&^DidYD$nUY(D$mH`9eb|dtV0b{S>H6FBfq>t5`;OxA4Nn{J(+XihF(stSche7$es&~N$epi&PDM_N`As;*9D^L==2Q7Z2zD+CiU(|+-kL*VG+&9!Yb3LgPy?A zm7Z&^qRG_JIxK7-FBzZI3Q<;{`DIxtc48k> zc|0dmX;Z=W$+)qE)~`yn6MdoJ4co;%!`ddy+FV538Y)j(vg}5*k(WK)KWZ3WaOG!8 z!syGn=s{H$odtpqFrT#JGM*utN7B((abXnpDM6w56nhw}OY}0TiTG1#f*VFZr+^-g zbP10`$LPq_;PvrA1XXlyx2uM^mrjTzX}w{yuLo-cOClE8MMk47T25G8M!9Z5ypOSV zAJUBGEg5L2fY)ZGJb^E34R2zJ?}Vf>{~gB!8=5Z) z9y$>5c)=;o0HeHHSuE4U)#vG&KF|I%-cF6f$~pdYJWk_dD}iOA>iA$O$+4%@>JU08 zS`ep)$XLPJ+n0_i@PkF#ri6T8?ZeAot$6JIYHm&P6EB=BiaNY|aA$W0I+nz*zkz_z zkEru!tj!QUffq%)8y0y`T&`fuus-1p>=^hnBiBqD^hXrPs`PY9tU3m0np~rISY09> z`P3s=-kt_cYcxWd{de@}TwSqg*xVhp;E9zCsnXo6z z?f&Sv^U7n4`xr=mXle94HzOdN!2kB~4=%)u&N!+2;z6UYKUDqi-s6AZ!haB;@&B`? z_TRX0%@suz^TRdCb?!vNJYPY8L_}&07uySH9%W^Tc&1pia6y1q#?*Drf}GjGbPjBS zbOPcUY#*$3sL2x4v_i*Y=N7E$mR}J%|GUI(>WEr+28+V z%v5{#e!UF*6~G&%;l*q*$V?&r$Pp^sE^i-0$+RH3ERUUdQ0>rAq2(2QAbG}$y{de( z>{qD~GGuOk559Y@%$?N^1ApVL_a704>8OD%8Y%8B;FCt%AoPu8*D1 zLB5X>b}Syz81pn;xnB}%0FnwazlWfUV)Z-~rZg6~b z6!9J$EcE&sEbzcy?CI~=boWA&eeIa%z(7SE^qgVLz??1Vbc1*aRvc%Mri)AJaAG!p z$X!_9Ds;Zz)f+;%s&dRcJt2==P{^j3bf0M=nJd&xwUGlUFn?H=2W(*2I2Gdu zv!gYCwM10aeus)`RIZSrCK=&oKaO_Ry~D1B5!y0R=%!i2*KfXGYX&gNv_u+n9wiR5 z*e$Zjju&ODRW3phN925%S(jL+bCHv6rZtc?!*`1TyYXT6%Ju=|X;6D@lq$8T zW{Y|e39ioPez(pBH%k)HzFITXHvnD6hw^lIoUMA;qAJ^CU?top1fo@s7xT13Fvn1H z6JWa-6+FJF#x>~+A;D~;VDs26>^oH0EI`IYT2iagy23?nyJ==i{g4%HrAf1-*v zK1)~@&(KkwR7TL}L(A@C_S0G;-GMDy=MJn2$FP5s<%wC)4jC5PXoxrQBFZ_k0P{{s@sz+gX`-!=T8rcB(=7vW}^K6oLWMmp(rwDh}b zwaGGd>yEy6fHv%jM$yJXo5oMAQ>c9j`**}F?MCry;T@47@r?&sKHgVe$MCqk#Z_3S z1GZI~nOEN*P~+UaFGnj{{Jo@16`(qVNtbU>O0Hf57-P>x8Jikp=`s8xWs^dAJ9lCQ z)GFm+=OV%AMVqVATtN@|vp61VVAHRn87}%PC^RAzJ%JngmZTasWBAWsoAqBU+8L8u z4A&Pe?fmTm0?mK-BL9t+{y7o(7jm+RpOhL9KnY#E&qu^}B6=K_dB}*VlSEiC9fn)+V=J;OnN)Ta5v66ic1rG+dGAJ1 z1%Zb_+!$=tQ~lxQrzv3x#CPb?CekEkA}0MYSgx$Jdd}q8+R=ma$|&1a#)TQ=l$1tQ z=tL9&_^vJ)Pk}EDO-va`UCT1m#Uty1{v^A3P~83_#v^ozH}6*9mIjIr;t3Uv%@VeW zGL6(CwCUp)Jq%G0bIG%?{_*Y#5IHf*5M@wPo6A{$Um++Co$wLC=J1aoG93&T7Ho}P z=mGEPP7GbvoG!uD$k(H3A$Z))+i{Hy?QHdk>3xSBXR0j!11O^mEe9RHmw!pvzv?Ua~2_l2Yh~_!s1qS`|0~0)YsbHSz8!mG)WiJE| z2f($6TQtt6L_f~ApQYQKSb=`053LgrQq7G@98#igV>y#i==-nEjQ!XNu9 z~;mE+gtj4IDDNQJ~JVk5Ux6&LCSFL!y=>79kE9=V}J7tD==Ga+IW zX)r7>VZ9dY=V&}DR))xUoV!u(Z|%3ciQi_2jl}3=$Agc(`RPb z8kEBpvY>1FGQ9W$n>Cq=DIpski};nE)`p3IUw1Oz0|wxll^)4dq3;CCY@RyJgFgc# zKouFh!`?Xuo{IMz^xi-h=StCis_M7yq$u) z?XHvw*HP0VgR+KR6wI)jEMX|ssqYvSf*_3W8zVTQzD?3>H!#>InzpSO)@SC8q*ii- z%%h}_#0{4JG;Jm`4zg};BPTGkYamx$Xo#O~lBirRY)q=5M45n{GCfV7h9qwyu1NxOMoP4)jjZMxmT|IQQh0U7C$EbnMN<3)Kk?fFHYq$d|ICu>KbY_hO zTZM+uKHe(cIZfEqyzyYSUBZa8;Fcut-GN!HSA9ius`ltNebF46ZX_BbZNU}}ZOm{M2&nANL9@0qvih15(|`S~z}m&h!u4x~(%MAO$jHRWNfuxWF#B)E&g3ghSQ9|> z(MFaLQj)NE0lowyjvg8z0#m6FIuKE9lDO~Glg}nSb7`~^&#(Lw{}GVOS>U)m8bF}x zVjbXljBm34Cs-yM6TVusr+3kYFjr28STT3g056y3cH5Tmge~ASxBj z%|yb>$eF;WgrcOZf569sDZOVwoo%8>XO>XQOX1OyN9I-SQgrm;U;+#3OI(zrWyow3 zk==|{lt2xrQ%FIXOTejR>;wv(Pb8u8}BUpx?yd(Abh6? zsoO3VYWkeLnF43&@*#MQ9-i-d0t*xN-UEyNKeyNMHw|A(k(_6QKO=nKMCxD(W(Yop zsRQ)QeL4X3Lxp^L%wzi2-WVSsf61dqliPUM7srDB?Wm6Lzn0&{*}|IsKQW;02(Y&| zaTKv|`U(pSzuvR6Rduu$wzK_W-Y-7>7s?G$)U}&uK;<>vU}^^ns@Z!p+9?St1s)dG zK%y6xkPyyS1$~&6v{kl?Md6gwM|>mt6Upm>oa8RLD^8T{0?HC!Z>;(Bob7el(DV6x zi`I)$&E&ngwFS@bi4^xFLAn`=fzTC;aimE^!cMI2n@Vo%Ae-ne`RF((&5y6xsjjAZ zVguVoQ?Z9uk$2ON;ersE%PU*xGO@T*;j1BO5#TuZKEf(mB7|g7pcEA=nYJ{s3vlbg zd4-DUlD{*6o%Gc^N!Nptgay>j6E5;3psI+C3Q!1ZIbeCubW%w4pq9)MSDyB{HLm|k zxv-{$$A*pS@csolri$Ge<4VZ}e~78JOL-EVyrbxKra^d{?|NnPp86!q>t<&IP07?Z z^>~IK^k#OEKgRH+LjllZXk7iA>2cfH6+(e&9ku5poo~6y{GC5>(bRK7hwjiurqAiZ zg*DmtgY}v83IjE&AbiWgMyFbaRUPZ{lYiz$U^&Zt2YjG<%m((&_JUbZcfJ22(>bi5 z!J?<7AySj0JZ&<-qXX;mcV!f~>G=sB0KnjWca4}vrtunD^1TrpfeS^4dvFr!65knK zZh`d;*VOkPs4*-9kL>$GP0`(M!j~B;#x?Ba~&s6CopvO86oM?-? zOw#dIRc;6A6T?B`Qp%^<U5 z19x(ywSH$_N+Io!6;e?`tWaM$`=Db!gzx|lQ${DG!zb1Zl&|{kX0y6xvO1o z220r<-oaS^^R2pEyY;=Qllqpmue|5yI~D|iI!IGt@iod{Opz@*ml^w2bNs)p`M(Io z|E;;m*Xpjd9l)4G#KaWfV(t8YUn@A;nK^#xgv=LtnArX|vWQVuw3}B${h+frU2>9^ z!l6)!Uo4`5k`<<;E(ido7M6lKTgWezNLq>U*=uz&s=cc$1%>VrAeOoUtA|T6gO4>UNqsdK=NF*8|~*sl&wI=x9-EGiq*aqV!(VVXA57 zw9*o6Ir8Lj1npUXvlevtn(_+^X5rzdR>#(}4YcB9O50q97%rW2me5_L=%ffYPUSRc z!vv?Kv>dH994Qi>U(a<0KF6NH5b16enCp+mw^Hb3Xs1^tThFpz!3QuN#}KBbww`(h z7GO)1olDqy6?T$()R7y%NYx*B0k_2IBiZ14&8|JPFxeMF{vSTxF-Vi3+ZOI=Thq2} zyQgjYY1_7^ZQHh{?P))4+qUiQJLi1&{yE>h?~jU%tjdV0h|FENbM3X(KnJdPKc?~k zh=^Ixv*+smUll!DTWH!jrV*wSh*(mx0o6}1@JExzF(#9FXgmTXVoU+>kDe68N)dkQ zH#_98Zv$}lQwjKL@yBd;U(UD0UCl322=pav<=6g>03{O_3oKTq;9bLFX1ia*lw;#K zOiYDcBJf)82->83N_Y(J7Kr_3lE)hAu;)Q(nUVydv+l+nQ$?|%MWTy`t>{havFSQloHwiIkGK9YZ79^9?AZo0ZyQlVR#}lF%dn5n%xYksXf8gnBm=wO7g_^! zauQ-bH1Dc@3ItZ-9D_*pH}p!IG7j8A_o94#~>$LR|TFq zZ-b00*nuw|-5C2lJDCw&8p5N~Z1J&TrcyErds&!l3$eSz%`(*izc;-?HAFD9AHb-| z>)id`QCrzRws^9(#&=pIx9OEf2rmlob8sK&xPCWS+nD~qzU|qG6KwA{zbikcfQrdH z+ zQg>O<`K4L8rN7`GJB0*3<3`z({lWe#K!4AZLsI{%z#ja^OpfjU{!{)x0ZH~RB0W5X zTwN^w=|nA!4PEU2=LR05x~}|B&ZP?#pNgDMwD*ajI6oJqv!L81gu=KpqH22avXf0w zX3HjbCI!n9>l046)5rr5&v5ja!xkKK42zmqHzPx$9Nn_MZk`gLeSLgC=LFf;H1O#B zn=8|^1iRrujHfbgA+8i<9jaXc;CQBAmQvMGQPhFec2H1knCK2x!T`e6soyrqCamX% zTQ4dX_E*8so)E*TB$*io{$c6X)~{aWfaqdTh=xEeGvOAN9H&-t5tEE-qso<+C!2>+ zskX51H-H}#X{A75wqFe-J{?o8Bx|>fTBtl&tcbdR|132Ztqu5X0i-pisB-z8n71%q%>EF}yy5?z=Ve`}hVh{Drv1YWL zW=%ug_&chF11gDv3D6B)Tz5g54H0mDHNjuKZ+)CKFk4Z|$RD zfRuKLW`1B>B?*RUfVd0+u8h3r-{@fZ{k)c!93t1b0+Q9vOaRnEn1*IL>5Z4E4dZ!7 ztp4GP-^1d>8~LMeb}bW!(aAnB1tM_*la=Xx)q(I0Y@__Zd$!KYb8T2VBRw%e$iSdZ zkwdMwd}eV9q*;YvrBFTv1>1+}{H!JK2M*C|TNe$ZSA>UHKk);wz$(F$rXVc|sI^lD zV^?_J!3cLM;GJuBMbftbaRUs$;F}HDEDtIeHQ)^EJJ1F9FKJTGH<(Jj`phE6OuvE) zqK^K`;3S{Y#1M@8yRQwH`?kHMq4tHX#rJ>5lY3DM#o@or4&^_xtBC(|JpGTfrbGkA z2Tu+AyT^pHannww!4^!$5?@5v`LYy~T`qs7SYt$JgrY(w%C+IWA;ZkwEF)u5sDvOK zGk;G>Mh&elvXDcV69J_h02l&O;!{$({fng9Rlc3ID#tmB^FIG^w{HLUpF+iB`|
NnX)EH+Nua)3Y(c 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 /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +131,29 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +198,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ @@ -205,6 +214,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/apps/levende-arbeidsforhold-ansettelse/gradlew.bat b/apps/levende-arbeidsforhold-ansettelse/gradlew.bat index 107acd32c4e..25da30dbdee 100644 --- a/apps/levende-arbeidsforhold-ansettelse/gradlew.bat +++ b/apps/levende-arbeidsforhold-ansettelse/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,13 +41,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -56,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal From 037e2584292f0236468154d7b0064dc5316b4ff2 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 11 Jul 2024 10:18:49 +0200 Subject: [PATCH 160/161] =?UTF-8?q?Endre=20java-versjon=20for=20=C3=A5=20v?= =?UTF-8?q?=C3=A6re=20kompatibel=20med=20gradle=20wrapper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/levende-arbeidsforhold-ansettelse/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/build.gradle b/apps/levende-arbeidsforhold-ansettelse/build.gradle index f90b176aee5..7bd72bed18d 100644 --- a/apps/levende-arbeidsforhold-ansettelse/build.gradle +++ b/apps/levende-arbeidsforhold-ansettelse/build.gradle @@ -89,6 +89,6 @@ dependencies { } java { toolchain { - languageVersion = JavaLanguageVersion.of(21) + languageVersion = JavaLanguageVersion.of(22) } } From 1f1b029abdce837451086fa2eee3044aeb7a11a2 Mon Sep 17 00:00:00 2001 From: ulrikHesmyr Date: Thu, 11 Jul 2024 10:31:58 +0200 Subject: [PATCH 161/161] =?UTF-8?q?Endre=20java-versjon=20for=20=C3=A5=20v?= =?UTF-8?q?=C3=A6re=20kompatibel=20med=20gradle=20wrapper=20#deploy-levend?= =?UTF-8?q?e-arbeidsforhold-ansettelse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumers/TenorConsumer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/TenorConsumer.java b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/TenorConsumer.java index b12f838a103..4ab86735d34 100644 --- a/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/TenorConsumer.java +++ b/apps/levende-arbeidsforhold-ansettelse/src/main/java/no/nav/registre/testnorge/levendearbeidsforholdansettelse/consumers/TenorConsumer.java @@ -70,4 +70,4 @@ public void consume() throws JsonProcessingException { log.info(rawResponse.getDokumentListe().getFirst().getKommunenr()); } } -} \ No newline at end of file +}