/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.policy.assertion.CustomizeErrorResponseAssertion
 *  com.l7tech.policy.assertion.CustomizeErrorResponseAssertion$ErrorLevel
 *  com.l7tech.policy.assertion.PolicyAssertionException
 *  com.l7tech.xml.SoapFaultLevel
 */
package com.l7tech.server.policy.assertion;

import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.CustomizeErrorResponseAssertion;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.assertion.AbstractServerAssertion;
import com.l7tech.xml.SoapFaultLevel;
import java.io.IOException;

public class ServerCustomizeErrorResponseAssertion
extends AbstractServerAssertion<CustomizeErrorResponseAssertion> {
    public ServerCustomizeErrorResponseAssertion(CustomizeErrorResponseAssertion customizeErrorResponseAssertion) {
        super(customizeErrorResponseAssertion);
    }

    @Override
    public AssertionStatus checkRequest(PolicyEnforcementContext policyEnforcementContext) throws IOException, PolicyAssertionException {
        policyEnforcementContext.setFaultlevel(this.a((CustomizeErrorResponseAssertion)this.assertion));
        return AssertionStatus.NONE;
    }

    private SoapFaultLevel a(CustomizeErrorResponseAssertion customizeErrorResponseAssertion) {
        SoapFaultLevel soapFaultLevel = new SoapFaultLevel();
        if (customizeErrorResponseAssertion.getErrorLevel() == CustomizeErrorResponseAssertion.ErrorLevel.DROP_CONNECTION) {
            soapFaultLevel.setLevel(0);
        } else {
            soapFaultLevel.setLevel(1);
            soapFaultLevel.setFaultTemplateHttpStatus(customizeErrorResponseAssertion.getHttpStatus());
            soapFaultLevel.setFaultTemplateContentType(customizeErrorResponseAssertion.getContentType());
            soapFaultLevel.setFaultTemplate(customizeErrorResponseAssertion.getContent());
            soapFaultLevel.setIncludePolicyDownloadURL(customizeErrorResponseAssertion.isIncludePolicyDownloadURL());
            soapFaultLevel.setExtraHeaders(customizeErrorResponseAssertion.getExtraHeaders());
        }
        return soapFaultLevel;
    }
}

