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

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import lombok.NonNull;
import org.apache.commons.lang3.Validate;

public final class Saml2Signature {
   private final String signature;

   private Saml2Signature(@NonNull String signature) {
      if (signature == null) {
         throw new NullPointerException("signature is marked non-null but is null");
      }

      Validate.notBlank(signature);
      this.signature = signature;
   }

   public static Saml2Signature signature(String signature) {
      return new Saml2Signature(signature);
   }

   public String value() {
      return this.signature;
   }

   @Override
   public String toString() {
      return this.signature;
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public boolean equals(Object o) {
      if (o == this) {
         return true;
      } else if (!(o instanceof Saml2Signature other)) {
         return false;
      } else {
         Object this$signature = this.signature;
         Object other$signature = other.signature;
         return this$signature == null ? other$signature == null : this$signature.equals(other$signature);
      }
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public int hashCode() {
      int PRIME = 59;
      int result = 1;
      Object $signature = this.signature;
      return result * 59 + ($signature == null ? 43 : $signature.hashCode());
   }
}
