package com.l7tech.gateway.api;

import com.l7tech.gateway.api.impl.AttributeExtensibleType;
import com.l7tech.gateway.api.impl.ElementExtendableManagedObject;
import com.l7tech.gateway.api.impl.ElementExtensionSupport;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlElementWrapper;
import jakarta.xml.bind.annotation.XmlEnum;
import jakarta.xml.bind.annotation.XmlEnumValue;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.XmlValue;
import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;

@XmlRootElement(name = "PolicyValidationResult")
@XmlType(name = "PolicyValidationResultType", propOrder = {"statusValue", "policyValidationMessages", "extension", "extensions"})
public class PolicyValidationResult extends ElementExtendableManagedObject {
   private PolicyValidationResult.AttributeExtensibleValidationStatus f;
   private List<PolicyValidationResult.PolicyValidationMessage> g;

   public PolicyValidationResult.ValidationStatus getStatus() {
      return AttributeExtensibleType.get(this.f);
   }

   public void setStatus(PolicyValidationResult.ValidationStatus var1) {
      this.f = AttributeExtensibleType.setNonNull(this.f == null ? new PolicyValidationResult.AttributeExtensibleValidationStatus() : this.f, var1);
   }

   @XmlElementWrapper(name = "ValidationMessages")
   @XmlElement(name = "ValidationMessage", required = true)
   public List<PolicyValidationResult.PolicyValidationMessage> getPolicyValidationMessages() {
      return this.g;
   }

   public void setPolicyValidationMessages(List<PolicyValidationResult.PolicyValidationMessage> var1) {
      this.g = var1;
   }

   @XmlElement(name = "ValidationStatus", required = true)
   protected PolicyValidationResult.AttributeExtensibleValidationStatus getStatusValue() {
      return this.f;
   }

   protected void setStatusValue(PolicyValidationResult.AttributeExtensibleValidationStatus var1) {
      this.f = var1;
   }

   PolicyValidationResult() {
   }

   @XmlType(name = "AssertionDetailType")
   public static class AssertionDetail {
      private int a;
      private String b;
      private Map<QName, Object> c;

      AssertionDetail() {
      }

      @XmlAttribute(name = "position", required = true)
      public int getPosition() {
         return this.a;
      }

      public void setPosition(int var1) {
         this.a = var1;
      }

      @XmlValue
      public String getDescription() {
         return this.b;
      }

      public void setDescription(String var1) {
         this.b = var1;
      }

      @XmlAnyAttribute
      protected Map<QName, Object> getAttributeExtensions() {
         return this.c;
      }

      protected void setAttributeExtensions(Map<QName, Object> var1) {
         this.c = var1;
      }
   }

   @XmlType(name = "ValidationStatusPropertyType")
   protected static class AttributeExtensibleValidationStatus extends AttributeExtensibleType.AttributeExtensible<PolicyValidationResult.ValidationStatus> {
      private PolicyValidationResult.ValidationStatus b;

      @XmlValue
      public PolicyValidationResult.ValidationStatus getValue() {
         return this.b;
      }

      public void setValue(PolicyValidationResult.ValidationStatus var1) {
         this.b = var1;
      }
   }

   @XmlType(name = "PolicyValidationMessageType", propOrder = {"assertionDetails", "messageValue", "extension", "extensions"})
   public static class PolicyValidationMessage extends ElementExtensionSupport {
      private String d;
      private int e;
      private List<PolicyValidationResult.AssertionDetail> f;
      private AttributeExtensibleType.AttributeExtensibleString g;

      PolicyValidationMessage() {
      }

      @XmlAttribute(name = "level", required = true)
      public String getLevel() {
         return this.d;
      }

      public void setLevel(String var1) {
         this.d = var1;
      }

      @XmlAttribute(name = "assertionOrdinal", required = true)
      public int getAssertionOrdinal() {
         return this.e;
      }

      public void setAssertionOrdinal(int var1) {
         this.e = var1;
      }

      @XmlElementWrapper(name = "AssertionPath", required = true)
      @XmlElement(name = "Assertion", required = true)
      public List<PolicyValidationResult.AssertionDetail> getAssertionDetails() {
         return this.f;
      }

      public void setAssertionDetails(List<PolicyValidationResult.AssertionDetail> var1) {
         this.f = var1;
      }

      public String getMessage() {
         return AttributeExtensibleType.get(this.g);
      }

      public void setMessage(String var1) {
         this.g = AttributeExtensibleType.set(this.g, var1);
      }

      @Override
      public boolean equals(Object var1) {
         if (this == var1) {
            return true;
         }

         if (var1 != null && this.getClass() == var1.getClass()) {
            PolicyValidationResult.PolicyValidationMessage var2 = (PolicyValidationResult.PolicyValidationMessage)var1;
            if (this.e != var2.e) {
               return false;
            } else if (this.d != null ? this.d.equals(var2.d) : var2.d == null) {
               return this.g != null ? this.g.equals(var2.g) : var2.g == null;
            } else {
               return false;
            }
         } else {
            return false;
         }
      }

      @Override
      public int hashCode() {
         int var1 = this.d != null ? this.d.hashCode() : 0;
         var1 = 31 * var1 + this.e;
         return 31 * var1 + (this.g != null ? this.g.hashCode() : 0);
      }

      @XmlElement(name = "Message", required = true)
      protected AttributeExtensibleType.AttributeExtensibleString getMessageValue() {
         return this.g;
      }

      protected void setMessageValue(AttributeExtensibleType.AttributeExtensibleString var1) {
         this.g = var1;
      }
   }

   @XmlEnum(String.class)
   @XmlType(name = "ValidationStatusType")
   public enum ValidationStatus {
      @XmlEnumValue("OK")
      OK,
      @XmlEnumValue("Warning")
      WARNING,
      @XmlEnumValue("Error")
      ERROR;

      // $VF: Failed to inline enum fields
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      static {
         String[] var0 = new String[3];
         int var4 = 0;
         String var3 = "%;YxV\u0002/\"\u00077(YyMH6";
         int var5 = "%;YxV\u0002/\"\u00077(YyMH6".length();
         char var2 = 5;
         int var1 = -1;

         while (true) {
            String var10002 = a(a(var3.substring(++var1, var1 + var2)));
            byte var10001 = -1;
            var0[var4++] = var10002;
            if ((var1 += var2) >= var5) {
               OK = new PolicyValidationResult.ValidationStatus();
               WARNING = new PolicyValidationResult.ValidationStatus();
               ERROR = new PolicyValidationResult.ValidationStatus();
               return;
            }

            var2 = var3.charAt(var1);
         }
      }

      private static char[] a(String var0) {
         char[] var10000 = var0.toCharArray();
         if (var10000.length < 2) {
            var10000[0] = (char)(var10000[0] ^ 113);
         }

         return var10000;
      }

      private static String a(char[] var0) {
         int var10002 = var0.length;
         char[] var10001 = var0;
         int var10000 = var10002;

         for (int var1 = 0; var10000 > var1; var1++) {
            var10001[var1] = (char)(var10001[var1] ^ switch (var1 % 7) {
               case 0 -> 96;
               case 1 -> 105;
               case 2 -> 11;
               case 3 -> 55;
               case 4 -> 4;
               case 5 -> 6;
               default -> 113;
            });
         }

         return new String(var10001).intern();
      }
   }
}
