package com.l7tech.policy.validator;

import com.l7tech.policy.AssertionPath;
import com.l7tech.policy.PolicyValidatorResult;
import com.l7tech.policy.assertion.Assertion;
import java.util.ArrayList;
import java.util.Collection;

public class AssertionValidatorSupport<AT extends Assertion> implements AssertionValidator {
   private final AT a;
   private Collection<AssertionValidatorSupport.PendingMessage> b = new ArrayList<>();
   private Collection<AssertionValidatorSupport.PendingMessage> c = new ArrayList<>();

   public AssertionValidatorSupport(AT var1) {
      this.a = (AT)var1;
   }

   public AT getAssertion() {
      return this.a;
   }

   public void addMessage(String var1) {
      this.b.add(new AssertionValidatorSupport.PendingMessage(this.a, var1));
   }

   public void addMessageAndException(String var1, Throwable var2) {
      this.b.add(new AssertionValidatorSupport.PendingMessage(this.a, var1, var2));
   }

   protected void addMessage(AssertionValidatorSupport.PendingMessage var1) {
      this.b.add(var1);
   }

   public void addWarningMessage(String var1) {
      this.c.add(new AssertionValidatorSupport.PendingMessage(this.a, var1, null));
   }

   protected void addWarningMessage(AssertionValidatorSupport.PendingMessage var1) {
      this.c.add(var1);
   }

   public boolean requireNonEmpty(String param1, String param2) {
      // $VF: Couldn't be decompiled
      // 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!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: ifnull 16
      // 04: aload 1
      // 05: invokevirtual java/lang/String.trim ()Ljava/lang/String;
      // 08: invokevirtual java/lang/String.length ()I
      // 0b: bipush 1
      // 0c: if_icmpge 21
      // 0f: goto 16
      // 12: invokestatic com/l7tech/policy/validator/AssertionValidatorSupport.a (Ljava/lang/NumberFormatException;)Ljava/lang/NumberFormatException;
      // 15: athrow
      // 16: aload 0
      // 17: aload 2
      // 18: invokevirtual com/l7tech/policy/validator/AssertionValidatorSupport.addMessage (Ljava/lang/String;)V
      // 1b: bipush 0
      // 1c: ireturn
      // 1d: invokestatic com/l7tech/policy/validator/AssertionValidatorSupport.a (Ljava/lang/NumberFormatException;)Ljava/lang/NumberFormatException;
      // 20: athrow
      // 21: bipush 1
      // 22: ireturn
      // try (0 -> 7): 8 java/lang/NumberFormatException
      // try (2 -> 15): 15 java/lang/NumberFormatException
   }

   public void requireNonEmptyArray(String[] param1, String param2) {
      // $VF: Couldn't be decompiled
      // 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!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: ifnull 1e
      // 04: aload 1
      // 05: arraylength
      // 06: bipush 1
      // 07: if_icmplt 1e
      // 0a: goto 11
      // 0d: invokestatic com/l7tech/policy/validator/AssertionValidatorSupport.a (Ljava/lang/NumberFormatException;)Ljava/lang/NumberFormatException;
      // 10: athrow
      // 11: aload 1
      // 12: bipush 0
      // 13: aaload
      // 14: ifnonnull 2a
      // 17: goto 1e
      // 1a: invokestatic com/l7tech/policy/validator/AssertionValidatorSupport.a (Ljava/lang/NumberFormatException;)Ljava/lang/NumberFormatException;
      // 1d: athrow
      // 1e: aload 0
      // 1f: aload 2
      // 20: invokevirtual com/l7tech/policy/validator/AssertionValidatorSupport.addMessage (Ljava/lang/String;)V
      // 23: goto 2a
      // 26: invokestatic com/l7tech/policy/validator/AssertionValidatorSupport.a (Ljava/lang/NumberFormatException;)Ljava/lang/NumberFormatException;
      // 29: athrow
      // 2a: return
      // try (0 -> 6): 7 java/lang/NumberFormatException
      // try (2 -> 13): 14 java/lang/NumberFormatException
      // try (9 -> 19): 20 java/lang/NumberFormatException
   }

