package com.airlock.iam.common.domain.model.event;

import com.airlock.iam.base.api.domain.model.user.UserId;
import com.airlock.iam.base.domain.model.event.AbstractDomainEvent;
import com.airlock.iam.base.domain.model.event.EventCreationData;
import com.airlock.iam.common.api.domain.model.event.UserEvent;
import lombok.NonNull;

public abstract class AbstractUserEvent extends AbstractDomainEvent implements UserEvent {
   @NonNull
   private final UserId userId;

   public AbstractUserEvent(EventCreationData eventCreationData, String displayName, @NonNull UserId userId) {
      super(eventCreationData, displayName);
      if (userId == null) {
         throw new NullPointerException("userId is marked non-null but is null");
      }

      this.userId = userId;
   }

   @Override
   public UserId userId() {
      return this.userId;
   }
}
