diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/common/DateConverter.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/common/DateConverter.java index d475428b3c32af5c4eb4c906de6ed74944072015..20e9f11df94b26f6a257711ae78a6ca1019f3568 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/common/DateConverter.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/common/DateConverter.java @@ -1,5 +1,7 @@ package de.ozgcloud.alfa.common; +import static java.util.Objects.*; + import java.time.LocalDate; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; @@ -26,17 +28,20 @@ public class DateConverter { try { return Optional.of(createDatatypeFactory().newXMLGregorianCalendar(LocalDate.parse(dateStr, DATE_TIME_FORMATTER).toString())); } catch (Exception e) { - LOG.error("Date '{}' cannot be converted to ISO format.", dateStr, e); + LOG.warn("Date '{}' cannot be converted to ISO format.", dateStr, e); return Optional.empty(); } } public XMLGregorianCalendar toXmlGregorianCalendar(ZonedDateTime date) { try { - return createDatatypeFactory().newXMLGregorianCalendar(GregorianCalendar.from(date)); + if (nonNull(date)) { + return createDatatypeFactory().newXMLGregorianCalendar(GregorianCalendar.from(date)); + } } catch (Exception e) { - throw new TechnicalException("Date '%s' cannot be converted to ISO format.".formatted(date), e); + LOG.warn("Date '{}' cannot be converted to ISO format.", date, e); } + return null; } DatatypeFactory createDatatypeFactory() { diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java index e2aba0f9fde6b7f2ae5d0c515ba95d70e3cf6d78..89cf757115450c9f89f4b4352d611627f0aeb8a8 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java @@ -1,5 +1,7 @@ package de.ozgcloud.alfa.vorgang; +import static java.util.Objects.*; + import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Collection; @@ -77,9 +79,11 @@ class FormDataMapper { AntragsdatenItemType buildSingleValueField(String name, Object value) { var singleValue = new AntragsdatenSingleValueFieldType(); singleValue.setName(name); - var datatype = datatypeMapper.from(value); - singleValue.setType(datatype); - singleValue.setValue(formatValue(datatype, value)); + if (nonNull(value)) { + var datatype = datatypeMapper.from(value); + singleValue.setType(datatype); + singleValue.setValue(formatValue(datatype, value)); + } return singleValue; } diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataMapperTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataMapperTest.java index 9cfb13a037e85443dc219724cd8821331231f66a..6ffbdbf6b0e5699274a8603c442d891a112d39db 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataMapperTest.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataMapperTest.java @@ -242,6 +242,14 @@ class FormDataMapperTest { assertThat(antragsdatenSingleValueFieldType.getValue()).isEqualTo(FORMDATA_VALUE); } + @Test + void shouldNotSetIfValueIsNull() { + formDataMapper.buildSingleValueField(NAME, null); + + verify(formDataMapper, never()).formatValue(DatatypeType.STRING, null); + } + + @Test void shouldCallFormatValue() { when(datatypeMapper.from(any())).thenReturn(DatatypeType.STRING); @@ -270,5 +278,12 @@ class FormDataMapperTest { verify(dateConverter).toXmlGregorianCalendar(dateTime); } + + @Test + void shouldFormatNull() { + var value = formDataMapper.formatValue(DatatypeType.STRING, null); + + assertThat(value).isEqualTo("null"); + } } } \ No newline at end of file