diff --git a/pom.xml b/pom.xml index 0179c5f..d4bc13d 100644 --- a/pom.xml +++ b/pom.xml @@ -75,7 +75,7 @@ felles import pom - 4.0.3 + 4.0.5 diff --git a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/ProsessTaskRestTjeneste.java b/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/ProsessTaskRestTjeneste.java index c4887ce..b8789f9 100644 --- a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/ProsessTaskRestTjeneste.java +++ b/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/ProsessTaskRestTjeneste.java @@ -33,8 +33,6 @@ import no.nav.vedtak.felles.prosesstask.rest.app.ProsessTaskApplikasjonTjeneste; import no.nav.vedtak.felles.prosesstask.rest.dto.FeiletProsessTaskDataDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskDataDto; -import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskDataInfo; -import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskDataPayloadDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskIdDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskOpprettInputDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskRestartInputDto; @@ -42,8 +40,6 @@ import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskRetryAllResultatDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskSetFerdigInputDto; import no.nav.vedtak.felles.prosesstask.rest.dto.SokeFilterDto; -import no.nav.vedtak.log.sporingslogg.Sporingsdata; -import no.nav.vedtak.log.sporingslogg.SporingsloggHelper; import no.nav.vedtak.sikkerhet.abac.BeskyttetRessurs; import no.nav.vedtak.sikkerhet.abac.TilpassetAbacAttributt; @@ -125,11 +121,6 @@ public ProsessTaskRetryAllResultatDto retryAllProsessTask() { public List finnProsessTasks(@Parameter(description = "Søkefilter for å begrense resultatet av returnerte prosesstask.") @TilpassetAbacAttributt(supplierClass = AbacEmptySupplier.class) @Valid SokeFilterDto sokeFilterDto) { List resultat = prosessTaskApplikasjonTjeneste.finnAlle(sokeFilterDto); - // må logge tilgang til personopplysninger, det blir ikke logget nok via @BeskyttetRessurs siden det er rolle-tilgang her - for (ProsessTaskDataDto dto : resultat) { - loggLesingAvPersondataFraProsessTask(dto, "/list"); - } - return resultat; } @@ -145,31 +136,6 @@ public List finnProsessTasks(@Parameter(description = "Søke public Response finnFeiletProsessTask(@NotNull @Parameter(description = "Prosesstask-id for feilet prosesstask") @TilpassetAbacAttributt(supplierClass = AbacEmptySupplier.class) @Valid ProsessTaskIdDto prosessTaskIdDto) { Optional resultat = prosessTaskApplikasjonTjeneste.finnFeiletProsessTask(prosessTaskIdDto.getProsessTaskId()); if (resultat.isPresent()) { - - // må logge tilgang til personopplysninger, det blir ikke logget nok via @BeskyttetRessurs siden det er rolle-tilgang her - loggLesingAvPersondataFraProsessTask(resultat.get(), "/no/nav/vedtak/felles/behandlingsprosess/prosesstask/rest/feil"); - - return Response.ok(resultat.get()).build(); - } - return Response.status(HttpStatus.SC_NOT_FOUND).build(); - } - - @POST - @Path("/payload") - @Consumes(MediaType.APPLICATION_JSON) - @Operation(description = "Henter informasjon om prosesstask, inkludert payload for angitt prosesstask-id", tags = "prosesstask", responses = { - @ApiResponse(responseCode = "200", description = "Angit prosesstask-id finnes", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ProsessTaskDataPayloadDto.class))), - @ApiResponse(responseCode = "404", description = "Tom respons når angitt prosesstask-id ikke finnes"), - @ApiResponse(responseCode = "400", description = "Feil input") - }) - @BeskyttetRessurs(action = READ, property = ABAC_DRIFT_ATTRIBUTT) - public Response finnProsessTaskInkludertPayload(@NotNull @Parameter(description = "Prosesstask-id for en eksisterende prosesstask") @TilpassetAbacAttributt(supplierClass = AbacEmptySupplier.class) @Valid ProsessTaskIdDto prosessTaskIdDto) { - Optional resultat = prosessTaskApplikasjonTjeneste.finnProsessTaskMedPayload(prosessTaskIdDto.getProsessTaskId()); - if (resultat.isPresent()) { - - // må logge tilgang til personopplysninger, det blir ikke logget nok via @BeskyttetRessurs siden det er rolle-tilgang her - loggLesingAvPersondataFraProsessTask(resultat.get(), "/payload"); - return Response.ok(resultat.get()).build(); } return Response.status(HttpStatus.SC_NOT_FOUND).build(); @@ -188,10 +154,4 @@ public Response setFeiletProsessTaskFerdig(@NotNull @Parameter(description = "Pr return Response.ok().build(); } - private void loggLesingAvPersondataFraProsessTask(ProsessTaskDataInfo prosessTaskInfo, String metode) { - String actionType = "read"; - String endepunkt = ProsessTaskRestTjeneste.class.getAnnotation(Path.class).value() + metode; - Optional sporingsdata = prosessTaskInfo.lagSporingsloggData(metode); - sporingsdata.ifPresent(sd -> SporingsloggHelper.logSporing(ProsessTaskRestTjeneste.class, sd, actionType, endepunkt)); - } } diff --git a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/app/ProsessTaskApplikasjonTjeneste.java b/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/app/ProsessTaskApplikasjonTjeneste.java index 05092e5..07d1dc2 100644 --- a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/app/ProsessTaskApplikasjonTjeneste.java +++ b/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/app/ProsessTaskApplikasjonTjeneste.java @@ -19,7 +19,6 @@ import no.nav.vedtak.felles.prosesstask.rest.dto.FeiletProsessTaskDataDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskDataDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskDataKonverter; -import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskDataPayloadDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskOpprettInputDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskRestartInputDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskRestartResultatDto; @@ -71,11 +70,6 @@ public Optional finnFeiletProsessTask(Long prosessTask return Optional.empty(); } - public Optional finnProsessTaskMedPayload(Long prosessTaskId) { - ProsessTaskData taskData = prosessTaskRepository.finn(prosessTaskId); - return taskData == null ? Optional.empty() : Optional.of(ProsessTaskDataKonverter.tilProsessTaskDataPayloadDto(taskData)); - } - public void setProsessTaskFerdig(Long prosessTaskId, ProsessTaskStatus status) { ProsessTaskData taskData = prosessTaskRepository.finn(prosessTaskId); if (taskData == null) { diff --git a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/FeiletProsessTaskDataDto.java b/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/FeiletProsessTaskDataDto.java index 517d880..d4a7d28 100644 --- a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/FeiletProsessTaskDataDto.java +++ b/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/FeiletProsessTaskDataDto.java @@ -1,7 +1,5 @@ package no.nav.vedtak.felles.prosesstask.rest.dto; -import java.util.Optional; - import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; @@ -13,13 +11,12 @@ import com.fasterxml.jackson.annotation.JsonUnwrapped; import io.swagger.v3.oas.annotations.media.Schema; -import no.nav.vedtak.log.sporingslogg.Sporingsdata; @JsonIgnoreProperties(ignoreUnknown = true) @JsonFormat(shape = JsonFormat.Shape.OBJECT) @JsonAutoDetect(getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE, fieldVisibility = Visibility.ANY) @Schema -public class FeiletProsessTaskDataDto implements ProsessTaskDataInfo { +public class FeiletProsessTaskDataDto { @JsonProperty(value="sisteKjøringServerProsess") @Size(max=100) @@ -71,9 +68,4 @@ public ProsessTaskDataDto getProsessTaskDataDto() { public void setProsessTaskDataDto(ProsessTaskDataDto prosessTaskDataDto) { this.prosessTaskDataDto = prosessTaskDataDto; } - - @Override - public Optional lagSporingsloggData(String action) { - return prosessTaskDataDto.lagSporingsloggData(action); - } } diff --git a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataDto.java b/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataDto.java index 504ce49..ab95311 100644 --- a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataDto.java +++ b/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataDto.java @@ -1,7 +1,6 @@ package no.nav.vedtak.felles.prosesstask.rest.dto; import java.time.LocalDateTime; -import java.util.Optional; import java.util.Properties; import javax.validation.Valid; @@ -15,19 +14,12 @@ import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; -import no.nav.vedtak.felles.prosesstask.api.ProsessTaskSporingsloggId; -import no.nav.vedtak.log.sporingslogg.Sporingsdata; @JsonIgnoreProperties(ignoreUnknown = true) @JsonFormat(shape = JsonFormat.Shape.OBJECT) @JsonAutoDetect(getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE, fieldVisibility = Visibility.ANY) @Schema -public class ProsessTaskDataDto implements ProsessTaskDataInfo { - - private static final String AKTØR_ID = "aktoerId"; - private static final String BEHANDLING_ID = "behandlingId"; - private static final String FAGSAK_ID = "fagsakId"; - private static final String PNR_ID = "personidentifikator"; +public class ProsessTaskDataDto { @JsonProperty(value = "id", required = true) private Long id; @@ -144,31 +136,4 @@ public void setTaskParametre(Properties taskParametre) { this.taskParametre = taskParametre; } - @Override - public Optional lagSporingsloggData(String action) { - - String aktørId = taskParametre.getProperty(AKTØR_ID); - String fagsakId = taskParametre.getProperty(FAGSAK_ID); - String behandlingId = taskParametre.getProperty(BEHANDLING_ID); - String pnrId = taskParametre.getProperty(PNR_ID); - - if (aktørId == null && fagsakId == null && behandlingId == null && pnrId == null) { - return Optional.empty(); - } - - Sporingsdata sporingsdata = Sporingsdata.opprett(action); - if (aktørId != null) { - sporingsdata.leggTilId(ProsessTaskSporingsloggId.AKTOR_ID.getSporingsloggKode(), aktørId); - } - if (fagsakId != null) { - sporingsdata.leggTilId(ProsessTaskSporingsloggId.FAGSAK_ID.getSporingsloggKode(), fagsakId); - } - if (behandlingId != null) { - sporingsdata.leggTilId(ProsessTaskSporingsloggId.BEHANDLING_ID.getSporingsloggKode(), behandlingId); - } - if (pnrId != null) { - sporingsdata.leggTilId(ProsessTaskSporingsloggId.FNR.getSporingsloggKode(), pnrId); - } - return Optional.of(sporingsdata); - } } diff --git a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataInfo.java b/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataInfo.java deleted file mode 100644 index f2c1940..0000000 --- a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataInfo.java +++ /dev/null @@ -1,9 +0,0 @@ -package no.nav.vedtak.felles.prosesstask.rest.dto; - -import java.util.Optional; - -import no.nav.vedtak.log.sporingslogg.Sporingsdata; - -public interface ProsessTaskDataInfo { - Optional lagSporingsloggData(String action); -} diff --git a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataKonverter.java b/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataKonverter.java index 0e3605c..79725ca 100644 --- a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataKonverter.java +++ b/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataKonverter.java @@ -1,9 +1,14 @@ package no.nav.vedtak.felles.prosesstask.rest.dto; +import java.util.Properties; +import java.util.Set; + import no.nav.vedtak.felles.prosesstask.api.ProsessTaskData; public class ProsessTaskDataKonverter { + private static final Set EXTRACT_PARAMS = Set.of("behandlingid", "behandlinguuid", "fagsakid", "saksnummer"); + private ProsessTaskDataKonverter() { } @@ -18,7 +23,7 @@ public static ProsessTaskDataDto tilProsessTaskDataDto(ProsessTaskData data) { dto.setStatus(data.getStatus().getDbKode()); dto.setSistKjørt(data.getSistKjørt()); dto.setSisteFeilKode(data.getSisteFeilKode()); - dto.setTaskParametre(data.getProperties()); + dto.setTaskParametre(filtrerProperties(data.getProperties())); return dto; } @@ -35,18 +40,12 @@ public static FeiletProsessTaskDataDto tilFeiletProsessTaskDataDto(ProsessTaskDa return dto; } - public static ProsessTaskDataPayloadDto tilProsessTaskDataPayloadDto(ProsessTaskData data) { - ProsessTaskDataPayloadDto dto = new ProsessTaskDataPayloadDto(); - - dto.setProsessTaskDataDto(tilProsessTaskDataDto(data)); - - dto.setFeiledeForsøk(data.getAntallFeiledeForsøk()); - dto.setSisteFeilTekst(data.getSisteFeil()); - dto.setSisteKjøringServerProsess(data.getSisteKjøringServerProsess()); - - dto.setPayload(data.getPayloadAsString()); - - return dto; + private static Properties filtrerProperties(Properties input) { + var output = new Properties(); + input.stringPropertyNames().stream() + .filter(p -> EXTRACT_PARAMS.contains(p.toLowerCase())) + .forEach(p -> output.setProperty(p, input.getProperty(p))); + return output; } } diff --git a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataPayloadDto.java b/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataPayloadDto.java deleted file mode 100644 index e7a1207..0000000 --- a/rest/src/main/java/no/nav/vedtak/felles/prosesstask/rest/dto/ProsessTaskDataPayloadDto.java +++ /dev/null @@ -1,89 +0,0 @@ -package no.nav.vedtak.felles.prosesstask.rest.dto; - -import java.util.Optional; - -import javax.validation.Valid; -import javax.validation.constraints.Size; - -import com.fasterxml.jackson.annotation.JsonAutoDetect; -import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonUnwrapped; - -import io.swagger.v3.oas.annotations.media.Schema; -import no.nav.vedtak.log.sporingslogg.Sporingsdata; - -@JsonIgnoreProperties(ignoreUnknown = true) -@JsonFormat(shape = JsonFormat.Shape.OBJECT) -@JsonAutoDetect(getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE, fieldVisibility = Visibility.ANY) -@Schema -public class ProsessTaskDataPayloadDto implements ProsessTaskDataInfo { - - @JsonProperty(value = "payload") - private String payload; - - @JsonProperty(value = "sisteKjøringServerProsess") - @Size(max = 100) - private String sisteKjøringServerProsess; - - @JsonProperty(value = "sisteFeilTekst") - @Size(max = 100_000) - private String sisteFeilTekst; - - @JsonProperty(value = "feiledeForsøk") - private Integer feiledeForsøk; - - @JsonUnwrapped - @Valid - private ProsessTaskDataDto prosessTaskDataDto; - - public ProsessTaskDataPayloadDto() { - } - - public String getPayload() { - return payload; - } - - public void setPayload(String payload) { - this.payload = payload; - } - - public String getSisteKjøringServerProsess() { - return sisteKjøringServerProsess; - } - - public void setSisteKjøringServerProsess(String sisteKjøringServerProsess) { - this.sisteKjøringServerProsess = sisteKjøringServerProsess; - } - - public String getSisteFeilTekst() { - return sisteFeilTekst; - } - - public void setSisteFeilTekst(String sisteFeilTekst) { - this.sisteFeilTekst = sisteFeilTekst; - } - - public Integer getFeiledeForsøk() { - return feiledeForsøk; - } - - public void setFeiledeForsøk(Integer feiledeForsøk) { - this.feiledeForsøk = feiledeForsøk; - } - - public ProsessTaskDataDto getProsessTaskDataDto() { - return prosessTaskDataDto; - } - - public void setProsessTaskDataDto(ProsessTaskDataDto prosessTaskDataDto) { - this.prosessTaskDataDto = prosessTaskDataDto; - } - - @Override - public Optional lagSporingsloggData(String action) { - return prosessTaskDataDto.lagSporingsloggData(action); - } -} diff --git a/rest/src/test/java/no/nav/vedtak/felles/prosesstask/rest/app/ProsessTaskApplikasjonTjenesteImplTest.java b/rest/src/test/java/no/nav/vedtak/felles/prosesstask/rest/app/ProsessTaskApplikasjonTjenesteImplTest.java index 3c7d28f..11660a6 100644 --- a/rest/src/test/java/no/nav/vedtak/felles/prosesstask/rest/app/ProsessTaskApplikasjonTjenesteImplTest.java +++ b/rest/src/test/java/no/nav/vedtak/felles/prosesstask/rest/app/ProsessTaskApplikasjonTjenesteImplTest.java @@ -1,5 +1,6 @@ package no.nav.vedtak.felles.prosesstask.rest.app; +import static no.nav.vedtak.felles.prosesstask.api.ProsessTaskData.AKTØR_ID; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyList; @@ -15,7 +16,9 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Optional; +import java.util.UUID; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -29,7 +32,6 @@ import no.nav.vedtak.felles.prosesstask.api.ProsessTaskTypeInfo; import no.nav.vedtak.felles.prosesstask.rest.dto.FeiletProsessTaskDataDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskDataDto; -import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskDataPayloadDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskOpprettInputDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskRestartInputDto; import no.nav.vedtak.felles.prosesstask.rest.dto.ProsessTaskRestartResultatDto; @@ -208,11 +210,17 @@ public void skal_returnere_tre_restartet_prosesstask() { @Test public void skal_filtrere_ut_prosesstask_med_status_feilet() { final Long taskId = 10L; - when(prosessTaskRepositoryMock.finn(anyLong())).thenReturn(lagMedStatus(ProsessTaskStatus.FEILET)); + var uuid = UUID.randomUUID(); + Map parameters = Map.of(AKTØR_ID, "1111111111111", + "behandlingUUId", uuid.toString(), + "localProp", String.valueOf(123L)); + when(prosessTaskRepositoryMock.finn(anyLong())).thenReturn(lagMedStatusPlussParameters(ProsessTaskStatus.FEILET, parameters)); FeiletProsessTaskDataDto result = prosessTaskApplikasjonTjeneste.finnFeiletProsessTask(taskId).get(); verify(prosessTaskRepositoryMock, times(1)).finn(taskId); assertThat(result.getProsessTaskDataDto().getStatus()).isEqualTo(ProsessTaskStatus.FEILET.getDbKode()); + assertThat(result.getProsessTaskDataDto().getTaskParametre().stringPropertyNames()).hasSize(1); + assertThat(result.getProsessTaskDataDto().getTaskParametre().getProperty("behandlingUUId")).isEqualTo(uuid.toString()); } @Test @@ -225,15 +233,6 @@ public void skal_returnere_null_hvis_prosesstask_har_status_ulik_feilet() { assertThat(result).isNull(); } - @Test - public void skal_returnere_task_payload_hvis_eksisterer() throws Exception { - final Long taskId = 10L; - when(prosessTaskRepositoryMock.finn(anyLong())).thenReturn(lagMedPayload()); - ProsessTaskDataPayloadDto result = prosessTaskApplikasjonTjeneste.finnProsessTaskMedPayload(taskId).get(); - verify(prosessTaskRepositoryMock, times(1)).finn(taskId); - assertThat(result.getPayload()).isEqualTo(PAYLOAD_STRING); - } - @Test public void skal_returnere_empty_hvis_ugyldig_kjoretidsintervall() throws Exception { SokeFilterDto sokeFilterDto = new SokeFilterDto(); @@ -245,17 +244,18 @@ public void skal_returnere_empty_hvis_ugyldig_kjoretidsintervall() throws Except assertThat(result).isEmpty(); } - private ProsessTaskData lagMedPayload() { + private ProsessTaskData lagMedStatus(ProsessTaskStatus status) { ProsessTaskData prosessTaskData = new ProsessTaskData(TASK_TYPE); - prosessTaskData.setStatus(ProsessTaskStatus.FERDIG); - prosessTaskData.setPayload(PAYLOAD_STRING); + prosessTaskData.setStatus(status); + prosessTaskData.setAntallFeiledeForsøk(0); return prosessTaskData; } - private ProsessTaskData lagMedStatus(ProsessTaskStatus status) { + private ProsessTaskData lagMedStatusPlussParameters(ProsessTaskStatus status, Map parameters) { ProsessTaskData prosessTaskData = new ProsessTaskData(TASK_TYPE); prosessTaskData.setStatus(status); prosessTaskData.setAntallFeiledeForsøk(0); + parameters.forEach(prosessTaskData::setProperty); return prosessTaskData; }