diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/MantelantragFormBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/MantelantragFormBasedMapper.java index e0b943c707fe2346ccc383406a2ac8db6425be13..d6e7196a5e2e471cebf54f5891fd5de2f91405ae 100644 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/MantelantragFormBasedMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/MantelantragFormBasedMapper.java @@ -13,9 +13,11 @@ import de.ozgcloud.eingang.common.errorhandling.TechnicalException; import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; @Component @RequiredArgsConstructor +@Log4j2 public class MantelantragFormBasedMapper implements FormBasedMapper { private final Environment environment; @@ -42,6 +44,15 @@ public class MantelantragFormBasedMapper implements FormBasedMapper { @Override public FormData adaptFormData(FormData formData) { + try { + return adaptFormDataWithPossibleException(formData); + } catch (TechnicalException exception) { + LOG.warn("Mantelantrag is invalid: %s".formatted(exception.getMessage())); + return formData; + } + } + + FormData adaptFormDataWithPossibleException(FormData formData) { var fieldMap = formData.getFormData(); var slotIndex = findSlotIndex(fieldMap); UnaryOperator<String> getValueOrEmpty = field -> getFieldByKeyOrEmpty( @@ -51,7 +62,7 @@ public class MantelantragFormBasedMapper implements FormBasedMapper { var organisationseinheitId = getValueOrEmpty.apply(ORGANISATIONSEINHEIT_ID_FIELD); if (organisationseinheitId.isBlank()) { - throw new TechnicalException("OrganistaionseinheitId not found in Mantelantrag!"); + throw new TechnicalException("OrganistaionseinheitId not found!"); } return formData.toBuilder() diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/MantelantragFormBasedMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/MantelantragFormBasedMapperTest.java index 744115a5843d2b8e2b4bcb3b66c959b5fad093be..bdc78480b4ac075457653b3acb0d7e9cd15d3ebe 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/MantelantragFormBasedMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/MantelantragFormBasedMapperTest.java @@ -76,6 +76,37 @@ class MantelantragFormBasedMapperTest { @Nested class TestAdaptFormData { + @Mock + private FormData formData; + + @Mock + private FormData formData2; + + @DisplayName("should return adapted value") + @Test + void shouldReturnAdaptedValue() { + doReturn(formData2).when(mapper).adaptFormDataWithPossibleException(formData); + + var resultFormData = mapper.adaptFormData(formData); + + assertThat(resultFormData).isEqualTo(formData2); + } + + @DisplayName("should return original value with exception") + @Test + void shouldReturnOriginalValueWithException() { + doThrow(new TechnicalException("some error")).when(mapper).adaptFormDataWithPossibleException(formData); + + var resultFormData = mapper.adaptFormData(formData); + + assertThat(resultFormData).isEqualTo(formData); + } + } + + @DisplayName("adapt form data with possible exception") + @Nested + class TestAdaptFormDataWithPossibleException { + private FormData formData; private Map<String, Object> fieldMap;