From ac0062d3bbad72384d71f84609c7ae60fc34fde3 Mon Sep 17 00:00:00 2001 From: Tobias Bruns <kontakt@tobias-bruns.de> Date: Thu, 20 Mar 2025 10:16:06 +0100 Subject: [PATCH] OZG-7144 timestamp null safe cause of NPE in Test --- .../eingang/intelliform/DepositDataMapper.java | 10 +++++++++- .../eingang/intelliform/DepositDataMapperTest.java | 12 +++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java b/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java index 34e09920..93b4e696 100644 --- a/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java +++ b/src/main/java/de/ozgcloud/eingang/intelliform/DepositDataMapper.java @@ -26,7 +26,9 @@ package de.ozgcloud.eingang.intelliform; import static java.util.stream.Collectors.*; import java.io.IOException; +import java.time.ZonedDateTime; import java.util.Collection; +import java.util.GregorianCalendar; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -37,6 +39,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; +import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -190,7 +193,8 @@ class DepositDataMapper { } IntelliFormMetaData buildMetaData(DepositData depositData) { - var builder = IntelliFormMetaData.builder().origin(depositData.getTimestamp().toGregorianCalendar().toZonedDateTime()); + var builder = IntelliFormMetaData.builder(); + getOrigin(depositData).ifPresent(builder::origin); depositData.getCustomParameters() .forEach(entry -> builder.customParameter(IntelliFormMetaData.CUSTOM_PARAM_PREFIX + entry.key.toUpperCase(), entry.value)); @@ -198,4 +202,8 @@ class DepositDataMapper { return builder.build(); } + Optional<ZonedDateTime> getOrigin(DepositData depositData) { + return Optional.ofNullable(depositData.getTimestamp()).map(XMLGregorianCalendar::toGregorianCalendar).map(GregorianCalendar::toZonedDateTime); + } + } diff --git a/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java b/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java index d79547b2..608c69ca 100644 --- a/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java +++ b/src/test/java/de/ozgcloud/eingang/intelliform/DepositDataMapperTest.java @@ -453,7 +453,7 @@ class DepositDataMapperTest { } @Nested - class TestCreateMetaData { + class TestBuildMetaData { @Test void shouldHaveOrigin() { @@ -475,6 +475,16 @@ class DepositDataMapperTest { assertThat(metaData.getEntry("CUSTOMPARAMETER_PARAM_KEY")).isEqualTo(DepositDataTestFactory.CUTOMPARA_VALUE); } + + @Test + void shouldHandleNullTimestamp() { + var depositData = DepositDataTestFactory.create(); + depositData.setTimestamp(null); + + var metaData = mapper.buildMetaData(depositData); + + assertThat(metaData.getOrigin()).isNull(); + } } } -- GitLab