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