package com.airlock.iam.flow.infrastructure.serialization;

import com.airlock.iam.base.api.domain.model.exception.FailureException;
import com.airlock.iam.base.misc.util.Base64Util;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

public final class SerializedStateMachineContext {
   private byte[] data;

   public String getEncoded() {
      if (this.data == null) {
         throw new FailureException("no data set");
      } else {
         return Base64Util.encodeToString(this.data);
      }
   }

   public static SerializedStateMachineContext fromEncoded(String encoded) {
      SerializedStateMachineContext context = new SerializedStateMachineContext();
      context.setData(Base64Util.decode(encoded));
      return context;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setData(byte[] data) {
      this.data = data;
   }

   @SuppressFBWarnings(justification = "generated code")
   public byte[] getData() {
      return this.data;
   }
}
