From 04c6f0439a4387157db32f911aebf0c771e3340d Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 28 May 2024 19:01:08 +0200
Subject: [PATCH] OZG-5759 fix loading issue of replyable messages

---
 nachrichten-manager-server/pom.xml                 |  2 +-
 .../nachrichten/postfach/FindVorgangIterator.java  |  2 +-
 .../postfach/PostfachNachrichtMapper.java          | 10 +++++++++-
 .../postfach/PostfachNachrichtMapperTest.java      | 14 ++++++++++++--
 4 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/nachrichten-manager-server/pom.xml b/nachrichten-manager-server/pom.xml
index 140a4ad..72e0c00 100644
--- a/nachrichten-manager-server/pom.xml
+++ b/nachrichten-manager-server/pom.xml
@@ -45,7 +45,7 @@
         <jaxb-maven-plugin.version>3.0.1</jaxb-maven-plugin.version>
         <ozg-info-manager-interface.version>0.1.0-SNAPSHOT</ozg-info-manager-interface.version>
         <bayernid-proxy-interface.version>0.1.0</bayernid-proxy-interface.version>
-        <vorgang-manager.version>2.6.0</vorgang-manager.version>
+        <vorgang-manager.version>2.8.0-SNAPSHOT</vorgang-manager.version>
     </properties>
 
     <dependencies>
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/FindVorgangIterator.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/FindVorgangIterator.java
index 6bd263b..5f9bdd3 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/FindVorgangIterator.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/FindVorgangIterator.java
@@ -62,7 +62,7 @@ public class FindVorgangIterator implements Iterator<GrpcVorgangHeader> {
 	}
 
 	boolean shouldRequestNext() {
-		return isNull(vorgangHeaderIterator) || !vorgangHeaderIterator.hasNext() || lastTotal == LIMIT;
+		return isNull(vorgangHeaderIterator) || (!vorgangHeaderIterator.hasNext() && lastTotal == LIMIT);
 	}
 
 	@Override
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 20bd8e0..780e100 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
@@ -24,6 +24,7 @@
 package de.ozgcloud.nachrichten.postfach;
 
 import java.time.ZonedDateTime;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -135,7 +136,14 @@ public abstract class PostfachNachrichtMapper {
 
 	@SuppressWarnings("unchecked")
 	private List<String> getAsList(Map<String, Object> mailMap, String fieldName) {
-		return (List<String>) mailMap.getOrDefault(fieldName, Collections.emptyList());
+		var valueObject = mailMap.get(fieldName);
+		if (valueObject instanceof Collection<?> values) {
+			return (List<String>) values;
+		}
+		if (valueObject instanceof String value) {
+			return List.of(value);
+		}
+		return Collections.emptyList();
 	}
 
 	PostfachAddress buildPostfachAddress(Map<String, Object> postfachAddressMap) {
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 4a4460d..ad4c954 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
@@ -143,9 +143,19 @@ class PostfachNachrichtMapperTest {
 			Assertions.assertThat(mail).usingRecursiveComparison().isEqualTo(PostfachNachrichtTestFactory.create());
 		}
 
+		@Test
+		void shouldMapSingleAttachment() {
+			var mailMap = PostfachNachrichtTestFactory.asMap();
+			mailMap.put(PostfachNachricht.FIELD_ATTACHMENTS, PostfachNachrichtTestFactory.ATTACHMENT_FILE_ID);
+
+			var mail = fromMapToPostfachMail(mailMap);
+
+			assertThat(mail.getAttachments()).containsExactly(PostfachNachrichtTestFactory.ATTACHMENT_FILE_ID);
+		}
+
 		@DisplayName("with missing postfachAddress")
 		@Nested
-		class TestWithMissinPostfachAddress {
+		class TestWithMissingPostfachAddress {
 
 			@Test
 			void shouldMapAsNull() {
@@ -182,7 +192,7 @@ class PostfachNachrichtMapperTest {
 		@Mock
 		private GrpcObject grpcObject;
 
-		private Map<String, Object> itemMap = PostfachNachrichtTestFactory.asMap();
+		private final Map<String, Object> itemMap = PostfachNachrichtTestFactory.asMap();
 
 		@BeforeEach
 		void init() {
-- 
GitLab