package com.l7tech.gateway.common;

import com.l7tech.gateway.common.audit.CommonMessages;
import com.l7tech.policy.variable.Syntax.SyntaxErrorHandler;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Pair;
import com.l7tech.util.Triple;
import java.text.MessageFormat;
import java.util.LinkedList;
import java.util.List;

public class QueuingSyntaxErrorHandler implements SyntaxErrorHandler {
   private List<Pair<String, String>> a;
   private List<Triple<Integer, String, Integer>> b;
   private List<String> c;
   private List<Pair<String, Throwable>> d;
   private final SyntaxErrorHandler e;

   public QueuingSyntaxErrorHandler(SyntaxErrorHandler var1) {
      this.e = var1;
      this.a = new LinkedList<>();
      this.b = new LinkedList<>();
      this.c = new LinkedList<>();
      this.d = new LinkedList<>();
   }

   public String handleSuspiciousToString(String var1, String var2) {
      this.a.add(new Pair(var1, var2));
      return MessageFormat.format(CommonMessages.TEMPLATE_SUSPICIOUS_TOSTRING.getMessage(), var1, var2);
   }

   public String handleSubscriptOutOfRange(int var1, String var2, int var3) {
      this.b.add(new Triple(var1, var2, var3));
      return MessageFormat.format(CommonMessages.TEMPLATE_SUBSCRIPT_OUTOFRANGE.getMessage(), Integer.toString(var1), var2, Integer.toString(var3));
   }

   public String handleBadVariable(String var1) {
      this.c.add(var1);
      return MessageFormat.format(CommonMessages.TEMPLATE_UNSUPPORTED_VARIABLE.getMessage(), var1);
   }

   public String handleBadVariable(String var1, Throwable var2) {
      this.d.add(new Pair(var1, var2));
      return MessageFormat.format(CommonMessages.TEMPLATE_UNSUPPORTED_VARIABLE.getMessage(), var1, ExceptionUtils.getMessage(var2));
   }

   public void flushLogAuditEvents() {
      for (Pair var2 : this.a) {
         this.e.handleSuspiciousToString((String)var2.left, (String)var2.right);
      }

      for (Triple var6 : this.b) {
         this.e.handleSubscriptOutOfRange((Integer)var6.left, (String)var6.middle, (Integer)var6.right);
      }

      for (String var7 : this.c) {
         this.e.handleBadVariable(var7);
      }

      for (Pair var8 : this.d) {
         this.e.handleBadVariable((String)var8.left, (Throwable)var8.right);
      }
   }
}
