diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java index 2d30f00558cde6cf423a3760c2e05c17bd95331d..bff563e4056bc1df2a9de167b2ef22194a2b099b 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java @@ -86,8 +86,10 @@ public abstract class PostfachNachrichtMapper { .setDirection(GrpcDirection.valueOf(MapUtils.getString(mailMap, PostfachNachricht.FIELD_DIRECTION))) .setSubject(MapUtils.getString(mailMap, PostfachNachricht.FIELD_SUBJECT)) .setMailBody(MapUtils.getString(mailMap, PostfachNachricht.FIELD_MAIL_BODY)) - .setReplyOption(MapUtils.getString(mailMap, PostfachNachricht.FIELD_REPLY_OPTION)) - .addAllAttachment(getAttachments(mailMap)); + .setReplyOption(MapUtils.getString(mailMap, PostfachNachricht.FIELD_REPLY_OPTION)); + + Optional.ofNullable(MapUtils.getObject(mailMap, PostfachNachricht.FIELD_ATTACHMENTS)).map(this::getAttachments) + .ifPresent(postfachMailBuilder::addAllAttachment); Optional.ofNullable(getAsMap(mailMap, PostfachNachricht.POSTFACH_ADDRESS_FIELD)) .filter(MapUtils::isNotEmpty) @@ -97,8 +99,7 @@ public abstract class PostfachNachrichtMapper { return postfachMailBuilder.build(); } - private Iterable<String> getAttachments(Map<String, Object> map) { - var attachments = map.getOrDefault(PostfachNachricht.FIELD_ATTACHMENTS, Collections.emptyList()); + private Iterable<String> getAttachments(Object attachments) { if (attachments instanceof String attachment) { return Collections.singletonList(attachment); } diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapperTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapperTest.java index 646aacaab83277bdbb9102da5afec10383a0dc35..032ce3660a554d464da67365cb939edff408820f 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapperTest.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapperTest.java @@ -31,6 +31,7 @@ import static org.mockito.Mockito.*; import java.util.Map; import java.util.UUID; +import org.apache.commons.collections.MapUtils; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -125,6 +126,15 @@ class PostfachNachrichtMapperTest { assertDoesNotThrow(() -> fromMap(postfachNachrichtMap)); } + + @Test + void shouldProceedWithNullAsAttachments() { + var postfachNachrichtMap = PostfachNachrichtTestFactory.asMap(); + + postfachNachrichtMap.put(PostfachNachricht.FIELD_ATTACHMENTS, null); + + assertDoesNotThrow(() -> fromMap(postfachNachrichtMap)); + } } @DisplayName("with missing postfachAddress")