/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.policy.assertion.PolicyAssertionException
 *  org.springframework.transaction.TransactionStatus
 *  org.springframework.transaction.support.TransactionCallback
 */
package com.l7tech.server.policy.assertion.composite;

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

class g
implements TransactionCallback<AssertionStatus> {
    final PolicyEnforcementContext val$context;
    final ServerTransactionAssertion this$0;

    /*
     * Ignored method signature, as it can't be verified against descriptor
     */
    g(ServerTransactionAssertion serverTransactionAssertion, PolicyEnforcementContext policyEnforcementContext) {
        this.this$0 = serverTransactionAssertion;
        this.val$context = policyEnforcementContext;
    }

    public AssertionStatus doInTransaction(TransactionStatus transactionStatus) {
        try {
            AssertionStatus assertionStatus = this.this$0.iterateChildren(this.val$context, this.this$0.j);
            try {
                if (assertionStatus != AssertionStatus.NONE) {
                    transactionStatus.setRollbackOnly();
                }
            }
            catch (PolicyAssertionException policyAssertionException) {
                throw g.a(policyAssertionException);
            }
            return assertionStatus;
        }
        catch (PolicyAssertionException | IOException throwable) {
            transactionStatus.setRollbackOnly();
            return AssertionStatus.FAILED;
        }
    }

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

