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

import com.airlock.iam.admin.application.configuration.event.AdminappGatewaySessionTerminatorEventSubscriberConfig;
import com.airlock.iam.base.api.domain.model.event.DomainEventSubscriber;
import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.common.api.domain.model.event.UserEvent;
import com.airlock.iam.common.domain.service.gateway.GatewaySessionTerminatorEventSubscriber;
import jakarta.inject.Inject;
import jakarta.inject.Provider;

@LogicForConfig(AdminappGatewaySessionTerminatorEventSubscriberConfig.class)
public final class AdminappGatewaySessionTerminatorEventSubscriber implements DomainEventSubscriber<UserEvent> {
   private final Provider<GatewaySessionTerminatorEventSubscriber> delegate;

   @Inject
   public AdminappGatewaySessionTerminatorEventSubscriber(Provider<GatewaySessionTerminatorEventSubscriber> delegate) {
      this.delegate = delegate;
   }

   public void handleEvent(UserEvent event) {
      ((GatewaySessionTerminatorEventSubscriber)this.delegate.get()).handleEvent(event);
   }

   public Class<UserEvent> forType() {
      return UserEvent.class;
   }
}
