From 8e83bf874c4fad6a209dde2da0fc0e97c2e38cc8 Mon Sep 17 00:00:00 2001 From: Aleksandar Stanchev Date: Fri, 29 Mar 2024 16:51:47 +0200 Subject: [PATCH] PolicyAnnouncementTopicExtractor pub/sub namespaced topics support Signed-off-by: Aleksandar Stanchev --- .../PolicyAnnouncementTopicExtractor.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/internal/utils/pubsub-policies/src/main/java/org/eclipse/ditto/internal/utils/pubsubpolicies/PolicyAnnouncementTopicExtractor.java b/internal/utils/pubsub-policies/src/main/java/org/eclipse/ditto/internal/utils/pubsubpolicies/PolicyAnnouncementTopicExtractor.java index ca6f7eef04..b33e441b25 100644 --- a/internal/utils/pubsub-policies/src/main/java/org/eclipse/ditto/internal/utils/pubsubpolicies/PolicyAnnouncementTopicExtractor.java +++ b/internal/utils/pubsub-policies/src/main/java/org/eclipse/ditto/internal/utils/pubsubpolicies/PolicyAnnouncementTopicExtractor.java @@ -14,6 +14,9 @@ import java.util.Collection; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.eclipse.ditto.internal.utils.pubsub.extractors.PubSubTopicExtractor; import org.eclipse.ditto.policies.model.SubjectId; @@ -28,11 +31,19 @@ final class PolicyAnnouncementTopicExtractor implements PubSubTopicExtractor getTopics(final PolicyAnnouncement message) { if (message instanceof SubjectDeletionAnnouncement announcement) { - return announcement.getSubjectIds() + final Set topicsWithoutNamespace = announcement.getSubjectIds() .stream() .map(SubjectId::toString) - .toList(); + .collect(Collectors.toSet()); + return Stream.concat(combineNamespaceWithAuthSubjects(announcement.getEntityId().getNamespace(), topicsWithoutNamespace), + topicsWithoutNamespace.stream()) + .collect(Collectors.toList()); } return List.of(); } + + private static Stream combineNamespaceWithAuthSubjects(final String namespace, + final Set authorizationSubjectIds) { + return authorizationSubjectIds.stream().map(subject -> namespace + "#" + subject); + } }