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] #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