package com.l7tech.server.policy;

import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.util.Eithers;
import com.l7tech.util.Eithers.E2;
import com.l7tech.util.Functions.Nullary;
import java.io.IOException;

class ao implements Nullary<E2<PolicyAssertionException, IOException, AssertionStatus>> {
   final PolicyEnforcementContext val$context;
   final ServerPolicy val$target;
   final ServerPolicyHandle this$0;

   ao(ServerPolicyHandle var1, PolicyEnforcementContext var2, ServerPolicy var3) {
      this.this$0 = var1;
      this.val$context = var2;
      this.val$target = var3;
   }

   public E2<PolicyAssertionException, IOException, AssertionStatus> call() {
      PolicyMetadata var10000;
      label109: {
         try {
            if (this.val$context == null) {
               var10000 = null;
               break label109;
            }
         } catch (PolicyAssertionException var19) {
            throw a(var19);
         }

         var10000 = this.val$context.getCurrentPolicyMetadata();
      }

      PolicyMetadata var1 = var10000;

      try {
         try {
            if (this.val$context != null) {
               this.val$context.setCurrentPolicyMetadata(this.this$0.c);
            }
         } catch (PolicyAssertionException var15) {
            throw a(var15);
         }

         return Eithers.right2(this.val$target.checkRequest(this.val$context));
      } catch (PolicyAssertionException var16) {
         return Eithers.left2_1(var16);
      } catch (IOException var17) {
         return Eithers.left2_2(var17);
      } finally {
         try {
            if (this.val$context != null) {
               this.val$context.setCurrentPolicyMetadata(var1);
            }
         } catch (PolicyAssertionException var14) {
            throw a(var14);
         }
      }
   }

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