diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/DollyBackendApplicationStarter.java b/apps/dolly-backend/src/main/java/no/nav/dolly/DollyBackendApplicationStarter.java index f0ef428e58d..6af8668f777 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/DollyBackendApplicationStarter.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/DollyBackendApplicationStarter.java @@ -10,4 +10,4 @@ public static void main(String[] args) { SpringApplication.run(DollyBackendApplicationStarter.class, args); } -} +} \ No newline at end of file diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/config/CachingConfig.java b/apps/dolly-backend/src/main/java/no/nav/dolly/config/CachingConfig.java index 67c4e88d522..769530033ad 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/config/CachingConfig.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/config/CachingConfig.java @@ -20,8 +20,6 @@ public class CachingConfig { public static final String CACHE_BRUKER = "bruker"; public static final String CACHE_GRUPPE = "gruppe"; public static final String CACHE_HELSEPERSONELL = "helsepersonell"; - public static final String CACHE_KODEVERK = "kodeverk"; - public static final String CACHE_KODEVERK_2 = "kodeverk2"; @Bean @Profile({ "dev", "prod" }) @@ -29,9 +27,7 @@ public CacheManager cacheManager(Caffeine caffeine) { var caffeineCacheManager = new CaffeineCacheManager(CACHE_BESTILLING, CACHE_BRUKER, CACHE_GRUPPE, - CACHE_HELSEPERSONELL, - CACHE_KODEVERK, - CACHE_KODEVERK_2 + CACHE_HELSEPERSONELL ); caffeineCacheManager.setCaffeine(caffeine); caffeineCacheManager.setAsyncCacheMode(true); diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/config/Consumers.java b/apps/dolly-backend/src/main/java/no/nav/dolly/config/Consumers.java index c9204dc8cdb..971e4b2caec 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/config/Consumers.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/config/Consumers.java @@ -9,14 +9,6 @@ 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) @@ -34,10 +26,11 @@ public class Consumers { private ServerProperties testnavInntektsmeldingService; private ServerProperties testnavInntektstubProxy; private ServerProperties testnavInstProxy; - private ServerProperties kodeverkApi; + private ServerProperties testnavKodeverkService; private ServerProperties testnavKontoregisterPersonProxy; private ServerProperties testnavKrrstubProxy; private ServerProperties testnavMedlProxy; + private ServerProperties testnavMiljoerService; private ServerProperties testnavNorg2Proxy; private ServerProperties testnavOrganisasjonForvalter; private ServerProperties testnavOrganisasjonService; @@ -50,7 +43,5 @@ public class Consumers { private ServerProperties testnavSykemeldingApi; private ServerProperties testnavSyntSykemeldingApi; private ServerProperties testnavTpsMessagingService; - private ServerProperties testnavMiljoerService; private ServerProperties testnavUdistubProxy; - } diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/KodeverkConsumer.java b/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/KodeverkConsumer.java index 81bd759e76f..2a1d2ecd007 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/KodeverkConsumer.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/KodeverkConsumer.java @@ -2,42 +2,20 @@ import lombok.extern.slf4j.Slf4j; import no.nav.dolly.config.Consumers; -import no.nav.dolly.consumer.kodeverk.domain.KodeverkBetydningerResponse; -import no.nav.dolly.metrics.Timed; -import no.nav.testnav.libs.reactivecore.utils.WebClientFilter; -import no.nav.testnav.libs.securitycore.config.UserConstant; +import no.nav.dolly.consumer.kodeverk.command.KodeverkGetCommand; +import no.nav.testnav.libs.dto.kodeverkservice.v1.KodeverkDTO; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import no.nav.testnav.libs.standalone.servletsecurity.exchange.TokenExchange; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.http.HttpHeaders; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.function.client.ExchangeStrategies; +import org.springframework.stereotype.Service; import org.springframework.web.reactive.function.client.WebClient; -import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; -import reactor.util.retry.Retry; -import java.time.Duration; -import java.time.LocalDate; import java.util.Map; -import java.util.Map.Entry; -import java.util.stream.Collectors; -import static no.nav.dolly.config.CachingConfig.CACHE_KODEVERK_2; -import static no.nav.dolly.domain.CommonKeysAndUtils.CONSUMER; -import static no.nav.dolly.domain.CommonKeysAndUtils.HEADER_NAV_CALL_ID; -import static no.nav.dolly.domain.CommonKeysAndUtils.HEADER_NAV_CONSUMER_ID; -import static no.nav.dolly.util.CallIdUtil.generateCallId; -import static no.nav.dolly.util.TokenXUtil.getUserJwt; - -@Component +@Service @Slf4j public class KodeverkConsumer { - private static final String KODEVERK_URL_BEGINNING = "/api/v1/kodeverk"; - private static final String KODEVERK_URL_KODER = "koder"; - private static final String KODEVERK_URL_BETYDNINGER = "betydninger"; - private final TokenExchange tokenService; private final WebClient webClient; private final ServerProperties serverProperties; @@ -45,68 +23,21 @@ public class KodeverkConsumer { public KodeverkConsumer( TokenExchange tokenService, Consumers consumers, - WebClient.Builder webClientBuilder - ) { + WebClient.Builder webClientBuilder) { + this.tokenService = tokenService; - serverProperties = consumers.getKodeverkApi(); + serverProperties = consumers.getTestnavKodeverkService(); this.webClient = webClientBuilder - .exchangeStrategies( - ExchangeStrategies - .builder() - .codecs(configurer -> configurer - .defaultCodecs() - .maxInMemorySize(32 * 1024 * 1024)) - .build()) .baseUrl(serverProperties.getUrl()) .build(); } - private static String getNorskBokmaal(Entry> entry) { - - return entry.getValue().get(0).getBeskrivelser().get("nb").getTekst(); - } - - @Timed(name = "providers", tags = {"operation", "hentKodeverk"}) - public Flux fetchKodeverkByName(String kodeverk) { - - return getKodeverk(kodeverk); - } - - @Cacheable(CACHE_KODEVERK_2) - @Timed(name = "providers", tags = {"operation", "hentKodeverk"}) public Mono> getKodeverkByName(String kodeverk) { - return getKodeverk(kodeverk) - .map(KodeverkBetydningerResponse::getBetydninger) - .map(Map::entrySet) - .flatMap(Flux::fromIterable) - .filter(entry -> !entry.getValue().isEmpty()) - .filter(entry -> LocalDate.now().isAfter(entry.getValue().get(0).getGyldigFra()) && - LocalDate.now().isBefore(entry.getValue().get(0).getGyldigTil())) - .collect(Collectors.toMap(Entry::getKey, KodeverkConsumer::getNorskBokmaal)) - .cache(Duration.ofHours(9)); - } - - private Flux getKodeverk(String kodeverk) { - return tokenService.exchange(serverProperties) - .flatMapMany(token -> webClient - .get() - .uri(uriBuilder -> uriBuilder - .path(KODEVERK_URL_BEGINNING) - .pathSegment(kodeverk) - .pathSegment(KODEVERK_URL_KODER) - .pathSegment(KODEVERK_URL_BETYDNINGER) - .queryParam("ekskluderUgyldige", true) - .queryParam("spraak", "nb") - .build()) - .header(HttpHeaders.AUTHORIZATION, "Bearer " + token.getTokenValue()) - .header(UserConstant.USER_HEADER_JWT, getUserJwt()) - .header(HEADER_NAV_CONSUMER_ID, CONSUMER) - .header(HEADER_NAV_CALL_ID, generateCallId()) - .retrieve() - .bodyToFlux(KodeverkBetydningerResponse.class) - .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) - .filter(WebClientFilter::is5xxException))); + .flatMap(token -> new KodeverkGetCommand(webClient, kodeverk, token.getTokenValue()).call()) + .doOnNext(response -> log.info("Hentet kodeverk {}, status {} melding {}", + response.getKodeverknavn(), response.getStatus(), response.getMessage())) + .map(KodeverkDTO::getKodeverk); } } diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/KodeverkMapper.java b/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/KodeverkMapper.java deleted file mode 100644 index 4cdaa04937c..00000000000 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/KodeverkMapper.java +++ /dev/null @@ -1,51 +0,0 @@ -package no.nav.dolly.consumer.kodeverk; - -import no.nav.dolly.consumer.kodeverk.domain.KodeverkBetydningerResponse; -import no.nav.dolly.consumer.kodeverk.domain.KodeverkBetydningerResponse.Betydning; -import no.nav.dolly.domain.resultset.kodeverk.KodeAdjusted; -import no.nav.dolly.domain.resultset.kodeverk.KodeverkAdjusted; -import org.springframework.stereotype.Component; -import reactor.core.publisher.Flux; - -import java.time.Duration; -import java.util.List; -import java.util.Map; - -import static java.util.Objects.nonNull; - -/*** - * Mapper fra Betydninger i Kodeverkapp til Kodeverkobjekter som er lett for frontend å bruke - * Tar nå kun første Betydningen den finner for en kode(value) siden man henter gyldig så vil det i fleste tilfeller gi 1 beskrivelse (?) - * Vurder om man skal ta en hensyn til flere Betydninger per kode etter hvert. - */ -@Component -public class KodeverkMapper { - - private static final String KODE_BOKMAAL = "nb"; - - public Flux mapBetydningToAdjustedKodeverk(String kodeverkNavn, - Flux kodeverkBetydningerResponse) { - - return kodeverkBetydningerResponse - .map(KodeverkBetydningerResponse::getBetydninger) - .map(betydning -> KodeverkAdjusted.builder() - .name(kodeverkNavn) - .koder(extractKoderFromBetydninger(betydning)) - .build()) - .cache(Duration.ofHours(9)); - } - - private List extractKoderFromBetydninger(Map> kodeMap) { - - return kodeMap.entrySet().stream() - .filter(e -> nonNull(e.getValue()) && !e.getValue().isEmpty()) - .map(e -> KodeAdjusted.builder() - .label(e.getValue().get(0).getBeskrivelser().get(KODE_BOKMAAL).getTerm()) - .value(e.getKey()) - .gyldigFra(e.getValue().get(0).getGyldigFra()) - .gyldigTil(e.getValue().get(0).getGyldigTil()) - .build()) - .sorted((kode1, kode2) -> kode1.getLabel().compareToIgnoreCase(kode2.getLabel())) - .toList(); - } -} \ No newline at end of file diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/command/KodeverkGetCommand.java b/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/command/KodeverkGetCommand.java new file mode 100644 index 00000000000..91b2382e5cb --- /dev/null +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/command/KodeverkGetCommand.java @@ -0,0 +1,43 @@ +package no.nav.dolly.consumer.kodeverk.command; + +import lombok.RequiredArgsConstructor; +import no.nav.testnav.libs.dto.kodeverkservice.v1.KodeverkDTO; +import no.nav.testnav.libs.reactivecore.utils.WebClientFilter; +import org.springframework.http.HttpHeaders; +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.concurrent.Callable; + +@RequiredArgsConstructor +public class KodeverkGetCommand implements Callable> { + + private static final String KODEVERK_URL = "/api/v1/kodeverk"; + private static final String KODEVERK = "kodeverk"; + + private final WebClient webClient; + private final String kodeverk; + private final String token; + + @Override + public Mono call() { + + return webClient.get() + .uri(uriBuilder -> uriBuilder.path(KODEVERK_URL) + .queryParam(KODEVERK, kodeverk) + .build()) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .retrieve() + .bodyToMono(KodeverkDTO.class) + .doOnError(WebClientFilter::logErrorMessage) + .onErrorResume(error -> Mono.just(KodeverkDTO.builder() + .kodeverknavn(kodeverk) + .status(WebClientFilter.getStatus(error)) + .message(WebClientFilter.getMessage(error)) + .build())) + .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) + .filter(WebClientFilter::is5xxException)); + } +} diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/domain/KodeverkBetydningerResponse.java b/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/domain/KodeverkBetydningerResponse.java deleted file mode 100644 index 0297338e92b..00000000000 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/consumer/kodeverk/domain/KodeverkBetydningerResponse.java +++ /dev/null @@ -1,57 +0,0 @@ -package no.nav.dolly.consumer.kodeverk.domain; - -import static java.util.Objects.isNull; - -import java.time.LocalDate; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class KodeverkBetydningerResponse { - - private Map> betydninger; - - public Map> getBetydninger() { - if (isNull(betydninger)) { - betydninger = new HashMap<>(); - } - return this.betydninger; - } - - @Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class Betydning { - - private LocalDate gyldigFra; - private LocalDate gyldigTil; - private Map beskrivelser; - - public Map getBeskrivelser() { - if (isNull(beskrivelser)) { - beskrivelser = new HashMap<>(); - } - return beskrivelser; - } - } - - @Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class Beskrivelse { - - private String term; - private String tekst; - } -} diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/domain/resultset/kodeverk/KodeAdjusted.java b/apps/dolly-backend/src/main/java/no/nav/dolly/domain/resultset/kodeverk/KodeAdjusted.java deleted file mode 100644 index 76375b3d4bd..00000000000 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/domain/resultset/kodeverk/KodeAdjusted.java +++ /dev/null @@ -1,21 +0,0 @@ -package no.nav.dolly.domain.resultset.kodeverk; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -import java.time.LocalDate; - -@Getter -@Setter -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class KodeAdjusted { - private String label; - private String value; - private LocalDate gyldigFra; - private LocalDate gyldigTil; -} diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/domain/resultset/kodeverk/KodeverkAdjusted.java b/apps/dolly-backend/src/main/java/no/nav/dolly/domain/resultset/kodeverk/KodeverkAdjusted.java deleted file mode 100644 index 60e9bf217b7..00000000000 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/domain/resultset/kodeverk/KodeverkAdjusted.java +++ /dev/null @@ -1,30 +0,0 @@ -package no.nav.dolly.domain.resultset.kodeverk; - -import static java.util.Objects.isNull; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -import java.util.ArrayList; -import java.util.List; - -@Getter -@Setter -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class KodeverkAdjusted { - - private String name; - private List koder; - - public List getKoder() { - if (isNull(koder)) { - koder = new ArrayList<>(); - } - return koder; - } -} diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/provider/api/OppslagController.java b/apps/dolly-backend/src/main/java/no/nav/dolly/provider/api/OppslagController.java index af8e4f85640..25da0f65c70 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/provider/api/OppslagController.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/provider/api/OppslagController.java @@ -3,54 +3,27 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import lombok.RequiredArgsConstructor; -import no.nav.dolly.consumer.kodeverk.KodeverkConsumer; -import no.nav.dolly.consumer.kodeverk.KodeverkMapper; -import no.nav.dolly.domain.resultset.kodeverk.KodeverkAdjusted; import no.nav.dolly.service.InntektsmeldingEnumService; import no.nav.dolly.service.InntektsmeldingEnumService.EnumTypes; import no.nav.dolly.service.RsTransaksjonMapping; import no.nav.dolly.service.TransaksjonMappingService; -import org.springframework.cache.annotation.Cacheable; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import reactor.core.publisher.Mono; import java.util.List; -import java.util.Map; - -import static no.nav.dolly.config.CachingConfig.CACHE_KODEVERK; @RestController @RequiredArgsConstructor @RequestMapping(value = "/api/v1", produces = MediaType.APPLICATION_JSON_VALUE) public class OppslagController { - private final KodeverkMapper kodeverkMapper; - private final KodeverkConsumer kodeverkConsumer; private final InntektsmeldingEnumService inntektsmeldingEnumService; private final TransaksjonMappingService transaksjonMappingService; - @Cacheable(CACHE_KODEVERK) - @GetMapping("/kodeverk/{kodeverkNavn}") - @Operation(description = "Hent kodeverk etter kodeverkNavn") - public KodeverkAdjusted fetchKodeverkByName(@PathVariable("kodeverkNavn") String kodeverkNavn) { - - var response = kodeverkConsumer.fetchKodeverkByName(kodeverkNavn); - return kodeverkMapper.mapBetydningToAdjustedKodeverk(kodeverkNavn, response) - .blockFirst(); - } - - @GetMapping("/kodeverk") - @Operation(description = "Hent kodeverk, returnerer map") - public Mono> fetchKodeverk(@RequestParam String kodeverk) { - - return kodeverkConsumer.getKodeverkByName(kodeverk); - } - @GetMapping("/inntektsmelding/{enumtype}") @Operation(description = "Henter enumtyper for inntektsmelding") public List getInntektsmeldingeTyper(@PathVariable EnumTypes enumtype) { diff --git a/apps/dolly-backend/src/main/resources/application-local.yaml b/apps/dolly-backend/src/main/resources/application-local.yaml index 068f7497389..f013a7344f9 100644 --- a/apps/dolly-backend/src/main/resources/application-local.yaml +++ b/apps/dolly-backend/src/main/resources/application-local.yaml @@ -68,4 +68,6 @@ consumers: testnav-miljoer-service: url: https://testnav-miljoer-service.intern.dev.nav.no testnav-arbeidsplassencv-proxy: - url: https://testnav-arbeidsplassencv-proxy.intern.dev.nav.no \ No newline at end of file + url: https://testnav-arbeidsplassencv-proxy.intern.dev.nav.no + testnav-kodeverk-service: + url: https://testnav-kodeverk-service.intern.dev.nav.no \ No newline at end of file diff --git a/apps/dolly-backend/src/main/resources/application.yaml b/apps/dolly-backend/src/main/resources/application.yaml index 162828fbb86..54f076148df 100644 --- a/apps/dolly-backend/src/main/resources/application.yaml +++ b/apps/dolly-backend/src/main/resources/application.yaml @@ -116,11 +116,11 @@ consumers: namespace: dolly url: http://testnav-person-service.dolly.svc.cluster.local cluster: dev-gcp - kodeverk-api: - name: kodeverk-api - namespace: team-rocket - url: https://kodeverk-api.nav.no - cluster: prod-gcp + testnav-kodeverk-service: + name: testnav-kodeverk-service + namespace: dolly + url: https://testnav-kodeverk-service.intern.dev.nav.no + cluster: dev-gcp testnav-dokarkiv-proxy: name: testnav-dokarkiv-proxy namespace: dolly diff --git a/apps/dolly-backend/src/test/java/no/nav/dolly/consumer/kodeverk/KodeverkMapperTest.java b/apps/dolly-backend/src/test/java/no/nav/dolly/consumer/kodeverk/KodeverkMapperTest.java deleted file mode 100644 index d0701c22c9c..00000000000 --- a/apps/dolly-backend/src/test/java/no/nav/dolly/consumer/kodeverk/KodeverkMapperTest.java +++ /dev/null @@ -1,100 +0,0 @@ -package no.nav.dolly.consumer.kodeverk; - -import no.nav.dolly.consumer.kodeverk.domain.KodeverkBetydningerResponse; -import no.nav.dolly.consumer.kodeverk.domain.KodeverkBetydningerResponse.Beskrivelse; -import no.nav.dolly.consumer.kodeverk.domain.KodeverkBetydningerResponse.Betydning; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import reactor.core.publisher.Flux; - -import java.time.LocalDate; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.hamcrest.CoreMatchers.allOf; -import static org.hamcrest.CoreMatchers.hasItem; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasProperty; - -class KodeverkMapperTest { - - private static final String STANDARD_KODE = "1234"; - private static final String STANDARD_KODE_2 = "5678"; - private static final String STANDARD_TERM = "term"; - private static final String STANDARD_TERM_2 = "term2"; - private static final LocalDate STANDARD_GYLDIGFRA = LocalDate.of(1, 1, 1); - private static final LocalDate STANDARD_GYLDIGTIL = LocalDate.of(1, 1, 2); - private static final String STANDARD_KODEVERK_NAVN = "navn"; - private static final String KODE_BOKMAAL = "nb"; - - private KodeverkMapper kodeverkMapper = new KodeverkMapper(); - private Map> betydninger = new HashMap<>(); - private Map beskrivelser = new HashMap<>(); - private Beskrivelse standardBeskrivelse = Beskrivelse.builder().tekst("tekst").term(STANDARD_TERM).build(); - private Betydning standardBetydning = Betydning.builder().beskrivelser(beskrivelser).gyldigTil(STANDARD_GYLDIGTIL).gyldigFra(STANDARD_GYLDIGFRA).build(); - - @BeforeEach - public void setup() { - betydninger.put(STANDARD_KODE, List.of(standardBetydning)); - beskrivelser.put(KODE_BOKMAAL, standardBeskrivelse); - standardBetydning.setBeskrivelser(beskrivelser); - } - - @Test - void mapBetydningToAdjustedKodeverk_gjorOmKodeverkBetydningerTilKodeverkAdjustedMedValueOgLabel() { - Beskrivelse beskrivelse2 = Beskrivelse.builder().tekst("tekst").term(STANDARD_TERM_2).build(); - Map beskrivelser2 = new HashMap<>(); - beskrivelser2.put(KODE_BOKMAAL, beskrivelse2); - - Betydning betydning2 = Betydning.builder().beskrivelser(beskrivelser2).gyldigFra(STANDARD_GYLDIGFRA).gyldigTil(STANDARD_GYLDIGTIL).build(); - betydninger.put(STANDARD_KODE_2, List.of(betydning2)); - - var kodeverk = kodeverkMapper.mapBetydningToAdjustedKodeverk("navn", - Flux.just(KodeverkBetydningerResponse.builder() - .betydninger(betydninger) - .build())) - .blockFirst(); - - assertThat(kodeverk.getKoder(), hasItem(allOf( - hasProperty("value", equalTo(STANDARD_KODE)), - hasProperty("label", equalTo(STANDARD_TERM)), - hasProperty("gyldigTil", equalTo(STANDARD_GYLDIGTIL)), - hasProperty("gyldigFra", equalTo(STANDARD_GYLDIGFRA)) - ))); - - assertThat(kodeverk.getKoder(), hasItem(allOf( - hasProperty("value", equalTo(STANDARD_KODE_2)), - hasProperty("label", equalTo(STANDARD_TERM_2)), - hasProperty("gyldigTil", equalTo(STANDARD_GYLDIGTIL)), - hasProperty("gyldigFra", equalTo(STANDARD_GYLDIGFRA)) - ))); - - assertThat(kodeverk.getName(), is("navn")); - } - - @Test - void mapBetydningToAdjustedKodeverk_tomListeAvBetydningerGirKodeverkadjustedMedTomListeAvKoder() { - - var kodeverk = kodeverkMapper.mapBetydningToAdjustedKodeverk(STANDARD_KODEVERK_NAVN, - Flux.just(KodeverkBetydningerResponse.builder() - .betydninger(new HashMap<>()) - .build())) - .blockFirst(); - - assertThat(kodeverk.getKoder().isEmpty(), is(true)); - assertThat(kodeverk.getName(), is(STANDARD_KODEVERK_NAVN)); - } - - @Test - void mapBetydningToAdjustedKodeverk_nullVerdiForBetydningerGirKodeverkadjustedMedTomListeAvKoder() { - - var kodeverk = kodeverkMapper.mapBetydningToAdjustedKodeverk(STANDARD_KODEVERK_NAVN, Flux.empty()) - .blockFirst(); - - Assertions.assertNull(kodeverk); - } -} \ No newline at end of file diff --git a/apps/dolly-backend/src/test/java/no/nav/dolly/provider/api/OppslagControllerTest.java b/apps/dolly-backend/src/test/java/no/nav/dolly/provider/api/OppslagControllerTest.java deleted file mode 100644 index 7737417d444..00000000000 --- a/apps/dolly-backend/src/test/java/no/nav/dolly/provider/api/OppslagControllerTest.java +++ /dev/null @@ -1,52 +0,0 @@ -package no.nav.dolly.provider.api; - -import no.nav.dolly.consumer.kodeverk.KodeverkConsumer; -import no.nav.dolly.consumer.kodeverk.KodeverkMapper; -import no.nav.dolly.consumer.kodeverk.domain.KodeverkBetydningerResponse; -import no.nav.dolly.domain.resultset.kodeverk.KodeverkAdjusted; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; -import reactor.core.publisher.Flux; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; - -@ExtendWith(MockitoExtension.class) -class OppslagControllerTest { - - private static final String STANDARD_KODEVERK_NAME = "name"; - - @Mock - private KodeverkConsumer kodeverkConsumer; - - @Mock - private KodeverkMapper kodeverkMapper; - - @InjectMocks - private OppslagController oppslagController; - - @Mock - private KodeverkAdjusted kodeverkAdjusted; - - @Mock - private KodeverkBetydningerResponse kodeverkKoderBetydningerResponse; - - @Test - void fetchKodeverkByName_happyPath() { - - when(kodeverkConsumer.fetchKodeverkByName(STANDARD_KODEVERK_NAME)).thenReturn(Flux.just(kodeverkKoderBetydningerResponse)); - - when(kodeverkMapper.mapBetydningToAdjustedKodeverk(eq(STANDARD_KODEVERK_NAME), any())) - .thenReturn(Flux.just(kodeverkAdjusted)); - - var kodeverkResponse = oppslagController.fetchKodeverkByName(STANDARD_KODEVERK_NAME); - - assertThat(kodeverkResponse, is(kodeverkAdjusted)); - } -} \ No newline at end of file diff --git a/apps/dolly-frontend/config.idporten.yml b/apps/dolly-frontend/config.idporten.yml index 4abc5e838ac..f0ff358a783 100644 --- a/apps/dolly-frontend/config.idporten.yml +++ b/apps/dolly-frontend/config.idporten.yml @@ -46,18 +46,17 @@ spec: - application: dolly-backend - application: testnav-person-service - application: generer-navn-service + - application: testnav-kodeverk-service external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io - host: testnav-krrstub-proxy.dev-fss-pub.nais.io - - host: kodeverk-api.nav.no - host: testnav-udistub-proxy.dev-fss-pub.nais.io - host: testnav-inst-proxy.dev-fss-pub.nais.io - host: testnav-aareg-proxy.dev-fss-pub.nais.io - host: testnav-medl-proxy.dev-fss-pub.nais.io - host: testnav-histark-proxy.dev-fss-pub.nais.io - host: testnav-arena-forvalteren-proxy.dev-fss-pub.nais.io - - host: tps-forvalteren-proxy.dev-fss-pub.nais.io - host: testnav-inntektstub-proxy.dev-fss-pub.nais.io - host: testnav-norg2-proxy.dev-fss-pub.nais.io - host: testnav-brregstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/config.test.yml b/apps/dolly-frontend/config.test.yml index a44fc9766ca..346c9a52e14 100644 --- a/apps/dolly-frontend/config.test.yml +++ b/apps/dolly-frontend/config.test.yml @@ -51,6 +51,7 @@ spec: - application: dolly-backend-dev - application: testnav-person-service - application: generer-navn-service + - application: testnav-kodeverk-service external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io @@ -61,7 +62,6 @@ spec: - host: testnav-aareg-proxy.dev-fss-pub.nais.io - host: testnav-medl-proxy.dev-fss-pub.nais.io - host: testnav-arena-forvalteren-proxy.dev-fss-pub.nais.io - - host: tps-forvalteren-dev-proxy.dev-fss-pub.nais.io - host: testnav-inntektstub-proxy.dev-fss-pub.nais.io - host: testnav-norg2-proxy.dev-fss-pub.nais.io - host: testnav-brregstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/config.unstable.yml b/apps/dolly-frontend/config.unstable.yml index 12ee6eb84e2..c783b30f66c 100644 --- a/apps/dolly-frontend/config.unstable.yml +++ b/apps/dolly-frontend/config.unstable.yml @@ -51,18 +51,17 @@ spec: - application: testnav-miljoer-service - application: testnav-adresse-service - application: testnorge-tilbakemelding-api + - application: testnav-kodeverk-service external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io - host: testnav-krrstub-proxy.dev-fss-pub.nais.io - host: testnav-udistub-proxy.dev-fss-pub.nais.io - - host: kodeverk-api.nav.no - host: testnav-inst-proxy.dev-fss-pub.nais.io - host: testnav-aareg-proxy.dev-fss-pub.nais.io - host: testnav-medl-proxy.dev-fss-pub.nais.io - host: testnav-histark-proxy.dev-fss-pub.nais.io - host: testnav-arena-forvalteren-proxy.dev-fss-pub.nais.io - - host: tps-forvalteren-proxy.dev-fss-pub.nais.io - host: testnav-inntektstub-proxy.dev-fss-pub.nais.io - host: testnav-norg2-proxy.dev-fss-pub.nais.io - host: testnav-brregstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/config.yml b/apps/dolly-frontend/config.yml index 213876e1b2a..7705a4a5be1 100644 --- a/apps/dolly-frontend/config.yml +++ b/apps/dolly-frontend/config.yml @@ -56,6 +56,7 @@ spec: - application: testnav-miljoer-service - application: testnav-adresse-service - application: testnorge-tilbakemelding-api + - application: testnav-kodeverk-service external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io @@ -66,8 +67,6 @@ spec: - host: testnav-medl-proxy.dev-fss-pub.nais.io - host: testnav-histark-proxy.dev-fss-pub.nais.io - host: testnav-arena-forvalteren-proxy.dev-fss-pub.nais.io - - host: kodeverk-api.nav.no - - host: tps-forvalteren-proxy.dev-fss-pub.nais.io - host: testnav-inntektstub-proxy.dev-fss-pub.nais.io - host: testnav-norg2-proxy.dev-fss-pub.nais.io - host: testnav-brregstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java index 75078944514..ef995a4ec85 100644 --- a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java +++ b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java @@ -81,6 +81,7 @@ public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { .route(createRoute(consumers.getTestnavHelsepersonellService())) .route(createRoute(consumers.getTestnavPersonService(), "person-service")) .route(createRoute(consumers.getGenererNavnService())) + .route(createRoute(consumers.getTestnavKodeverkService())) .build(); } diff --git a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java index 4830926caf2..f95d054c95d 100644 --- a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java +++ b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java @@ -26,11 +26,7 @@ public class Consumers { private ServerProperties dollyBackend; private ServerProperties genererNavnService; - private ServerProperties testnavKontoregisterPersonProxy; private ServerProperties oppsummeringsdokumentService; - private ServerProperties testnavPersonSearchService; - private ServerProperties testnavPersonService; - private ServerProperties testnavSkjermingsregisterProxy; private ServerProperties testnavAaregProxy; private ServerProperties testnavAdresseService; private ServerProperties testnavArbeidsplassenCVProxy; @@ -43,6 +39,8 @@ public class Consumers { private ServerProperties testnavInntektstubProxy; private ServerProperties testnavInstProxy; private ServerProperties testnavJoarkDokumentService; + private ServerProperties testnavKodeverkService; + private ServerProperties testnavKontoregisterPersonProxy; private ServerProperties testnavKrrstubProxy; private ServerProperties testnavMedlProxy; private ServerProperties testnavMiljoerService; @@ -54,11 +52,13 @@ public class Consumers { private ServerProperties testnavPdlForvalter; private ServerProperties testnavPensjonTestdataFacadeProxy; private ServerProperties testnavPersonOrganisasjonTilgangService; + private ServerProperties testnavPersonSearchService; + private ServerProperties testnavPersonService; private ServerProperties testnavSigrunstubProxy; + private ServerProperties testnavSkjermingsregisterProxy; + private ServerProperties testnavTpsMessagingService; + private ServerProperties testnavUdistubProxy; private ServerProperties testnavVarslingerService; private ServerProperties testnorgeProfilApi; private ServerProperties testnorgeTilbakemeldingApi; - private ServerProperties testnavTpsMessagingService; - private ServerProperties testnavUdistubProxy; - } diff --git a/apps/dolly-frontend/src/main/js/cypress/support/e2e.ts b/apps/dolly-frontend/src/main/js/cypress/support/e2e.ts index 565f0f3ac27..eab8ae75428 100644 --- a/apps/dolly-frontend/src/main/js/cypress/support/e2e.ts +++ b/apps/dolly-frontend/src/main/js/cypress/support/e2e.ts @@ -66,7 +66,7 @@ const lagNyGruppe = new RegExp(/api\/v1\/gruppe$/) const kontoregister = new RegExp(/testnav-kontoregister-person-proxy\/api/) const backendTransaksjon = new RegExp(/dolly-backend\/api\/v1\/transaksjonid/) const tags = new RegExp(/\/tags$/) -const kodeverk = new RegExp(/\/v1\/kodeverk\//) +const kodeverk = new RegExp(/testnav-kodeverk-service\/api\/v1\/kodeverk\//) const dokarkivMiljoer = new RegExp(/testnav-dokarkiv-proxy\/rest\/miljoe/) const aareg = new RegExp(/testnav-aareg-proxy\/q1\/api\/v1\/arbeidstaker/) const amelding = new RegExp(/oppsummeringsdokument-service\/api\/v1\/oppsummeringsdokumenter/) diff --git a/apps/dolly-frontend/src/main/js/proxy-routes.json b/apps/dolly-frontend/src/main/js/proxy-routes.json index ec1e44f6817..afc66adbf63 100644 --- a/apps/dolly-frontend/src/main/js/proxy-routes.json +++ b/apps/dolly-frontend/src/main/js/proxy-routes.json @@ -84,11 +84,6 @@ "changeOrigin": true, "secure": false }, - "/tps-forvalteren-proxy/api": { - "target": "http://localhost:8020", - "changeOrigin": true, - "secure": false - }, "/testnav-brregstub-proxy/api": { "target": "http://localhost:8020", "changeOrigin": true, @@ -223,5 +218,10 @@ "target": "http://localhost:8020", "changeOrigin": true, "secure": false + }, + "/testnav-kodeverk-service": { + "target": "http://localhost:8020", + "changeOrigin": true, + "secure": false } } \ No newline at end of file diff --git a/apps/dolly-frontend/src/main/js/src/ducks/kodeverk/index.tsx b/apps/dolly-frontend/src/main/js/src/ducks/kodeverk/index.tsx index cbc342d765f..dc70c39ac25 100644 --- a/apps/dolly-frontend/src/main/js/src/ducks/kodeverk/index.tsx +++ b/apps/dolly-frontend/src/main/js/src/ducks/kodeverk/index.tsx @@ -1,18 +1,18 @@ import { createActions, handleActions } from 'redux-actions' -import { DollyApi } from '@/service/Api' +import { KodeverkApi } from '@/service/Api' import { onRequest, onSuccess } from '@/ducks/utils/requestActions' import { SortKodeverkArray } from '@/service/services/dolly/Utils' export const { getKodeverk } = createActions( { getKodeverk: [ - DollyApi.getKodeverkByNavn, + KodeverkApi.getKodeverkByNavn, (kodeverkNavn) => ({ kodeverkNavn, }), ], }, - { prefix: 'kodeverk' } + { prefix: 'kodeverk' }, ) const initialState = { @@ -49,7 +49,7 @@ export default handleActions( } }, }, - initialState + initialState, ) /*** THUNKS */ diff --git a/apps/dolly-frontend/src/main/js/src/service/Api.tsx b/apps/dolly-frontend/src/main/js/src/service/Api.tsx index 9571f3276c7..6a88d0d67e8 100644 --- a/apps/dolly-frontend/src/main/js/src/service/Api.tsx +++ b/apps/dolly-frontend/src/main/js/src/service/Api.tsx @@ -14,6 +14,7 @@ import TpsMessagingService from '@/service/services/tpsmessaging/TpsMessagingSer import SessionService from '@/service/services/session/SessionService' import KontoregisterService from '@/service/services/kontoregister/KontoregisterService' import SkjermingService from '@/service/services/skjerming/SkjermingService' +import KodeverkService from '@/service/services/kodeverk/KodeverkService' export const DollyApi = DollyService export const TpsMessagingApi = TpsMessagingService @@ -31,6 +32,7 @@ export const PdlforvalterApi = PdlForvalterService export const SessionApi = SessionService export const BankkontoApi = KontoregisterService export const SkjermingApi = SkjermingService +export const KodeverkApi = KodeverkService export default { DollyApi: DollyService, @@ -47,5 +49,5 @@ export default { PdlforvalterApi: PdlForvalterService, SessionApi: SessionService, BankkontoApi: KontoregisterService, - SkjermingApi: SkjermingService + SkjermingApi: SkjermingService, } diff --git a/apps/dolly-frontend/src/main/js/src/service/services/kodeverk/KodeverkService.tsx b/apps/dolly-frontend/src/main/js/src/service/services/kodeverk/KodeverkService.tsx new file mode 100644 index 00000000000..5a8af8aff9c --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/service/services/kodeverk/KodeverkService.tsx @@ -0,0 +1,9 @@ +import Request from '@/service/services/Request' + +const kodeverkUrl = '/testnav-kodeverk-service/api/v1/kodeverk' + +export default { + getKodeverkByNavn(kodeverk: string) { + return Request.get(`${kodeverkUrl}/${kodeverk}`) + }, +} diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useKodeverk.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useKodeverk.tsx index 69124d85f73..f7ab4d5ac77 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/useKodeverk.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useKodeverk.tsx @@ -20,7 +20,7 @@ type KodeverkType = { const getKodeverkUrl = (kodeverkNavn) => kodeverkNavn.includes('Valuta') ? `/testnav-kontoregister-person-proxy/api/system/v1/hent-valutakoder` - : `/dolly-backend/api/v1/kodeverk/${kodeverkNavn}` + : `/testnav-kodeverk-service/api/v1/kodeverk/${kodeverkNavn}` export const useKodeverk = (kodeverkNavn) => { const { data, isLoading, error } = useSWR( diff --git a/apps/dolly-frontend/src/main/resources/application-dev.yml b/apps/dolly-frontend/src/main/resources/application-dev.yml index 7e66b2695e0..0a15f0de167 100644 --- a/apps/dolly-frontend/src/main/resources/application-dev.yml +++ b/apps/dolly-frontend/src/main/resources/application-dev.yml @@ -4,9 +4,6 @@ REDIS_HOST: dolly-dev-redis-session.dolly.svc.cluster.local consumers: # Konsumenter for dev-miljø - tps-forvalteren-proxy: - name: tps-forvalteren-dev-proxy - url: https://tps-forvalteren-dev-proxy.dev-fss-pub.nais.io dolly-backend: name: dolly-backend-dev url: http://dolly-backend-dev.dolly.svc.cluster.local diff --git a/apps/dolly-frontend/src/main/resources/application-local.yml b/apps/dolly-frontend/src/main/resources/application-local.yml index 2cb1004f90a..e205baf08dd 100644 --- a/apps/dolly-frontend/src/main/resources/application-local.yml +++ b/apps/dolly-frontend/src/main/resources/application-local.yml @@ -23,9 +23,6 @@ spring: jwk-set-uri: ${AAD_ISSUER_URI}/discovery/v2.0/keys consumers: - tps-forvalteren-proxy: - name: tps-forvalteren-dev-proxy - url: https://tps-forvalteren-dev-proxy.dev-fss-pub.nais.io dolly-backend: name: dolly-backend-dev url: https://dolly-backend-dev.intern.dev.nav.no @@ -74,4 +71,6 @@ consumers: generer-navn-service: url: https://generer-navn-service.intern.dev.nav.no testnav-person-service: - url: https://testnav-person-service.intern.dev.nav.no \ No newline at end of file + url: https://testnav-person-service.intern.dev.nav.no + testnav-kodeverk-service: + url: https://testnav-kodeverk-service.intern.dev.nav.no/ \ No newline at end of file diff --git a/apps/dolly-frontend/src/main/resources/application.yml b/apps/dolly-frontend/src/main/resources/application.yml index a9deec0b05f..4c41c69d4a4 100644 --- a/apps/dolly-frontend/src/main/resources/application.yml +++ b/apps/dolly-frontend/src/main/resources/application.yml @@ -78,11 +78,6 @@ consumers: namespace: dolly name: testnav-norg2-proxy url: https://testnav-norg2-proxy.dev-fss-pub.nais.io - tps-forvalteren-proxy: - cluster: dev-fss - namespace: dolly - name: tps-forvalteren-proxy - url: https://tps-forvalteren-proxy.dev-fss-pub.nais.io testnav-arena-forvalteren-proxy: cluster: dev-fss namespace: dolly @@ -213,6 +208,11 @@ consumers: namespace: dolly url: https://testnav-histark-proxy.dev-fss-pub.nais.io cluster: dev-fss + testnav-kodeverk-service: + name: testnav-kodeverk-service + namespace: dolly + url: http://testnav-kodeverk-service.dolly.svc.cluster.local + cluster: dev-gcp management: endpoints: diff --git a/apps/pdl-forvalter/config.test.yml b/apps/pdl-forvalter/config.test.yml index e1f6c9d8949..1bb0b95957b 100644 --- a/apps/pdl-forvalter/config.test.yml +++ b/apps/pdl-forvalter/config.test.yml @@ -50,28 +50,18 @@ spec: inbound: rules: - application: testnav-oversikt-frontend - cluster: dev-gcp - application: team-dolly-lokal-app - cluster: dev-gcp - application: dolly-backend-dev - cluster: dev-gcp - application: dolly-frontend-dev - cluster: dev-gcp - application: app-1 namespace: plattformsikkerhet - cluster: dev-gcp outbound: rules: - application: generer-navn-service - cluster: dev-gcp - application: testnav-adresse-service - cluster: dev-gcp - application: testnav-organisasjon-forvalter - cluster: dev-gcp - - application: testnav-geografiske-kodeverk-service - cluster: dev-gcp + - application: testnav-kodeverk-service - application: testnav-ident-pool - cluster: dev-gcp external: - host: testnav-pdl-proxy.dev-fss-pub.nais.io gcp: diff --git a/apps/pdl-forvalter/config.yml b/apps/pdl-forvalter/config.yml index a28f1a0bc6a..968bbb5b95c 100644 --- a/apps/pdl-forvalter/config.yml +++ b/apps/pdl-forvalter/config.yml @@ -49,25 +49,16 @@ spec: inbound: rules: - application: testnav-oversikt-frontend - cluster: dev-gcp - application: dolly-backend - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp - application: dolly-idporten - cluster: dev-gcp outbound: rules: - application: generer-navn-service - cluster: dev-gcp - application: testnav-adresse-service - cluster: dev-gcp - application: testnav-organisasjon-forvalter - cluster: dev-gcp - - application: testnav-geografiske-kodeverk-service - cluster: dev-gcp + - application: testnav-kodeverk-service - application: testnav-ident-pool - cluster: dev-gcp external: - host: testnav-pdl-proxy.dev-fss-pub.nais.io gcp: diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/config/Consumers.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/config/Consumers.java index ea8ebbd9a00..83e602b2753 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/config/Consumers.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/config/Consumers.java @@ -26,7 +26,7 @@ public class Consumers { private ServerProperties adresseService; private ServerProperties genererNavnService; - private ServerProperties geografiskeKodeverkService; + private ServerProperties kodeverkService; private ServerProperties identPool; private ServerProperties orgForvalter; private ServerProperties pdlService; diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/consumer/GeografiskeKodeverkConsumer.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/consumer/GeografiskeKodeverkConsumer.java deleted file mode 100644 index 9ee1353a760..00000000000 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/consumer/GeografiskeKodeverkConsumer.java +++ /dev/null @@ -1,93 +0,0 @@ -package no.nav.pdl.forvalter.consumer; - -import lombok.extern.slf4j.Slf4j; -import no.nav.pdl.forvalter.config.Consumers; -import no.nav.pdl.forvalter.consumer.command.GeografiskeKodeverkCommand; -import no.nav.testnav.libs.dto.geografiskekodeverkservice.v1.GeografiskeKodeverkDTO; -import no.nav.testnav.libs.securitycore.domain.ServerProperties; -import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; -import org.springframework.stereotype.Service; - -import org.springframework.web.reactive.function.client.WebClient; -import reactor.core.publisher.Flux; - -import java.security.SecureRandom; -import java.time.Duration; - -@Slf4j -@Service -public class GeografiskeKodeverkConsumer { - - private static final String POSTNUMMER_URL = "/api/v1/postnummer"; - private static final String LAND_URL = "/api/v1/land"; - private static final String KOMMUNE_URL = "/api/v1/kommuner"; - private static final String EMBETE_URL = "/api/v1/embeter"; - - private final WebClient webClient; - private final TokenExchange tokenExchange; - private final ServerProperties serverProperties; - private Flux kommuneKodeverkFlux; - private Flux landkodeverkFlux; - - public GeografiskeKodeverkConsumer( - TokenExchange tokenExchange, - Consumers consumers) { - this.tokenExchange = tokenExchange; - serverProperties = consumers.getGeografiskeKodeverkService(); - this.webClient = WebClient - .builder() - .baseUrl(serverProperties.getUrl()) - .build(); - } - - private Flux cache(String url) { - return tokenExchange - .exchange(serverProperties) - .flatMapMany(token -> new GeografiskeKodeverkCommand(webClient, url, null, token.getTokenValue()).call()) - .cache(Duration.ofDays(7)); - } - - public String getTilfeldigKommune() { - if (kommuneKodeverkFlux == null) { - this.kommuneKodeverkFlux = cache(KOMMUNE_URL); - } - return kommuneKodeverkFlux - .collectList() - .blockOptional() - .map(list -> list.get(new SecureRandom().nextInt(list.size()))) - .map(GeografiskeKodeverkDTO::kode) - .orElse(null); - } - - public String getTilfeldigLand() { - if (landkodeverkFlux == null) { - this.landkodeverkFlux = cache(LAND_URL); - } - return landkodeverkFlux - .collectList() - .blockOptional() - .map(list -> list.get(new SecureRandom().nextInt(list.size()))) - .map(GeografiskeKodeverkDTO::kode) - .orElse(null); - } - - public String getPoststedNavn(String postnummer) { - return tokenExchange - .exchange(serverProperties) - .flatMapMany(token -> new GeografiskeKodeverkCommand(webClient, POSTNUMMER_URL, "postnummer=" + postnummer, token.getTokenValue()).call()) - .next() - .blockOptional() - .map(GeografiskeKodeverkDTO::navn) - .orElse("UKJENT"); - } - - public String getEmbeteNavn(String embete) { - return tokenExchange - .exchange(serverProperties) - .flatMapMany(token -> new GeografiskeKodeverkCommand(webClient, EMBETE_URL, "embetekode=" + embete, token.getTokenValue()).call()) - .next() - .blockOptional() - .map(GeografiskeKodeverkDTO::navn) - .orElse(embete); - } -} diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/consumer/KodeverkConsumer.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/consumer/KodeverkConsumer.java new file mode 100644 index 00000000000..ce1cd96ff06 --- /dev/null +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/consumer/KodeverkConsumer.java @@ -0,0 +1,79 @@ +package no.nav.pdl.forvalter.consumer; + +import lombok.extern.slf4j.Slf4j; +import no.nav.pdl.forvalter.config.Consumers; +import no.nav.pdl.forvalter.consumer.command.KodeverkCommand; +import no.nav.testnav.libs.dto.kodeverkservice.v1.KodeverkDTO; +import no.nav.testnav.libs.securitycore.domain.ServerProperties; +import no.nav.testnav.libs.servletsecurity.exchange.TokenExchange; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +import java.security.SecureRandom; +import java.util.Map; +import java.util.Random; + +@Slf4j +@Service +public class KodeverkConsumer { + + private static final String POSTNUMMER = "Postnummer"; + private static final String LANDKODER = "Landkoder"; + private static final String KOMMUNER = "Kommuner"; + private static final String EMBETER = "Vergemål_Fylkesmannsembeter"; + private static final Random random = new SecureRandom(); + + private final WebClient webClient; + private final TokenExchange tokenExchange; + private final ServerProperties serverProperties; + + public KodeverkConsumer( + TokenExchange tokenExchange, + Consumers consumers) { + this.tokenExchange = tokenExchange; + serverProperties = consumers.getKodeverkService(); + this.webClient = WebClient + .builder() + .baseUrl(serverProperties.getUrl()) + .build(); + } + + public String getTilfeldigKommune() { + + return hentKodeverk(KOMMUNER) + .map(verdier -> verdier.keySet().stream().toList()) + .map(list -> list.get(random.nextInt(list.size()))) + .block(); + } + + public String getTilfeldigLand() { + + return hentKodeverk(LANDKODER) + .map(verdier -> verdier.keySet().stream().toList()) + .map(list -> list.get(random.nextInt(list.size()))) + .block(); + } + + public String getPoststedNavn(String postnummer) { + + return hentKodeverk(POSTNUMMER) + .map(postnumre -> postnumre.get(postnummer)) + .block(); + } + + public String getEmbeteNavn(String embete) { + + return hentKodeverk(EMBETER) + .map(embeter -> embeter.get(embete)) + .block(); + } + + private Mono> hentKodeverk(String kodeverk) { + + return tokenExchange + .exchange(serverProperties) + .flatMap(token -> new KodeverkCommand(webClient, kodeverk, token.getTokenValue()).call()) + .map(KodeverkDTO::getKodeverk); + } +} diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/consumer/command/GeografiskeKodeverkCommand.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/consumer/command/KodeverkCommand.java similarity index 56% rename from apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/consumer/command/GeografiskeKodeverkCommand.java rename to apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/consumer/command/KodeverkCommand.java index a99396f765d..756d985c161 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/consumer/command/GeografiskeKodeverkCommand.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/consumer/command/KodeverkCommand.java @@ -3,11 +3,11 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.pdl.forvalter.utils.WebClientFilter; -import no.nav.testnav.libs.dto.geografiskekodeverkservice.v1.GeografiskeKodeverkDTO; +import no.nav.testnav.libs.dto.kodeverkservice.v1.KodeverkDTO; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.web.reactive.function.client.WebClient; -import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; import reactor.util.retry.Retry; import java.time.Duration; @@ -15,24 +15,29 @@ @Slf4j @RequiredArgsConstructor -public class GeografiskeKodeverkCommand implements Callable> { +public class KodeverkCommand implements Callable> { + + private static final String KODEVERK_SERVICE_URL = "/api/v1/kodeverk"; + private static final String KODEVERKNAVN = "kodeverk"; private final WebClient webClient; - private final String url; - private final String query; + private final String kodeverknavn; private final String token; @Override - public Flux call() { - log.info("Henter geografiske kodeverk..."); + public Mono call() { + + log.info("Henter kodeverk..."); return webClient .get() - .uri(builder -> builder.path(url).query(query).build()) + .uri(builder -> builder.path(KODEVERK_SERVICE_URL) + .queryParam(KODEVERKNAVN, kodeverknavn) + .build()) .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) .retrieve() - .bodyToFlux(GeografiskeKodeverkDTO.class) - .doFinally(value -> log.info("Geografiske kodeverk hentet.")) + .bodyToMono(KodeverkDTO.class) + .doFinally(value -> log.info("Kodeverk {} hentet", kodeverknavn)) .retryWhen(Retry.backoff(3, Duration.ofSeconds(5)) .filter(WebClientFilter::is5xxException)); } diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/mapper/KontaktInformasjonForDoedsboMappingStrategy.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/mapper/KontaktInformasjonForDoedsboMappingStrategy.java index 7aef86b468d..9ca6f3cd149 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/mapper/KontaktInformasjonForDoedsboMappingStrategy.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/mapper/KontaktInformasjonForDoedsboMappingStrategy.java @@ -4,11 +4,11 @@ import ma.glasnost.orika.CustomMapper; import ma.glasnost.orika.MapperFactory; import ma.glasnost.orika.MappingContext; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.pdl.forvalter.exception.InvalidRequestException; -import no.nav.testnav.libs.dto.adresseservice.v1.VegadresseDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.BostedadresseDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.KontaktinformasjonForDoedsboDTO.KontaktinformasjonForDoedsboAdresse; +import no.nav.testnav.libs.dto.adresseservice.v1.VegadresseDTO; import org.springframework.stereotype.Component; import java.util.List; @@ -24,7 +24,7 @@ public class KontaktInformasjonForDoedsboMappingStrategy implements MappingStrat private static final String LANDKODE_NORGE = "NOR"; private static final String ADRESSE_TYPE_NOT_SUPPORTED = "KontaktinformasjonForDoedsbo: Ukjent bosted er ikke støttet"; - private final GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private final KodeverkConsumer kodeverkConsumer; private static String blankCheck(String value, String defaultValue) { return isNotBlank(value) ? value : defaultValue; @@ -43,7 +43,7 @@ public void mapAtoB(BostedadresseDTO kilde, KontaktinformasjonForDoedsboAdresse destinasjon.setAdresselinje1(format("%s %s", kilde.getVegadresse().getAdressenavn(), kilde.getVegadresse().getHusnummer())); destinasjon.setPostnummer(kilde.getVegadresse().getPostnummer()); - destinasjon.setPoststedsnavn(geografiskeKodeverkConsumer.getPoststedNavn(kilde.getVegadresse().getPostnummer())); + destinasjon.setPoststedsnavn(kodeverkConsumer.getPoststedNavn(kilde.getVegadresse().getPostnummer())); destinasjon.setLandkode(LANDKODE_NORGE); } else if (nonNull(kilde.getUtenlandskAdresse())) { @@ -60,7 +60,7 @@ public void mapAtoB(BostedadresseDTO kilde, KontaktinformasjonForDoedsboAdresse kilde.getMatrikkeladresse().getGaardsnummer(), kilde.getMatrikkeladresse().getBruksnummer())); destinasjon.setPostnummer(kilde.getMatrikkeladresse().getPostnummer()); - destinasjon.setPoststedsnavn(geografiskeKodeverkConsumer.getPoststedNavn(kilde.getMatrikkeladresse().getPostnummer())); + destinasjon.setPoststedsnavn(kodeverkConsumer.getPoststedNavn(kilde.getMatrikkeladresse().getPostnummer())); destinasjon.setLandkode(LANDKODE_NORGE); } else { @@ -96,7 +96,7 @@ public void mapAtoB(Map kilde, KontaktinformasjonForDoedsboAdresse destinasjon, destinasjon.setAdresselinje2(adresselinjer.size() > 1 ? adresselinjer.get(1) : null); destinasjon.setPostnummer((String) kilde.get("postnr")); - destinasjon.setPoststedsnavn(geografiskeKodeverkConsumer.getPoststedNavn(destinasjon.getPostnummer())); + destinasjon.setPoststedsnavn(kodeverkConsumer.getPoststedNavn(destinasjon.getPostnummer())); destinasjon.setLandkode((String) kilde.get("landkode")); } }) diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/mapper/VergemaalMappingStrategy.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/mapper/VergemaalMappingStrategy.java index 0a149396586..431d7934a7e 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/mapper/VergemaalMappingStrategy.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/mapper/VergemaalMappingStrategy.java @@ -4,7 +4,7 @@ import ma.glasnost.orika.CustomMapper; import ma.glasnost.orika.MapperFactory; import ma.glasnost.orika.MappingContext; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.pdl.forvalter.database.repository.PersonRepository; import no.nav.pdl.forvalter.dto.PdlVergemaal; import no.nav.pdl.forvalter.dto.PdlVergemaal.Omfang; @@ -22,7 +22,7 @@ @RequiredArgsConstructor public class VergemaalMappingStrategy implements MappingStrategy { - private final GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private final KodeverkConsumer kodeverkConsumer; private final PersonRepository personRepository; private static Omfang getOmfang(VergemaalMandattype mandatType) { @@ -31,19 +31,13 @@ private static Omfang getOmfang(VergemaalMandattype mandatType) { return null; } - switch (mandatType) { - case FOR: - return Omfang.UTLENDINGSSAKER_PERSONLIGE_OG_OEKONOMISKE_INTERESSER; - case CMB: - return Omfang.PERSONLIGE_OG_OEKONOMISKE_INTERESSER; - case FIN: - return Omfang.OEKONOMISKE_INTERESSER; - case PER: - return Omfang.PERSONLIGE_INTERESSER; - case ADP: - default: - return null; - } + return switch (mandatType) { + case FOR -> Omfang.UTLENDINGSSAKER_PERSONLIGE_OG_OEKONOMISKE_INTERESSER; + case CMB -> Omfang.PERSONLIGE_OG_OEKONOMISKE_INTERESSER; + case FIN -> Omfang.OEKONOMISKE_INTERESSER; + case PER -> Omfang.PERSONLIGE_INTERESSER; + default -> null; + }; } private static VergemaalType getSakstype(VergemaalSakstype vergemaalType) { @@ -52,26 +46,16 @@ private static VergemaalType getSakstype(VergemaalSakstype vergemaalType) { return null; } - switch (vergemaalType) { - case MIM: - return VergemaalType.MIDLERTIDIG_FOR_MINDREAARIG; - case ANN: - return VergemaalType.FORVALTNING_UTENFOR_VERGEMAAL; - case VOK: - return VergemaalType.VOKSEN; - case MIN: - return VergemaalType.MINDREAARIG; - case VOM: - return VergemaalType.MIDLERTIDIG_FOR_VOKSEN; - case FRE: - return VergemaalType.STADFESTET_FREMTIDSFULLMAKT; - case EMA: - return VergemaalType.ENSLIG_MINDREAARIG_ASYLSOEKER; - case EMF: - return VergemaalType.ENSLIG_MINDREAARIG_FLYKTNING; - default: - return null; - } + return switch (vergemaalType) { + case MIM -> VergemaalType.MIDLERTIDIG_FOR_MINDREAARIG; + case ANN -> VergemaalType.FORVALTNING_UTENFOR_VERGEMAAL; + case VOK -> VergemaalType.VOKSEN; + case MIN -> VergemaalType.MINDREAARIG; + case VOM -> VergemaalType.MIDLERTIDIG_FOR_VOKSEN; + case FRE -> VergemaalType.STADFESTET_FREMTIDSFULLMAKT; + case EMA -> VergemaalType.ENSLIG_MINDREAARIG_ASYLSOEKER; + case EMF -> VergemaalType.ENSLIG_MINDREAARIG_FLYKTNING; + }; } @Override @@ -82,7 +66,7 @@ public void register(MapperFactory factory) { @Override public void mapAtoB(VergemaalDTO kilde, PdlVergemaal destinasjon, MappingContext context) { - destinasjon.setEmbete(geografiskeKodeverkConsumer.getEmbeteNavn(kilde.getVergemaalEmbete().name())); + destinasjon.setEmbete(kodeverkConsumer.getEmbeteNavn(kilde.getVergemaalEmbete().name())); destinasjon.setType(getSakstype(kilde.getSakType())); var person = personRepository.findByIdent(kilde.getVergeIdent()); diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/CreatePersonUtenIdentifikatorService.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/CreatePersonUtenIdentifikatorService.java index 34b3776d948..3f8fc4a5844 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/CreatePersonUtenIdentifikatorService.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/CreatePersonUtenIdentifikatorService.java @@ -3,7 +3,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import ma.glasnost.orika.MapperFacade; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.pdl.forvalter.dto.PersonUtenIdentifikatorRequest; import no.nav.testnav.libs.data.pdlforvalter.v1.ForelderBarnRelasjonDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.NavnDTO; @@ -26,7 +26,7 @@ @RequiredArgsConstructor public class CreatePersonUtenIdentifikatorService { - private final GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private final KodeverkConsumer kodeverkConsumer; private final MapperFacade mapperFacade; private final NavnService navnService; private final SecureRandom secureRandom = new SecureRandom(); @@ -52,7 +52,7 @@ public RelatertBiPersonDTO execute(PersonUtenIdentifikatorRequest request) { relatertPerson.setStatsborgerskap(isNotBlank(request.getRelatertStatsborgerskap()) ? request.getRelatertStatsborgerskap() : - geografiskeKodeverkConsumer.getTilfeldigLand()); + kodeverkConsumer.getTilfeldigLand()); } if (isNull(request.getKjoenn())) { diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/EnkelAdresseService.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/EnkelAdresseService.java index fb707e69b64..1133d94557d 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/EnkelAdresseService.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/EnkelAdresseService.java @@ -2,7 +2,7 @@ import lombok.RequiredArgsConstructor; import ma.glasnost.orika.MapperFacade; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.testnav.libs.data.pdlforvalter.v1.DbVersjonDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.KontaktadresseDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.KontaktadresseDTO.PostboksadresseDTO; @@ -27,7 +27,7 @@ public class EnkelAdresseService { private static final String ADRESSE_3_UTLAND = "CAPITAL WEST"; private static final String ADRESSE_POSTKODE = "3000"; - private final GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private final KodeverkConsumer kodeverkConsumer; private final MapperFacade mapperFacade; @@ -76,6 +76,6 @@ public UtenlandskAdresseDTO getUtenlandskAdresse(UtenlandskAdresseDTO utenlandsk private String getLandkode(String landkode) { return isNotBlank(landkode) && !"NOR".equals(landkode) ? landkode : - geografiskeKodeverkConsumer.getTilfeldigLand(); + kodeverkConsumer.getTilfeldigLand(); } } \ No newline at end of file diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/FalskIdentitetService.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/FalskIdentitetService.java index b68e21a574f..6cec91def2b 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/FalskIdentitetService.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/FalskIdentitetService.java @@ -2,7 +2,7 @@ import lombok.RequiredArgsConstructor; import no.nav.pdl.forvalter.consumer.GenererNavnServiceConsumer; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.pdl.forvalter.database.repository.PersonRepository; import no.nav.pdl.forvalter.exception.InvalidRequestException; import no.nav.pdl.forvalter.utils.FoedselsdatoUtility; @@ -48,7 +48,7 @@ public class FalskIdentitetService implements Validation { private final CreatePersonService createPersonService; private final RelasjonService relasjonService; private final GenererNavnServiceConsumer genererNavnServiceConsumer; - private final GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private final KodeverkConsumer kodeverkConsumer; protected static int count(T artifact) { return nonNull(artifact) ? 1 : 0; @@ -135,7 +135,7 @@ private void handle(FalskIdentitetDTO identitet, PersonDTO person) { .orElse(new FolkeregisterPersonstatusDTO()) .getStatus() != FolkeregisterPersonstatus.OPPHOERT) { - person.getFolkeregisterPersonstatus().add(0, FolkeregisterPersonstatusDTO.builder() + person.getFolkeregisterPersonstatus().addFirst(FolkeregisterPersonstatusDTO.builder() .isNew(true) .id(person.getFolkeregisterPersonstatus().stream() .max(Comparator.comparing(FolkeregisterPersonstatusDTO::getId)) @@ -181,7 +181,7 @@ private void opprettNyeOpplysningstyper(FalskIdentitetDTO identitet, PersonDTO p } if (identitet.getRettIdentitetVedOpplysninger().getStatsborgerskap().isEmpty()) { identitet.getRettIdentitetVedOpplysninger().setStatsborgerskap( - List.of(geografiskeKodeverkConsumer.getTilfeldigLand(), "NOR")); + List.of(kodeverkConsumer.getTilfeldigLand(), "NOR")); } } diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/FoedselService.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/FoedselService.java index 8cb08f8238a..74aa7d82df6 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/FoedselService.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/FoedselService.java @@ -1,7 +1,7 @@ package no.nav.pdl.forvalter.service; import lombok.RequiredArgsConstructor; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.pdl.forvalter.utils.DatoFraIdentUtility; import no.nav.pdl.forvalter.utils.IdenttypeFraIdentUtility; import no.nav.testnav.libs.data.pdlforvalter.v1.BostedadresseDTO; @@ -23,12 +23,13 @@ import static no.nav.testnav.libs.data.pdlforvalter.v1.Identtype.FNR; import static org.apache.commons.lang3.BooleanUtils.isTrue; import static org.apache.commons.lang3.StringUtils.isBlank; +import static org.apache.commons.lang3.StringUtils.isNotBlank; @Service @RequiredArgsConstructor public class FoedselService implements BiValidation { - private final GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private final KodeverkConsumer kodeverkConsumer; public List convert(PersonDTO person) { @@ -76,7 +77,7 @@ private void setFoedeland(FoedselDTO foedsel, String ident, BostedadresseDTO bos } else if (nonNull(bostedadresse) && nonNull(bostedadresse.getUtenlandskAdresse())) { foedsel.setFoedeland(bostedadresse.getUtenlandskAdresse().getLandkode()); } else { - foedsel.setFoedeland(geografiskeKodeverkConsumer.getTilfeldigLand()); + foedsel.setFoedeland(kodeverkConsumer.getTilfeldigLand()); } } } @@ -88,11 +89,14 @@ private void setFoedekommune(FoedselDTO foedsel, BostedadresseDTO bostedadresse) foedsel.setFoedekommune(bostedadresse.getVegadresse().getKommunenummer()); } else if (nonNull(bostedadresse.getMatrikkeladresse())) { foedsel.setFoedekommune(bostedadresse.getMatrikkeladresse().getKommunenummer()); - } else if (nonNull(bostedadresse.getUkjentBosted())) { + } else if (nonNull(bostedadresse.getUkjentBosted()) && + isNotBlank(bostedadresse.getUkjentBosted().getBostedskommune())) { foedsel.setFoedekommune(bostedadresse.getUkjentBosted().getBostedskommune()); + } else { + foedsel.setFoedekommune(kodeverkConsumer.getTilfeldigKommune()); } } else { - foedsel.setFoedekommune(geografiskeKodeverkConsumer.getTilfeldigKommune()); + foedsel.setFoedekommune(kodeverkConsumer.getTilfeldigKommune()); } } } diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/InnflyttingService.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/InnflyttingService.java index d9e5d65750a..6e29e685afc 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/InnflyttingService.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/InnflyttingService.java @@ -1,7 +1,7 @@ package no.nav.pdl.forvalter.service; import lombok.RequiredArgsConstructor; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.pdl.forvalter.exception.InvalidRequestException; import no.nav.testnav.libs.data.pdlforvalter.v1.BostedadresseDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.FolkeregisterPersonstatusDTO; @@ -29,7 +29,7 @@ public class InnflyttingService implements Validation { private static final String VALIDATION_LANDKODE_ERROR = "Landkode må oppgis i hht ISO-3 Landkoder på fraflyttingsland"; - private final GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private final KodeverkConsumer kodeverkConsumer; private final BostedAdresseService bostedAdresseService; public List convert(PersonDTO person) { @@ -56,7 +56,7 @@ public void validate(InnflyttingDTO innflytting) { protected void handle(InnflyttingDTO innflytting, PersonDTO person) { if (isBlank(innflytting.getFraflyttingsland())) { - innflytting.setFraflyttingsland(geografiskeKodeverkConsumer.getTilfeldigLand()); + innflytting.setFraflyttingsland(kodeverkConsumer.getTilfeldigLand()); } if (isNull(innflytting.getInnflyttingsdato())) { @@ -70,7 +70,7 @@ protected void handle(InnflyttingDTO innflytting, PersonDTO person) { .findFirst() .isEmpty()) { - person.getBostedsadresse().add(0, BostedadresseDTO.builder() + person.getBostedsadresse().addFirst(BostedadresseDTO.builder() .vegadresse(new VegadresseDTO()) .gyldigFraOgMed(innflytting.getInnflyttingsdato()) .isNew(true) @@ -91,7 +91,7 @@ protected void handle(InnflyttingDTO innflytting, PersonDTO person) { .findFirst() .isEmpty()) { - person.getFolkeregisterPersonstatus().add(0, FolkeregisterPersonstatusDTO.builder() + person.getFolkeregisterPersonstatus().addFirst(FolkeregisterPersonstatusDTO.builder() .isNew(true) .id(person.getFolkeregisterPersonstatus().stream() .max(Comparator.comparing(FolkeregisterPersonstatusDTO::getId)) diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/PersonArtifactService.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/PersonArtifactService.java index 09715210e1d..52d2e590956 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/PersonArtifactService.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/PersonArtifactService.java @@ -39,9 +39,9 @@ public PersonDTO buildPerson(PersonDTO person, Boolean relaxed) { // Orders below matters to some degree, don´t rearrange without checking consequences person.setKjoenn(kjoennService.convert(person)); - person.setFoedsel(foedselService.convert(person)); - person.setInnflytting(innflyttingService.convert(person)); person.setBostedsadresse(bostedAdresseService.convert(person, relaxed)); + person.setInnflytting(innflyttingService.convert(person)); + person.setFoedsel(foedselService.convert(person)); person.setStatsborgerskap(statsborgerskapService.convert(person)); person.setNavn(navnService.convert(person)); person.setOppholdsadresse(oppholdsadresseService.convert(person)); diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/StatsborgerskapService.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/StatsborgerskapService.java index a4d813ac136..49c6bfd0f0a 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/StatsborgerskapService.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/StatsborgerskapService.java @@ -1,7 +1,7 @@ package no.nav.pdl.forvalter.service; import lombok.RequiredArgsConstructor; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.pdl.forvalter.exception.InvalidRequestException; import no.nav.pdl.forvalter.utils.FoedselsdatoUtility; import no.nav.pdl.forvalter.utils.IdenttypeFraIdentUtility; @@ -30,7 +30,7 @@ public class StatsborgerskapService implements Validation { private static final String VALIDATION_LANDKODE_ERROR = "Ugyldig landkode, må være i hht ISO-3 Landkoder"; private static final String VALIDATION_DATOINTERVALL_ERROR = "Ugyldig datointervall: gyldigFom må være før gyldigTom"; - private final GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private final KodeverkConsumer kodeverkConsumer; public List convert(PersonDTO person) { @@ -67,7 +67,7 @@ private void handle(StatsborgerskapDTO statsborgerskap, PersonDTO person, Innfly } else if (FNR.equals(IdenttypeFraIdentUtility.getIdenttype(person.getIdent()))) { statsborgerskap.setLandkode(NORGE); } else { - statsborgerskap.setLandkode(geografiskeKodeverkConsumer.getTilfeldigLand()); + statsborgerskap.setLandkode(kodeverkConsumer.getTilfeldigLand()); } } diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/UtflyttingService.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/UtflyttingService.java index 91ae406610f..06bbf831f99 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/UtflyttingService.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/UtflyttingService.java @@ -1,7 +1,7 @@ package no.nav.pdl.forvalter.service; import lombok.RequiredArgsConstructor; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.pdl.forvalter.exception.InvalidRequestException; import no.nav.testnav.libs.data.pdlforvalter.v1.BostedadresseDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.FolkeregisterPersonstatusDTO; @@ -30,7 +30,7 @@ public class UtflyttingService implements Validation { private static final String VALIDATION_LANDKODE_ERROR = "Landkode må oppgis i hht ISO-3 Landkoder for tilflyttingsland"; - private final GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private final KodeverkConsumer kodeverkConsumer; private final KontaktAdresseService kontaktAdresseService; public List convert(PersonDTO person) { @@ -57,22 +57,19 @@ public void validate(UtflyttingDTO utflytting) { protected void handle(UtflyttingDTO utflytting, PersonDTO person) { if (isBlank(utflytting.getTilflyttingsland())) { - utflytting.setTilflyttingsland(geografiskeKodeverkConsumer.getTilfeldigLand()); + utflytting.setTilflyttingsland(kodeverkConsumer.getTilfeldigLand()); } if (isNull(utflytting.getUtflyttingsdato())) { utflytting.setUtflyttingsdato(LocalDateTime.now()); } - var it = person.getBostedsadresse().iterator(); - while (it.hasNext()) { - var bostedsadresse = it.next(); - if (bostedsadresse.isAdresseNorge() && bostedsadresse.getGyldigFraOgMed().isAfter(utflytting.getUtflyttingsdato())) { - it.remove(); - } - } - if (!person.getBostedsadresse().isEmpty() && person.getBostedsadresse().get(0).isAdresseNorge()) { - person.getBostedsadresse().get(0).setGyldigTilOgMed(utflytting.getUtflyttingsdato().minusDays(1)); + person.getBostedsadresse() + .removeIf(bostedsadresse -> bostedsadresse.isAdresseNorge() && + bostedsadresse.getGyldigFraOgMed().isAfter(utflytting.getUtflyttingsdato())); + + if (!person.getBostedsadresse().isEmpty() && person.getBostedsadresse().getFirst().isAdresseNorge()) { + person.getBostedsadresse().getFirst().setGyldigTilOgMed(utflytting.getUtflyttingsdato().minusDays(1)); } if (utflytting.isVelkjentLand() && person.getBostedsadresse().stream() @@ -87,7 +84,7 @@ protected void handle(UtflyttingDTO utflytting, PersonDTO person) { .findFirst() .isEmpty()) { - person.getKontaktadresse().add(0, KontaktadresseDTO.builder() + person.getKontaktadresse().addFirst(KontaktadresseDTO.builder() .utenlandskAdresse(UtenlandskAdresseDTO.builder() .landkode(utflytting.getTilflyttingsland()) .build()) @@ -110,7 +107,7 @@ protected void handle(UtflyttingDTO utflytting, PersonDTO person) { .findFirst() .isEmpty()) { - person.getFolkeregisterPersonstatus().add(0, FolkeregisterPersonstatusDTO.builder() + person.getFolkeregisterPersonstatus().addFirst(FolkeregisterPersonstatusDTO.builder() .isNew(true) .id(person.getFolkeregisterPersonstatus().stream() .max(Comparator.comparing(FolkeregisterPersonstatusDTO::getId)) diff --git a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/ValidateArtifactsService.java b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/ValidateArtifactsService.java index 6a714af11a9..bb91910ec60 100644 --- a/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/ValidateArtifactsService.java +++ b/apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/ValidateArtifactsService.java @@ -17,7 +17,6 @@ public class ValidateArtifactsService { private final AdressebeskyttelseService adressebeskyttelseService; private final BostedAdresseService bostedAdresseService; - private final DeltBostedService deltBostedService; private final DoedfoedtBarnService doedfoedtBarnService; private final DoedsfallService doedsfallService; private final FalskIdentitetService falskIdentitetService; @@ -46,33 +45,33 @@ public class ValidateArtifactsService { public void validate(PersonDTO person) { Stream.of( - validate(kjoennService, person.getKjoenn(), person), - validate(innflyttingService, person.getInnflytting()), - validate(statsborgerskapService, person.getStatsborgerskap()), - validate(bostedAdresseService, person.getBostedsadresse(), person), - validate(foedselService, person.getFoedsel(), person), - validate(navnService, person.getNavn(), person), - validate(oppholdsadresseService, person.getOppholdsadresse(), person), - validate(adressebeskyttelseService, person.getAdressebeskyttelse(), person), - validate(telefonnummerService, person.getTelefonnummer()), - validate(utflyttingService, person.getUtflytting()), - validate(oppholdService, person.getOpphold()), - validate(tilrettelagtKommunikasjonService, person.getTilrettelagtKommunikasjon()), - validate(doedsfallService, person.getDoedsfall()), - validate(folkeregisterPersonstatusService, person.getFolkeregisterPersonstatus(), person), - validate(fullmaktService, person.getFullmakt(), person), - validate(kontaktAdresseService, person.getKontaktadresse(), person), - validate(utenlandsidentifikasjonsnummerService, person.getUtenlandskIdentifikasjonsnummer()), - validate(vergemaalService, person.getVergemaal()), - validate(falskIdentitetService, person.getFalskIdentitet()), - validate(kontaktinformasjonForDoedsboService, person.getKontaktinformasjonForDoedsbo()), - validate(sivilstandService, person.getSivilstand()), - validate(forelderBarnRelasjonService, person.getForelderBarnRelasjon()), - validate(foreldreansvarService, person.getForeldreansvar(), person), - validate(sikkerhetstiltakService, person.getSikkerhetstiltak()), - validate(doedfoedtBarnService, person.getDoedfoedtBarn()), - validate(identtypeService, person.getNyident()) - ) + validate(kjoennService, person.getKjoenn(), person), + validate(innflyttingService, person.getInnflytting()), + validate(bostedAdresseService, person.getBostedsadresse(), person), + validate(foedselService, person.getFoedsel(), person), + validate(statsborgerskapService, person.getStatsborgerskap()), + validate(navnService, person.getNavn(), person), + validate(oppholdsadresseService, person.getOppholdsadresse(), person), + validate(adressebeskyttelseService, person.getAdressebeskyttelse(), person), + validate(telefonnummerService, person.getTelefonnummer()), + validate(utflyttingService, person.getUtflytting()), + validate(oppholdService, person.getOpphold()), + validate(tilrettelagtKommunikasjonService, person.getTilrettelagtKommunikasjon()), + validate(doedsfallService, person.getDoedsfall()), + validate(folkeregisterPersonstatusService, person.getFolkeregisterPersonstatus(), person), + validate(fullmaktService, person.getFullmakt(), person), + validate(kontaktAdresseService, person.getKontaktadresse(), person), + validate(utenlandsidentifikasjonsnummerService, person.getUtenlandskIdentifikasjonsnummer()), + validate(vergemaalService, person.getVergemaal()), + validate(falskIdentitetService, person.getFalskIdentitet()), + validate(kontaktinformasjonForDoedsboService, person.getKontaktinformasjonForDoedsbo()), + validate(sivilstandService, person.getSivilstand()), + validate(forelderBarnRelasjonService, person.getForelderBarnRelasjon()), + validate(foreldreansvarService, person.getForeldreansvar(), person), + validate(sikkerhetstiltakService, person.getSikkerhetstiltak()), + validate(doedfoedtBarnService, person.getDoedfoedtBarn()), + validate(identtypeService, person.getNyident()) + ) .reduce(Flux.empty(), Flux::concat) .collectList() .block(); diff --git a/apps/pdl-forvalter/src/main/resources/application-local.yaml b/apps/pdl-forvalter/src/main/resources/application-local.yaml index e9d09d9939d..d4749565077 100644 --- a/apps/pdl-forvalter/src/main/resources/application-local.yaml +++ b/apps/pdl-forvalter/src/main/resources/application-local.yaml @@ -36,5 +36,5 @@ consumers: url: https://testnav-ident-pool.intern.dev.nav.no org-forvalter: url: https://testnav-organisasjon-forvalter.intern.dev.nav.no - geografiske-kodeverk-service: - url: https://testnav-geografiske-kodeverk-service.intern.dev.nav.no \ No newline at end of file + kodeverk-service: + url: https://testnav-kodeverk-service.intern.dev.nav.no \ No newline at end of file diff --git a/apps/pdl-forvalter/src/main/resources/application.yaml b/apps/pdl-forvalter/src/main/resources/application.yaml index b38645ecc26..e827b21537a 100644 --- a/apps/pdl-forvalter/src/main/resources/application.yaml +++ b/apps/pdl-forvalter/src/main/resources/application.yaml @@ -26,11 +26,11 @@ consumers: cluster: dev-gcp namespace: dolly name: testnav-organisasjon-forvalter - geografiske-kodeverk-service: - url: http://testnav-geografiske-kodeverk-service.dolly.svc.cluster.local + kodeverk-service: + url: http://testnav-kodeverk-service.dolly.svc.cluster.local cluster: dev-gcp namespace: dolly - name: testnav-geografiske-kodeverk-service + name: testnav-kodeverk-service spring: cloud: diff --git a/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/FoedselServiceTest.java b/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/FoedselServiceTest.java index dd59550da97..b55de58f44a 100644 --- a/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/FoedselServiceTest.java +++ b/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/FoedselServiceTest.java @@ -1,6 +1,6 @@ package no.nav.pdl.forvalter.service; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.testnav.libs.data.pdlforvalter.v1.BostedadresseDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.FoedselDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.InnflyttingDTO; @@ -47,7 +47,7 @@ class FoedselServiceTest { .build(); @Mock - private GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private KodeverkConsumer kodeverkConsumer; @InjectMocks private FoedselService foedselService; @@ -62,7 +62,7 @@ void whenIdentIsFnrAndVegadresseConveysKommune_thenCaptureFoedekommune() { .ident(FNR_IDENT) .bostedsadresse(List.of(vegadresse)) .build()) - .get(0); + .getFirst(); assertThat(target.getFoedselsdato(), is(equalTo(LocalDate.of(1956, 10, 12).atStartOfDay()))); assertThat(target.getFoedselsaar(), is(equalTo(1956))); @@ -80,7 +80,7 @@ void whenIdentIsFnrAndMatrikkeldresseConveysKommune_thenCaptureFoedekommune() { .ident(FNR_IDENT) .bostedsadresse(List.of(matrikkeladresse)) .build()) - .get(0); + .getFirst(); assertThat(target.getFoedselsdato(), is(equalTo(LocalDate.of(1956, 10, 12).atStartOfDay()))); assertThat(target.getFoedselsaar(), is(equalTo(1956))); @@ -98,7 +98,7 @@ void whenIdentIsFnrAndUkjentBostedConveysKommune_thenCaptureFoedekommune() { .ident(FNR_IDENT) .bostedsadresse(List.of(ukjentBosted)) .build()) - .get(0); + .getFirst(); assertThat(target.getFoedselsdato(), is(equalTo(LocalDate.of(1956, 10, 12).atStartOfDay()))); assertThat(target.getFoedselsaar(), is(equalTo(1956))); @@ -109,7 +109,7 @@ void whenIdentIsFnrAndUkjentBostedConveysKommune_thenCaptureFoedekommune() { @Test void whenIdentIsFnrAndKommuneOfBirthIsUnknown_thenVerifyGetTilfeldigKommuneIsCalled() { - when(geografiskeKodeverkConsumer.getTilfeldigKommune()).thenReturn("4777"); + when(kodeverkConsumer.getTilfeldigKommune()).thenReturn("4777"); var target = foedselService.convert(PersonDTO.builder() .foedsel(List.of(FoedselDTO.builder() @@ -117,9 +117,9 @@ void whenIdentIsFnrAndKommuneOfBirthIsUnknown_thenVerifyGetTilfeldigKommuneIsCal .build())) .ident(FNR_IDENT) .build()) - .get(0); + .getFirst(); - verify(geografiskeKodeverkConsumer).getTilfeldigKommune(); + verify(kodeverkConsumer).getTilfeldigKommune(); assertThat(target.getFoedselsdato(), is(equalTo(LocalDate.of(1956, 10, 12).atStartOfDay()))); assertThat(target.getFoedselsaar(), is(equalTo(1956))); @@ -137,7 +137,7 @@ void whenIdentIsDnrAndUtenLandskAdresseConveysCountry_thenCaptureLandkode() { .ident(DNR_IDENT) .bostedsadresse(List.of(utenlandskBoadresse)) .build()) - .get(0); + .getFirst(); assertThat(target.getFoedselsdato(), is(equalTo(LocalDate.of(1968, 5, 1).atStartOfDay()))); assertThat(target.getFoedselsaar(), is(equalTo(1968))); @@ -154,7 +154,7 @@ void whenIdentIsDnrAndInnflyttingConveysCountry_thenCapturLandkode() { .ident(DNR_IDENT) .innflytting(List.of(innflytting)) .build()) - .get(0); + .getFirst(); assertThat(target.getFoedselsdato(), is(equalTo(LocalDate.of(1968, 5, 1).atStartOfDay()))); assertThat(target.getFoedselsaar(), is(equalTo(1968))); @@ -164,7 +164,7 @@ void whenIdentIsDnrAndInnflyttingConveysCountry_thenCapturLandkode() { @Test void whenIdentIsDnrAndLandOfBirthUnkown_thenLandkodeServiceIsCalled() { - when(geografiskeKodeverkConsumer.getTilfeldigLand()).thenReturn("COL"); + when(kodeverkConsumer.getTilfeldigLand()).thenReturn("COL"); var target = foedselService.convert(PersonDTO.builder() .foedsel(List.of(FoedselDTO.builder() @@ -172,9 +172,9 @@ void whenIdentIsDnrAndLandOfBirthUnkown_thenLandkodeServiceIsCalled() { .build())) .ident(DNR_IDENT) .build()) - .get(0); + .getFirst(); - verify(geografiskeKodeverkConsumer).getTilfeldigLand(); + verify(kodeverkConsumer).getTilfeldigLand(); assertThat(target.getFoedselsdato(), is(equalTo(LocalDate.of(1968, 5, 1).atStartOfDay()))); assertThat(target.getFoedselsaar(), is(equalTo(1968))); diff --git a/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/InnflyttingServiceTest.java b/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/InnflyttingServiceTest.java index acb0ebf5a23..2efcadbae0a 100644 --- a/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/InnflyttingServiceTest.java +++ b/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/InnflyttingServiceTest.java @@ -1,6 +1,6 @@ package no.nav.pdl.forvalter.service; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.testnav.libs.data.pdlforvalter.v1.InnflyttingDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.PersonDTO; import org.junit.jupiter.api.Test; @@ -24,7 +24,7 @@ class InnflyttingServiceTest { @Mock - private GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private KodeverkConsumer kodeverkConsumer; @Mock private BostedAdresseService bostedAdresseService; @@ -49,7 +49,7 @@ void whenInvalidLandkode_thenThrowExecption() { @Test void whenEmptyLandkode_thenProvideRandomCountry() { - when(geografiskeKodeverkConsumer.getTilfeldigLand()).thenReturn("IND"); + when(kodeverkConsumer.getTilfeldigLand()).thenReturn("IND"); var request = PersonDTO.builder() .innflytting(List.of(InnflyttingDTO.builder() @@ -58,9 +58,9 @@ void whenEmptyLandkode_thenProvideRandomCountry() { .build(); var target = innflyttingService.convert(request) - .get(0); + .getFirst(); - verify(geografiskeKodeverkConsumer).getTilfeldigLand(); + verify(kodeverkConsumer).getTilfeldigLand(); assertThat(target.getFraflyttingsland(), is(equalTo("IND"))); } diff --git a/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/StatsborgerskapServiceTest.java b/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/StatsborgerskapServiceTest.java index 1fac221f9af..e25dd3dd9fd 100644 --- a/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/StatsborgerskapServiceTest.java +++ b/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/StatsborgerskapServiceTest.java @@ -1,6 +1,6 @@ package no.nav.pdl.forvalter.service; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.testnav.libs.data.pdlforvalter.v1.DbVersjonDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.InnflyttingDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.PersonDTO; @@ -30,7 +30,7 @@ class StatsborgerskapServiceTest { private static final String DNR_IDENT = "42045612301"; @Mock - private GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private KodeverkConsumer kodeverkConsumer; @InjectMocks private StatsborgerskapService statsborgerskapService; @@ -76,7 +76,7 @@ void whenLandkodeIsEmptyAndAvailFromInnflytting_thenPickLandkodeFromInnflytting( .fraflyttingsland("GER") .build())) .build()) - .get(0); + .getFirst(); assertThat(target.getLandkode(), is(equalTo("GER"))); } @@ -90,7 +90,7 @@ void whenLandkodeIsEmptyAndUnavailFromInnflyttingAndIdenttypeFNR_thenSetLandkode .build())) .ident(FNR_IDENT) .build()) - .get(0); + .getFirst(); assertThat(target.getLandkode(), is(equalTo("NOR"))); } @@ -98,7 +98,7 @@ void whenLandkodeIsEmptyAndUnavailFromInnflyttingAndIdenttypeFNR_thenSetLandkode @Test void whenLandkodeIsEmptyAndUnavailFromInnflyttingAndIdenttypeDNR_thenGeografiskeKodeverkConsumerIsCalled() { - when(geografiskeKodeverkConsumer.getTilfeldigLand()).thenReturn("CHL"); + when(kodeverkConsumer.getTilfeldigLand()).thenReturn("CHL"); var target = statsborgerskapService.convert(PersonDTO.builder() .statsborgerskap(List.of(StatsborgerskapDTO.builder() @@ -106,9 +106,9 @@ void whenLandkodeIsEmptyAndUnavailFromInnflyttingAndIdenttypeDNR_thenGeografiske .build())) .ident(DNR_IDENT) .build()) - .get(0); + .getFirst(); - verify(geografiskeKodeverkConsumer).getTilfeldigLand(); + verify(kodeverkConsumer).getTilfeldigLand(); assertThat(target.getLandkode(), is(equalTo("CHL"))); } @@ -123,7 +123,7 @@ void whenGyldigFomNotProvided_thenDeriveGyldigFomFromBirthdate() { .build())) .ident(FNR_IDENT) .build()) - .get(0); + .getFirst(); assertThat(target.getGyldigFraOgMed(), is(equalTo(LocalDate.of(1956, 4, 12).atStartOfDay()))); } diff --git a/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/UtflyttingServiceTest.java b/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/UtflyttingServiceTest.java index af61d61a735..1b923df5319 100644 --- a/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/UtflyttingServiceTest.java +++ b/apps/pdl-forvalter/src/test/java/no/nav/pdl/forvalter/service/UtflyttingServiceTest.java @@ -1,6 +1,6 @@ package no.nav.pdl.forvalter.service; -import no.nav.pdl.forvalter.consumer.GeografiskeKodeverkConsumer; +import no.nav.pdl.forvalter.consumer.KodeverkConsumer; import no.nav.testnav.libs.data.pdlforvalter.v1.PersonDTO; import no.nav.testnav.libs.data.pdlforvalter.v1.UtflyttingDTO; import org.junit.jupiter.api.Test; @@ -24,7 +24,7 @@ class UtflyttingServiceTest { @Mock - private GeografiskeKodeverkConsumer geografiskeKodeverkConsumer; + private KodeverkConsumer kodeverkConsumer; @Mock private KontaktAdresseService kontaktAdresseService; @@ -49,15 +49,15 @@ void whenInvalidLandkode_thenThrowExecption() { @Test void whenEmptyLandkode_thenProvideCountryFromGeografiskeKodeverkConsumer() { - when(geografiskeKodeverkConsumer.getTilfeldigLand()).thenReturn("TGW"); + when(kodeverkConsumer.getTilfeldigLand()).thenReturn("TGW"); var request = PersonDTO.builder() .utflytting(List.of(UtflyttingDTO.builder().isNew(true).build())) .build(); - var target = utflyttingService.convert(request).get(0); + var target = utflyttingService.convert(request).getFirst(); - verify(geografiskeKodeverkConsumer).getTilfeldigLand(); + verify(kodeverkConsumer).getTilfeldigLand(); assertThat(target.getTilflyttingsland(), is(equalTo("TGW"))); } } \ No newline at end of file diff --git a/libs/data-transfer-objects/src/main/java/no/nav/testnav/libs/dto/geografiskekodeverkservice/v1/GeografiskeKodeverkDTO.java b/libs/data-transfer-objects/src/main/java/no/nav/testnav/libs/dto/geografiskekodeverkservice/v1/GeografiskeKodeverkDTO.java deleted file mode 100644 index 67aa400983a..00000000000 --- a/libs/data-transfer-objects/src/main/java/no/nav/testnav/libs/dto/geografiskekodeverkservice/v1/GeografiskeKodeverkDTO.java +++ /dev/null @@ -1,6 +0,0 @@ -package no.nav.testnav.libs.dto.geografiskekodeverkservice.v1; - -import com.fasterxml.jackson.annotation.JsonInclude; - -@JsonInclude(JsonInclude.Include.NON_NULL) -public record GeografiskeKodeverkDTO(String navn, String kode) {} diff --git a/libs/data-transfer-objects/src/main/java/no/nav/testnav/libs/dto/kodeverkservice/v1/KodeverkDTO.java b/libs/data-transfer-objects/src/main/java/no/nav/testnav/libs/dto/kodeverkservice/v1/KodeverkDTO.java index 3e61ada7b5a..244bde91d67 100644 --- a/libs/data-transfer-objects/src/main/java/no/nav/testnav/libs/dto/kodeverkservice/v1/KodeverkDTO.java +++ b/libs/data-transfer-objects/src/main/java/no/nav/testnav/libs/dto/kodeverkservice/v1/KodeverkDTO.java @@ -4,6 +4,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.springframework.http.HttpStatus; import java.util.HashMap; import java.util.Map; @@ -19,8 +20,11 @@ public class KodeverkDTO { private String kodeverknavn; private Map kodeverk; + private HttpStatus status; + private String message; + public Map getKodeverk() { - + if (isNull(kodeverk)) { kodeverk = new HashMap<>(); }