package com.l7tech.server.policy.validator;

import com.l7tech.policy.AssertionLicense;
import com.l7tech.policy.PolicyValidator;
import com.l7tech.policy.PolicyValidatorResult;
import com.l7tech.policy.PolicyValidatorResult.Error;
import com.l7tech.policy.PolicyValidatorResult.Warning;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.validator.PolicyValidationContext;
import java.util.Collections;
import java.util.List;
import org.jetbrains.annotations.Nullable;

public class CompositePolicyValidator implements PolicyValidator {
   private final List<PolicyValidator> a;

   public CompositePolicyValidator(List<PolicyValidator> var1) {
      this.a = Collections.unmodifiableList(var1);
   }

   public PolicyValidatorResult validate(@Nullable Assertion var1, PolicyValidationContext var2, AssertionLicense var3) throws InterruptedException {
      PolicyValidatorResult var4 = new PolicyValidatorResult();

      for (PolicyValidator var6 : this.a) {
         PolicyValidatorResult var7 = var6.validate(var1, var2, var3);

         for (Warning var9 : var7.getWarnings()) {
            var4.addWarning(var9);
         }

         for (Error var11 : var7.getErrors()) {
            var4.addError(var11);
         }
      }

      return var4;
   }

   public void checkForCircularIncludes(String var1, String var2, @Nullable Assertion var3, PolicyValidatorResult var4) {
      if (!this.a.isEmpty()) {
         this.a.get(0).checkForCircularIncludes(var1, var2, var3, var4);
      }
   }
}
