package com.airlock.iam.flow.domain.model;

import com.airlock.iam.base.api.domain.model.mapification.MapifiedValues;
import com.airlock.iam.base.api.domain.model.validation.ValidationResult;
import com.airlock.iam.base.domain.model.mapification.ValidationResultMapifier;
import com.airlock.iam.flow.api.domain.model.step.StepResultData;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import lombok.NonNull;

public record ValidationStepResultData(@NonNull ValidationResult result) implements StepResultData {
   @SuppressFBWarnings(justification = "generated code")
   public ValidationStepResultData {
      if (result == null) {
         throw new NullPointerException("result is marked non-null but is null");
      }
   }

   @Override
   public MapifiedValues mapify() {
      return ValidationResultMapifier.mapifyValidationResult(this.result);
   }

   public static ValidationStepResultData demapify(MapifiedValues values) {
      return new ValidationStepResultData(ValidationResultMapifier.demapifyValidationResult(values));
   }
}
