package com.airlock.iam.saml2.domain.model.idp;

import com.airlock.iam.flow.api.domain.model.step.FlowCondition;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Optional;

public final class Saml2ConditionalAuthenticationContextClassRef {
   private final FlowCondition flowCondition;
   private final Saml2AuthenticationContextClassRef authenticationContext;

   public static Saml2ConditionalAuthenticationContextClassRef conditionalAuthenticationContext(
      FlowCondition flowCondition, Saml2AuthenticationContextClassRef authenticationContext
   ) {
      return new Saml2ConditionalAuthenticationContextClassRef(flowCondition, authenticationContext);
   }

   public Optional<Saml2AuthenticationContextClassRef> provide() {
      return this.flowCondition.isFulfilled() ? Optional.of(this.authenticationContext) : Optional.empty();
   }

   @SuppressFBWarnings(justification = "generated code")
   private Saml2ConditionalAuthenticationContextClassRef(FlowCondition flowCondition, Saml2AuthenticationContextClassRef authenticationContext) {
      this.flowCondition = flowCondition;
      this.authenticationContext = authenticationContext;
   }
}
