/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.LicenseException
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.policy.assertion.PolicyAssertionException
 *  com.l7tech.policy.assertion.composite.OneOrMoreAssertion
 *  org.springframework.beans.factory.BeanFactory
 *  org.springframework.context.ApplicationContext
 */
package com.l7tech.server.policy.assertion.composite;

import com.l7tech.gateway.common.LicenseException;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.policy.assertion.composite.OneOrMoreAssertion;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.assertion.ServerAssertion;
import com.l7tech.server.policy.assertion.composite.ServerCompositeAssertion;
import com.l7tech.server.policy.assertion.composite.e;
import java.io.IOException;
import java.util.List;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;

public final class ServerOneOrMoreAssertion
extends ServerCompositeAssertion<OneOrMoreAssertion> {
    private final ServerCompositeAssertion.AssertionResultListener h = new e(this);

    public ServerOneOrMoreAssertion(OneOrMoreAssertion oneOrMoreAssertion, ApplicationContext applicationContext) throws PolicyAssertionException, LicenseException {
        super(oneOrMoreAssertion, (BeanFactory)applicationContext);
    }

    @Override
    public AssertionStatus checkRequest(PolicyEnforcementContext policyEnforcementContext) throws IOException, PolicyAssertionException {
        List<ServerAssertion> list = this.getChildren();
        AssertionStatus assertionStatus = AssertionStatus.FALSIFIED;
        if (list.size() > 0) {
            assertionStatus = this.iterateChildren(policyEnforcementContext, this.h);
        }
        try {
            if (assertionStatus != AssertionStatus.NONE) {
                this.rollbackDeferredAssertions(policyEnforcementContext);
            }
        }
        catch (IOException iOException) {
            throw ServerOneOrMoreAssertion.a(iOException);
        }
        return assertionStatus;
    }

    private static IOException a(IOException iOException) {
        return iOException;
    }
}

