From 9a426af3bcc02f9ded51840b33a38d5bf5d6eee9 Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Fri, 14 Feb 2025 11:39:18 +0100 Subject: [PATCH] OZG-4094 add interface method to PostfachAddressIdentifier and move StringBasedIdentifier to interface module --- .../nachrichten/postfach/PostfachAddressIdentifier.java | 2 ++ .../nachrichten/postfach/StringBasedIdentifier.java | 7 +++++-- .../de/ozgcloud/nachrichten/info/InfoManagerService.java | 3 +-- .../nachrichten/postfach/PostfachNachrichtMapper.java | 3 +-- .../postfach/bayernid/BayernIdPostfachNachrichtMapper.java | 3 +-- .../nachrichten/postfach/osi/OsiPostfachMessageMapper.java | 5 ++--- .../ozgcloud/nachrichten/info/InfoManagerServiceTest.java | 7 +++++++ 7 files changed, 19 insertions(+), 11 deletions(-) rename {nachrichten-manager-server => nachrichten-manager-postfach-interface}/src/main/java/de/ozgcloud/nachrichten/postfach/StringBasedIdentifier.java (94%) 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 824cb12..2ead26b 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 @@ -28,4 +28,6 @@ public interface PostfachAddressIdentifier { default boolean isStringBasedIdentifier() { return false; } + + String getStringRepresentation(); } diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/StringBasedIdentifier.java b/nachrichten-manager-postfach-interface/src/main/java/de/ozgcloud/nachrichten/postfach/StringBasedIdentifier.java similarity index 94% rename from nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/StringBasedIdentifier.java rename to nachrichten-manager-postfach-interface/src/main/java/de/ozgcloud/nachrichten/postfach/StringBasedIdentifier.java index 5724f86..5940c9f 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/StringBasedIdentifier.java +++ b/nachrichten-manager-postfach-interface/src/main/java/de/ozgcloud/nachrichten/postfach/StringBasedIdentifier.java @@ -26,10 +26,8 @@ package de.ozgcloud.nachrichten.postfach; import jakarta.validation.constraints.NotBlank; import lombok.Builder; -import lombok.Getter; @Builder -@Getter public class StringBasedIdentifier implements PostfachAddressIdentifier { @NotBlank @@ -44,4 +42,9 @@ public class StringBasedIdentifier implements PostfachAddressIdentifier { public String toString() { return postfachId; } + + @Override + public String getStringRepresentation() { + return postfachId; + } } 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 ed617fa..3519085 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 @@ -34,7 +34,6 @@ 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; @@ -74,7 +73,7 @@ public class InfoManagerService { var postfachIdentifier = address.getIdentifier(); if (postfachIdentifier.isStringBasedIdentifier()) { - return ((StringBasedIdentifier) postfachIdentifier).getPostfachId(); + return postfachIdentifier.getStringRepresentation(); } 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/PostfachNachrichtMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java index c521e7d..5a3a0fb 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 @@ -239,7 +239,6 @@ public abstract class PostfachNachrichtMapper { } private Map<String, Object> buildPostfachAddressIdentifierMap(PostfachAddress postfachAddress) { - var identifier = (StringBasedIdentifier) postfachAddress.getIdentifier(); - return Map.of(PostfachAddress.FIELD_POSTFACH_ID, identifier.getPostfachId()); + return Map.of(PostfachAddress.FIELD_POSTFACH_ID, postfachAddress.getIdentifier().getStringRepresentation()); } } \ No newline at end of file diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdPostfachNachrichtMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdPostfachNachrichtMapper.java index 9c33343..8787cb6 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdPostfachNachrichtMapper.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/bayernid/BayernIdPostfachNachrichtMapper.java @@ -38,7 +38,6 @@ import org.mapstruct.ReportingPolicy; import de.ozgcloud.common.errorhandling.TechnicalException; import de.ozgcloud.nachrichten.postfach.PostfachAddress; import de.ozgcloud.nachrichten.postfach.PostfachNachricht; -import de.ozgcloud.nachrichten.postfach.StringBasedIdentifier; import de.ozgcloud.nachrichten.postfach.bayernid.proxy.GrpcAbsender; import de.ozgcloud.nachrichten.postfach.bayernid.proxy.GrpcAttachmentMetadata; import de.ozgcloud.nachrichten.postfach.bayernid.proxy.GrpcBayernIdMessageMetadata; @@ -85,7 +84,7 @@ interface BayernIdPostfachNachrichtMapper { BayernIdResponse fromSendBayernIdMessageResponse(GrpcSendBayernIdMessageResponse response); default String toPostkorbId(PostfachAddress postfachAddress) { - return ((StringBasedIdentifier) postfachAddress.getIdentifier()).getPostfachId(); + return (postfachAddress.getIdentifier()).getStringRepresentation(); } @Condition diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/osi/OsiPostfachMessageMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/osi/OsiPostfachMessageMapper.java index 0a2838e..75ec7ea 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/osi/OsiPostfachMessageMapper.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/osi/OsiPostfachMessageMapper.java @@ -35,6 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired; import de.ozgcloud.nachrichten.postfach.FileId; import de.ozgcloud.nachrichten.postfach.PostfachAddress; +import de.ozgcloud.nachrichten.postfach.PostfachAddressIdentifier; import de.ozgcloud.nachrichten.postfach.PostfachNachricht; import de.ozgcloud.nachrichten.postfach.StringBasedIdentifier; @@ -78,9 +79,7 @@ public abstract class OsiPostfachMessageMapper { String toPostfachId(PostfachNachricht nachricht) { return Optional.ofNullable(nachricht.getPostfachAddress()) .map(PostfachAddress::getIdentifier) - .filter(StringBasedIdentifier.class::isInstance) - .map(StringBasedIdentifier.class::cast) - .map(StringBasedIdentifier::getPostfachId) + .map(PostfachAddressIdentifier::getStringRepresentation) .orElse(StringUtils.EMPTY); } 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 55f8368..ccf343a 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 @@ -28,6 +28,7 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; +import org.apache.commons.lang3.StringUtils; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -141,7 +142,13 @@ class InfoManagerServiceTest { @Test void shouldThrowExceptionForUnkownIdentifer() { var identifier = new PostfachAddressIdentifier() { + + @Override + public String getStringRepresentation() { + return StringUtils.EMPTY; + } }; + var address = PostfachAddressTestFactory.createBuilder().identifier(identifier).build(); assertThatThrownBy(() -> service.getPostfachId(address)).isInstanceOf(IllegalStateException.class); -- GitLab