diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java index a85826691734ae04456d98860d7f77c6a620fdd6..0d576aabd573e0bce86a53334a0914068b0a842a 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java @@ -24,6 +24,9 @@ package de.ozgcloud.nachrichten.antragraum; +import java.time.ZonedDateTime; + +import org.apache.commons.lang3.StringUtils; import org.mapstruct.CollectionMappingStrategy; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -71,8 +74,16 @@ interface AntragraumNachrichtMapper { @Mapping(target = "sentSuccessful", constant = "true") @Mapping(target = "subject", constant = "Antwort") // TODO klären @Mapping(target = "vorgangId", ignore = true) + @Mapping(target = "sentAt", expression = "java(mapZonedDateTime(answer.getSentAt()))") PostfachNachricht fromRueckfrageAnswer(GrpcRueckfrageAnswer answer); + default ZonedDateTime mapZonedDateTime(String sentAt) { + if (StringUtils.isBlank(sentAt)) { + return null; + } + return ZonedDateTime.parse(sentAt); + } + @Mapping(target = "mergeFrom", ignore = true) @Mapping(target = "clearField", ignore = true) @Mapping(target = "clearOneof", ignore = true) diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java index ddd404c7700604182b4c3be686bcd2ea44cdec8d..528286a86d01a664d7d17aa19e87503bbf680c95 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java @@ -26,6 +26,7 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; +import org.apache.commons.lang3.StringUtils; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mapstruct.factory.Mappers; @@ -148,6 +149,15 @@ class AntragraumNachrichtMapperTest { assertThat(result.getSentAt()).isCloseTo(PostfachNachrichtTestFactory.SENT_AT, within(2, ChronoUnit.SECONDS)); } + @Test + void shouldHandleEmptySentAt() { + var rueckfrage = GrpcRueckfrageAnswerTestFactory.createBuilder().setSentAt(StringUtils.EMPTY).build(); + + var result = mapper.fromRueckfrageAnswer(rueckfrage); + + assertThat(result.getSentAt()).isNull(); + } + private PostfachNachricht map() { return mapper.fromRueckfrageAnswer(GrpcRueckfrageAnswerTestFactory.create()); }