package com.airlock.iam.common.infrastructure.event;

import com.airlock.iam.base.api.domain.model.event.DomainEvent;
import com.airlock.iam.base.api.domain.model.event.DomainEventSubscriber;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;

public final class ConfiguredEventSubscribers {
   private final Set<DomainEventSubscriber<? extends DomainEvent>> subscribers;

   private ConfiguredEventSubscribers(Collection<DomainEventSubscriber<? extends DomainEvent>> subscribers) {
      this.subscribers = Set.copyOf(subscribers);
   }

   public static ConfiguredEventSubscribers configuredEventSubscribers(Collection<DomainEventSubscriber<? extends DomainEvent>> subscribers) {
      return new ConfiguredEventSubscribers(subscribers);
   }

   public static ConfiguredEventSubscribers empty() {
      return configuredEventSubscribers(Collections.emptySet());
   }

   @SuppressFBWarnings(justification = "generated code")
   public Set<DomainEventSubscriber<? extends DomainEvent>> subscribers() {
      return this.subscribers;
   }
}