   public void requireValidInteger(String param1, String param2, String param3) {
      // $VF: Couldn't be decompiled
      // 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!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 0
      // 01: aload 1
      // 02: aload 2
      // 03: invokevirtual com/l7tech/policy/validator/AssertionValidatorSupport.requireNonEmpty (Ljava/lang/String;Ljava/lang/String;)Z
      // 06: pop
      // 07: aload 1
      // 08: ifnull 26
      // 0b: aload 0
      // 0c: aload 1
      // 0d: invokevirtual com/l7tech/policy/validator/AssertionValidatorSupport.a (Ljava/lang/String;)Z
      // 10: ifne 26
      // 13: goto 1a
      // 16: invokestatic com/l7tech/policy/validator/AssertionValidatorSupport.a (Ljava/lang/NumberFormatException;)Ljava/lang/NumberFormatException;
      // 19: athrow
      // 1a: aload 0
      // 1b: aload 3
      // 1c: invokevirtual com/l7tech/policy/validator/AssertionValidatorSupport.addMessage (Ljava/lang/String;)V
      // 1f: goto 26
      // 22: invokestatic com/l7tech/policy/validator/AssertionValidatorSupport.a (Ljava/lang/NumberFormatException;)Ljava/lang/NumberFormatException;
      // 25: athrow
      // 26: return
      // try (0 -> 11): 12 java/lang/NumberFormatException
      // try (7 -> 17): 18 java/lang/NumberFormatException
   }

   public void requireValidIntegerOrContextVariable(String param1, String param2, String param3) {
      // $VF: Couldn't be decompiled
      // 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!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 0
      // 01: aload 1
      // 02: aload 2
      // 03: invokevirtual com/l7tech/policy/validator/AssertionValidatorSupport.requireNonEmpty (Ljava/lang/String;Ljava/lang/String;)Z
      // 06: ifne 0e
      // 09: return
      // 0a: invokestatic com/l7tech/policy/validator/AssertionValidatorSupport.a (Ljava/lang/NumberFormatException;)Ljava/lang/NumberFormatException;
      // 0d: athrow
      // 0e: aload 1
      // 0f: invokestatic com/l7tech/policy/variable/Syntax.getReferencedNames (Ljava/lang/String;)[Ljava/lang/String;
      // 12: arraylength
      // 13: ifgt 31
      // 16: aload 0
      // 17: aload 1
      // 18: invokevirtual com/l7tech/policy/validator/AssertionValidatorSupport.a (Ljava/lang/String;)Z
      // 1b: ifne 31
      // 1e: goto 25
      // 21: invokestatic com/l7tech/policy/validator/AssertionValidatorSupport.a (Ljava/lang/NumberFormatException;)Ljava/lang/NumberFormatException;
      // 24: athrow
      // 25: aload 0
      // 26: aload 3
      // 27: invokevirtual com/l7tech/policy/validator/AssertionValidatorSupport.addMessage (Ljava/lang/String;)V
      // 2a: goto 31
      // 2d: invokestatic com/l7tech/policy/validator/AssertionValidatorSupport.a (Ljava/lang/NumberFormatException;)Ljava/lang/NumberFormatException;
      // 30: athrow
      // 31: return
      // try (0 -> 6): 6 java/lang/NumberFormatException
      // try (8 -> 16): 17 java/lang/NumberFormatException
      // try (12 -> 22): 23 java/lang/NumberFormatException
   }

   @Override
   public void validate(AssertionPath var1, PolicyValidationContext var2, PolicyValidatorResult var3) {
      for (AssertionValidatorSupport.PendingMessage var5 : this.b) {
         var3.addError(new PolicyValidatorResult.Error(this.a(var5), var5.getMessage(), var5.getThrowable()));
      }

      for (AssertionValidatorSupport.PendingMessage var7 : this.c) {
         var3.addWarning(new PolicyValidatorResult.Warning(this.a(var7), var7.getMessage(), null));
      }
   }

   private Assertion a(AssertionValidatorSupport.PendingMessage var1) {
      Assertion var2 = var1.getTargetAssertion();

      try {
         if (var2 != null) {
            return var2;
         }
      } catch (NumberFormatException var3) {
         throw a(var3);
      }

      return this.a;
   }

   private boolean a(String var1) {
      try {
         Integer.parseInt(var1);
         return true;
      } catch (NumberFormatException var3) {
         return false;
      }
   }

   private static NumberFormatException a(NumberFormatException var0) {
      return var0;
   }

   protected static class PendingMessage {
      private final Assertion a;
      private final String b;
      private final Throwable c;

      public PendingMessage(Assertion var1, String var2) {
         this(var1, var2, null);
      }

      public PendingMessage(Assertion var1, String var2, Throwable var3) {
         this.a = var1;
         this.b = var2;
         this.c = var3;
      }

      public Assertion getTargetAssertion() {
         return this.a;
      }

      public String getMessage() {
         return this.b;
      }

      public Throwable getThrowable() {
         return this.c;
      }
   }
}
