From 76af24d720a3605f4975bea6bc95be9f47629927 Mon Sep 17 00:00:00 2001 From: Tobias Bruns <kontakt@tobias-bruns.de> Date: Tue, 11 Feb 2025 09:03:35 +0100 Subject: [PATCH] OZG-7689 add eventName to vorgang header --- pom.xml | 4 ++++ .../processor/ProcessorEventListener.java | 2 +- .../vorgang/ProcessorVorgangMapper.java | 8 +++++++ .../ozgcloud/processor/vorgang/Vorgang.java | 19 +++++++++++++++ .../processor/processor/FormTestFactory.java | 2 +- .../processor/ProcessorEventListenerTest.java | 8 ++++++- .../vorgang/ProcessorVorgangMapperTest.java | 3 ++- .../vorgang/VorgangHeaderTestFactory.java | 24 +++++++++++++++++++ .../processor/vorgang/VorgangTestFactory.java | 6 +++++ 9 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 src/test/java/de/ozgcloud/processor/vorgang/VorgangHeaderTestFactory.java diff --git a/pom.xml b/pom.xml index 7ed4772..311eeb0 100644 --- a/pom.xml +++ b/pom.xml @@ -85,6 +85,10 @@ <groupId>org.springframework</groupId> <artifactId>spring-webflux</artifactId> </dependency> + <dependency> + <groupId>com.fasterxml.jackson.datatype</groupId> + <artifactId>jackson-datatype-jsr310</artifactId> + </dependency> <!-- test --> <dependency> diff --git a/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java b/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java index a5e4dd0..936a17a 100644 --- a/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java +++ b/src/main/java/de/ozgcloud/processor/processor/ProcessorEventListener.java @@ -99,7 +99,7 @@ class ProcessorEventListener { } void processVorgang(@NonNull VorgangId vorgangId, String eventName) { - var vorgang = getVorgang(vorgangId); + var vorgang = getVorgang(vorgangId).withEvent(eventName); processorService.processVorgang(vorgang, eventName) .forEach(processorResultMono -> processorResultMono.doOnError(cause -> handleError(cause, vorgangId)) diff --git a/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java b/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java index 2774aed..851d098 100644 --- a/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java +++ b/src/main/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapper.java @@ -24,6 +24,7 @@ package de.ozgcloud.processor.vorgang; import java.util.List; +import java.util.Objects; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -43,6 +44,7 @@ import de.ozgcloud.apilib.vorgang.OzgCloudFormField; import de.ozgcloud.apilib.vorgang.OzgCloudSubForm; import de.ozgcloud.apilib.vorgang.OzgCloudVorgang; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId; +import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStatus; import de.ozgcloud.common.binaryfile.FileId; import de.ozgcloud.processor.ProcessorManagerConfiguration; @@ -53,6 +55,7 @@ public interface ProcessorVorgangMapper { @Mapping(target = "eingang", qualifiedByName = "mapEingang", source = "eingangs") @Mapping(target = "formId", qualifiedByName = "getFormId", source = "eingangs") @Mapping(target = "formEngineName", qualifiedByName = "mapFormEngineName", source = "eingangs") + @Mapping(target = "header.event", ignore = true) Vorgang mapVorgang(OzgCloudVorgang ozgCloudVorgang); default VorgangId mapId(OzgCloudVorgangId id) { @@ -109,4 +112,9 @@ public interface ProcessorVorgangMapper { default FileId fromOzgCloudId(OzgCloudFileId ozgCloudFileId) { return FileId.from(ozgCloudFileId.toString()); } + + default String map(OzgCloudVorgangStatus value) { + return Objects.nonNull(value) ? value.toString() : null; + } + } diff --git a/src/main/java/de/ozgcloud/processor/vorgang/Vorgang.java b/src/main/java/de/ozgcloud/processor/vorgang/Vorgang.java index 5634470..b89e766 100644 --- a/src/main/java/de/ozgcloud/processor/vorgang/Vorgang.java +++ b/src/main/java/de/ozgcloud/processor/vorgang/Vorgang.java @@ -23,11 +23,14 @@ */ package de.ozgcloud.processor.vorgang; +import java.time.ZonedDateTime; + import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty.Access; import lombok.Builder; import lombok.Getter; +import lombok.With; @Builder @Getter @@ -43,9 +46,25 @@ public class Vorgang { private String formId; private Eingang eingang; + @With + @Builder.Default + private VorgangHeader header = VorgangHeader.builder().build(); @JsonProperty(access = Access.READ_ONLY, value = "vorgangId") public String getId() { return id.toString(); } + + @Builder + @Getter + static class VorgangHeader { + @With + private String event; + private String status; + private ZonedDateTime createdAt; + } + + public Vorgang withEvent(String event) { + return this.withHeader(header.withEvent(event)); + } } diff --git a/src/test/java/de/ozgcloud/processor/processor/FormTestFactory.java b/src/test/java/de/ozgcloud/processor/processor/FormTestFactory.java index 0210a3b..51bcf9b 100644 --- a/src/test/java/de/ozgcloud/processor/processor/FormTestFactory.java +++ b/src/test/java/de/ozgcloud/processor/processor/FormTestFactory.java @@ -31,7 +31,7 @@ import de.ozgcloud.processor.processor.ProcessorProperties.Form.FormBuilder; public class FormTestFactory { - public static String EVENT = "VORGANG_CREATED"; + public static final String EVENT = "VORGANG_CREATED"; public static Form create() { return createBuilder().build(); diff --git a/src/test/java/de/ozgcloud/processor/processor/ProcessorEventListenerTest.java b/src/test/java/de/ozgcloud/processor/processor/ProcessorEventListenerTest.java index 29273a7..bbbd693 100644 --- a/src/test/java/de/ozgcloud/processor/processor/ProcessorEventListenerTest.java +++ b/src/test/java/de/ozgcloud/processor/processor/ProcessorEventListenerTest.java @@ -61,6 +61,7 @@ import de.ozgcloud.processor.event.EventService; import de.ozgcloud.processor.result.ProcessorTechnicalException; import de.ozgcloud.processor.result.ResultService; import de.ozgcloud.processor.vorgang.Vorgang; +import de.ozgcloud.processor.vorgang.VorgangHeaderTestFactory; import de.ozgcloud.processor.vorgang.VorgangId; import de.ozgcloud.processor.vorgang.VorgangService; import de.ozgcloud.processor.vorgang.VorgangTestFactory; @@ -95,6 +96,8 @@ class ProcessorEventListenerTest { @Captor private ArgumentCaptor<ProcessorResult> resultCaptor; + @Captor + private ArgumentCaptor<Vorgang> vorgangCaptor; private static final VorgangCreatedEvent EVENT = new VorgangCreatedEvent(OzgCloudVorgangTestFactory.ID.toString()); @@ -121,7 +124,9 @@ class ProcessorEventListenerTest { void shouldCallProcessVorgang() { listener.triggerNewVorgangProcessors(EVENT); - verify(processorService).processVorgang(vorgang, "VORGANG_CREATED"); + verify(processorService).processVorgang(vorgangCaptor.capture(), eq("VORGANG_CREATED")); + assertThat(vorgangCaptor.getValue()).usingRecursiveComparison() + .isEqualTo(VorgangTestFactory.createWithHeader(VorgangHeaderTestFactory.createBuilder().event("VORGANG_CREATED").build())); } @Test @@ -374,6 +379,7 @@ class ProcessorEventListenerTest { void init() { when(commandService.getCommand(any())).thenReturn(command); when(eventService.getEventNameFromOrder(any())).thenReturn(Optional.of(EVENT_NAME)); + when(vorgangService.getVorgang(any())).thenReturn(VorgangTestFactory.create()); } @Test diff --git a/src/test/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapperTest.java b/src/test/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapperTest.java index 42be8a3..3240749 100644 --- a/src/test/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapperTest.java +++ b/src/test/java/de/ozgcloud/processor/vorgang/ProcessorVorgangMapperTest.java @@ -42,7 +42,8 @@ class ProcessorVorgangMapperTest { void shouldMapAllField() { var mapped = mapper.mapVorgang(OzgCloudVorgangTestFactory.create()); - assertThat(mapped).usingRecursiveComparison().isEqualTo(VorgangTestFactory.create()); + assertThat(mapped).usingRecursiveComparison() + .isEqualTo(VorgangTestFactory.createWithHeader(VorgangHeaderTestFactory.createBuilder().event(null).build())); } @Test diff --git a/src/test/java/de/ozgcloud/processor/vorgang/VorgangHeaderTestFactory.java b/src/test/java/de/ozgcloud/processor/vorgang/VorgangHeaderTestFactory.java new file mode 100644 index 0000000..72d225c --- /dev/null +++ b/src/test/java/de/ozgcloud/processor/vorgang/VorgangHeaderTestFactory.java @@ -0,0 +1,24 @@ +package de.ozgcloud.processor.vorgang; + +import java.time.ZonedDateTime; + +import de.ozgcloud.apilib.vorgang.OzgCloudVorgangHeaderTestFactory; +import de.ozgcloud.processor.vorgang.Vorgang.VorgangHeader; + +public class VorgangHeaderTestFactory { + + static final ZonedDateTime CREATED_AT = OzgCloudVorgangHeaderTestFactory.CREATED_AT; + static final String STATUS = OzgCloudVorgangHeaderTestFactory.STATUS_STR; + static final String EVENT = "ABGESCHLOSSEN"; + + public static VorgangHeader create() { + return createBuilder().build(); + } + + public static VorgangHeader.VorgangHeaderBuilder createBuilder() { + return VorgangHeader.builder() + .createdAt(CREATED_AT) + .status(STATUS) + .event(EVENT); + } +} diff --git a/src/test/java/de/ozgcloud/processor/vorgang/VorgangTestFactory.java b/src/test/java/de/ozgcloud/processor/vorgang/VorgangTestFactory.java index ef2b5ca..5d9aca7 100644 --- a/src/test/java/de/ozgcloud/processor/vorgang/VorgangTestFactory.java +++ b/src/test/java/de/ozgcloud/processor/vorgang/VorgangTestFactory.java @@ -27,6 +27,7 @@ import static de.ozgcloud.apilib.vorgang.OzgCloudVorgangTestFactory.*; import de.ozgcloud.apilib.vorgang.OzgCloudEingangHeaderTestFactory; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangTestFactory; +import de.ozgcloud.processor.vorgang.Vorgang.VorgangHeader; public class VorgangTestFactory { @@ -44,6 +45,11 @@ public class VorgangTestFactory { .vorgangNummer(VORGANG_NUMMER) .formId(OzgCloudEingangHeaderTestFactory.FORM_ID) .formEngineName(OzgCloudEingangHeaderTestFactory.FORM_ENGINE_NAME) + .header(VorgangHeaderTestFactory.create()) .eingang(EingangTestFactory.create()); } + + public static Vorgang createWithHeader(VorgangHeader header) { + return createBuilder().header(header).build(); + } } -- GitLab