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); + } }