From 3a35c288ffc551a56173ae747c4f4fbb4fa29efa Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Mon, 27 May 2024 12:14:43 +0200 Subject: [PATCH] OZG-5682 throw exception on wrong postfach address type --- .../postfach/PostfachAddressIdentifier.java | 3 +++ .../nachrichten/info/InfoManagerService.java | 16 +++++++++----- .../postfach/StringBasedIdentifier.java | 5 +++++ .../info/InfoManagerServiceTest.java | 22 +++++++++++++++++++ 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/nachrichten-manager-postfach-interface/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachAddressIdentifier.java b/nachrichten-manager-postfach-interface/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachAddressIdentifier.java index 5d60cfb..5afe5cf 100644 --- a/nachrichten-manager-postfach-interface/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachAddressIdentifier.java +++ b/nachrichten-manager-postfach-interface/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachAddressIdentifier.java @@ -2,4 +2,7 @@ package de.ozgcloud.nachrichten.postfach; public interface PostfachAddressIdentifier { + default boolean isStringBasedIdentifier() { + return false; + } } diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/info/InfoManagerService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/info/InfoManagerService.java index 3eb6f39..0d6397b 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/info/InfoManagerService.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/info/InfoManagerService.java @@ -7,10 +7,12 @@ import org.springframework.stereotype.Service; import de.ozgcloud.nachrichten.NachrichtenManagerProperties; import de.ozgcloud.nachrichten.antragraum.AntragraumProperties; +import de.ozgcloud.nachrichten.postfach.PostfachAddress; import de.ozgcloud.nachrichten.postfach.PostfachException; import de.ozgcloud.nachrichten.postfach.PostfachMessageCode; import de.ozgcloud.nachrichten.postfach.PostfachNachricht; import de.ozgcloud.nachrichten.postfach.StringBasedIdentifier; +import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; @@ -40,14 +42,18 @@ public class InfoManagerService { return InfoManagerRequest.builder() .nachrichtId(postfachNachricht.getId()) .vorgangId(postfachNachricht.getVorgangId()) - .postfachId(getPostfachId(postfachNachricht)) + .postfachId(getPostfachId(postfachNachricht.getPostfachAddress())) .nachrichtenManagerUrl(nachrichtenManagerProperties.getAddress()) .build(); } - String getPostfachId(PostfachNachricht nachricht) { - // FIXME - wie gehen wir mit anderen Typen um? - var identifier = (StringBasedIdentifier) nachricht.getPostfachAddress().getIdentifier(); - return identifier.getPostfachId(); + String getPostfachId(@NonNull PostfachAddress address) { + var postfachIdentifier = address.getIdentifier(); + + if (postfachIdentifier.isStringBasedIdentifier()) { + return ((StringBasedIdentifier) postfachIdentifier).getPostfachId(); + } else { + throw new IllegalStateException("Illegal Type of Postfach Identifier: " + postfachIdentifier.getClass().getName()); + } } } diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/StringBasedIdentifier.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/StringBasedIdentifier.java index da37d0e..841dfd1 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/StringBasedIdentifier.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/StringBasedIdentifier.java @@ -8,4 +8,9 @@ import lombok.Getter; public class StringBasedIdentifier implements PostfachAddressIdentifier { private String postfachId; + + @Override + public boolean isStringBasedIdentifier() { + return true; + } } diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/info/InfoManagerServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/info/InfoManagerServiceTest.java index d7d149a..ca6c910 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/info/InfoManagerServiceTest.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/info/InfoManagerServiceTest.java @@ -12,6 +12,8 @@ import org.mockito.Mock; import org.mockito.Spy; import de.ozgcloud.nachrichten.NachrichtenManagerProperties; +import de.ozgcloud.nachrichten.postfach.PostfachAddressIdentifier; +import de.ozgcloud.nachrichten.postfach.PostfachAddressTestFactory; import de.ozgcloud.nachrichten.postfach.PostfachException; import de.ozgcloud.nachrichten.postfach.PostfachMessageCode; import de.ozgcloud.nachrichten.postfach.PostfachNachricht; @@ -99,6 +101,26 @@ class InfoManagerServiceTest { return service.builInfomanagerRequest(postfachNachricht); } } + } + + @Nested + class TestGetPostfachId { + @Test + void shouldReturnId() { + var address = PostfachAddressTestFactory.create(); + + var id = service.getPostfachId(address); + assertThat(id).isEqualTo(PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE); + } + + @Test + void shouldThrowExceptionForUnkownIdentifer() { + var identifier = new PostfachAddressIdentifier() { + }; + var address = PostfachAddressTestFactory.createBuilder().identifier(identifier).build(); + + assertThatThrownBy(() -> service.getPostfachId(address)).isInstanceOf(IllegalStateException.class); + } } } -- GitLab