From a041f1050ed6d16dab1ccbf4e0fd68e26b1a25d3 Mon Sep 17 00:00:00 2001
From: Jan Zickermann <jan.zickermann@dataport.de>
Date: Wed, 11 Dec 2024 09:33:43 +0100
Subject: [PATCH 1/3] #5 send: Adjust request mapping

---
 .../postfach/osiv2/transfer/RequestMapper.java       |  6 ++----
 .../postfach/osiv2/transfer/RequestMapperTest.java   | 12 +++++-------
 2 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java
index 91a9d58..c9a42ae 100644
--- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java
+++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java
@@ -19,16 +19,14 @@ import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1ReplyBehavior;
 @Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR)
 public interface RequestMapper {
 
-	String ORIGIN_SENDER = "OZG-Cloud";
-
 	@Mapping(target = "sequencenumber", source = "vorgangId")
 	@Mapping(target = "body", source = "mailBody")
 	@Mapping(target = "displayName", source = "createdBy")
-	@Mapping(target = "originSender", constant = ORIGIN_SENDER)
+	@Mapping(target = "originSender", ignore = true)
 	@Mapping(target = "replyAction", source = "replyOption")
 	@Mapping(target = "eidasLevel", constant = "LOW")
 	@Mapping(target = "isObligatory", expression = "java( false )")
-	@Mapping(target = "isHtml", expression = "java( true )")
+	@Mapping(target = "isHtml", expression = "java( false )")
 	@Mapping(target = "files", expression = "java( mapMessageExchangeFiles() )")
 	@Mapping(target = "references", expression = "java( mapReferences() )")
 	OutSendMessageRequestV2 mapOutSendMessageRequestV2(PostfachNachricht nachricht);
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapperTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapperTest.java
index 957d440..0e67c3c 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapperTest.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapperTest.java
@@ -2,7 +2,6 @@ package de.ozgcloud.nachrichten.postfach.osiv2.transfer;
 
 import static de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachAddressTestFactory.*;
 import static de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachNachrichtTestFactory.*;
-import static de.ozgcloud.nachrichten.postfach.osiv2.transfer.RequestMapper.*;
 import static org.assertj.core.api.Assertions.*;
 
 import java.util.stream.Stream;
@@ -79,7 +78,6 @@ class RequestMapperTest {
 			assertThat(result.getSequencenumber()).isEqualTo(VORGANG_ID);
 		}
 
-
 		@DisplayName("should map subject")
 		@Test
 		void shouldMapSubject() {
@@ -104,12 +102,12 @@ class RequestMapperTest {
 			assertThat(result.getDisplayName()).isEqualTo(USER_ID);
 		}
 
-		@DisplayName("should map origin sender")
+		@DisplayName("should map origin sender to null")
 		@Test
-		void shouldMapOriginSender() {
+		void shouldMapOriginSenderToNull() {
 			var result = doMapping();
 
-			assertThat(result.getOriginSender()).isEqualTo(ORIGIN_SENDER);
+			assertThat(result.getOriginSender()).isNull();
 		}
 
 		@DisplayName("should map forbidden reply action")
@@ -165,7 +163,7 @@ class RequestMapperTest {
 		void shouldSetIsHtml() {
 			var result = doMapping();
 
-			assertThat(result.getIsHtml()).isTrue();
+			assertThat(result.getIsHtml()).isFalse();
 		}
 
 		@DisplayName("should map files")
@@ -181,7 +179,7 @@ class RequestMapperTest {
 		void shouldMapReferences() {
 			var result = doMapping();
 
-			assertThat(result.getFiles()).isEmpty();
+			assertThat(result.getReferences()).isEmpty();
 		}
 
 		private OutSendMessageRequestV2 doMapping() {
-- 
GitLab


From 0315fb99075a08701ad1fde2c1dbd25fbbe20e50 Mon Sep 17 00:00:00 2001
From: Jan Zickermann <jan.zickermann@dataport.de>
Date: Wed, 11 Dec 2024 09:47:24 +0100
Subject: [PATCH 2/3] #5 send: Throw OsiPostfachException

---
 .../postfach/osiv2/OsiPostfachException.java          |  9 +++++++++
 .../postfach/osiv2/OsiPostfachRemoteService.java      | 11 +++++++----
 .../postfach/osiv2/OsiPostfachRemoteServiceTest.java  | 11 ++++++++++-
 3 files changed, 26 insertions(+), 5 deletions(-)
 create mode 100644 src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachException.java

diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachException.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachException.java
new file mode 100644
index 0000000..f518762
--- /dev/null
+++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachException.java
@@ -0,0 +1,9 @@
+package de.ozgcloud.nachrichten.postfach.osiv2;
+
+import de.ozgcloud.common.errorhandling.TechnicalException;
+
+public class OsiPostfachException extends TechnicalException {
+	public OsiPostfachException(String msg, Throwable cause) {
+		super(msg, cause);
+	}
+}
diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java
index 88a7720..b3625b4 100644
--- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java
+++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java
@@ -16,12 +16,15 @@ import lombok.extern.log4j.Log4j2;
 public record OsiPostfachRemoteService(
 		PostfachApiFacadeService postfachApiFacadeService
 ) implements PostfachRemoteService {
-	public static final String POSTFACH_TYPE_OSIV2 = "OSIV2";
+	public static final String POSTFACH_TYPE_OSI = "OSI";
 
 	@Override
 	public void sendMessage(PostfachNachricht nachricht) {
-		postfachApiFacadeService.sendMessage(nachricht);
-		// TODO handle exceptions?
+		try {
+			postfachApiFacadeService.sendMessage(nachricht);
+		} catch (RuntimeException e) {
+			throw new OsiPostfachException("Failed to send message", e);
+		}
 	}
 
 	@Override
@@ -37,7 +40,7 @@ public record OsiPostfachRemoteService(
 
 	@Override
 	public String getPostfachType() {
-		return POSTFACH_TYPE_OSIV2;
+		return POSTFACH_TYPE_OSI;
 	}
 
 	@Override
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java
index b82448d..2759035 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java
@@ -43,6 +43,15 @@ class OsiPostfachRemoteServiceTest {
 
 			verify(postfachApiFacadeService).sendMessage(nachricht1);
 		}
+
+		@DisplayName("should throw osi postfach exception on runtime exception")
+		@Test
+		void shouldThrowOsiPostfachExceptionOnRuntimeException() {
+			doThrow(new RuntimeException()).when(postfachApiFacadeService).sendMessage(nachricht1);
+
+			assertThatThrownBy(() -> osiPostfachRemoteService.sendMessage(nachricht1))
+					.isInstanceOf(OsiPostfachException.class);
+		}
 	}
 
 	@DisplayName("get all messages")
@@ -74,7 +83,7 @@ class OsiPostfachRemoteServiceTest {
 		void shouldReturn() {
 			var result = osiPostfachRemoteService.getPostfachType();
 
-			assertThat(result).isEqualTo(OsiPostfachRemoteService.POSTFACH_TYPE_OSIV2);
+			assertThat(result).isEqualTo(OsiPostfachRemoteService.POSTFACH_TYPE_OSI);
 		}
 	}
 
-- 
GitLab


From 12f383b976e3a1b34b2dd1ab14a989df5758f8dc Mon Sep 17 00:00:00 2001
From: Jan Zickermann <jan.zickermann@dataport.de>
Date: Wed, 11 Dec 2024 12:55:00 +0100
Subject: [PATCH 3/3] #5 send: Conditionally enable FacadeService

---
 .../postfach/osiv2/transfer/PostfachApiFacadeService.java       | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java
index 0e9a897..b48e8cb 100644
--- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java
+++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java
@@ -2,6 +2,7 @@ package de.ozgcloud.nachrichten.postfach.osiv2.transfer;
 
 import java.util.stream.Stream;
 
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
@@ -10,6 +11,7 @@ import lombok.extern.log4j.Log4j2;
 
 @Log4j2
 @Service
+@ConditionalOnProperty("ozgcloud.osiv2-postfach.enabled")
 public record PostfachApiFacadeService(
 		MessageExchangeApi messageExchangeApi,
 		RequestMapper requestMapper,
-- 
GitLab