package com.l7tech.server.audit;

import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.ServerPolicyHandle;
import java.io.IOException;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;

class ac implements TransactionCallback<AssertionStatus> {
   final ServerPolicyHandle val$sph;
   final PolicyEnforcementContext val$context;

   ac(AuditPolicyEvaluator var1, ServerPolicyHandle var2, PolicyEnforcementContext var3) {
      this.val$sph = var2;
      this.val$context = var3;
   }

   public AssertionStatus doInTransaction(TransactionStatus var1) {
      try {
         AssertionStatus var2 = this.val$sph.checkRequest(this.val$context);

         try {
            if (var2 != AssertionStatus.NONE) {
               var1.setRollbackOnly();
            }
         } catch (PolicyAssertionException var3) {
            throw a(var3);
         }

         return var2;
      } catch (PolicyAssertionException var4) {
         var1.setRollbackOnly();
      } catch (IOException var5) {
         var1.setRollbackOnly();
      }

      return AssertionStatus.FAILED;
   }

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