/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.policy.assertion.Assertion
 *  com.l7tech.policy.assertion.IdentityTargetable
 *  com.l7tech.policy.assertion.MessageTargetable
 *  com.l7tech.policy.assertion.PolicyAssertionException
 *  com.l7tech.policy.assertion.xmlsec.SecurityHeaderAddressable
 *  com.l7tech.security.xml.decorator.DecorationRequirements
 */
package com.l7tech.server.policy.assertion.xmlsec;

import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.IdentityTargetable;
import com.l7tech.policy.assertion.MessageTargetable;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.policy.assertion.xmlsec.SecurityHeaderAddressable;
import com.l7tech.security.xml.decorator.DecorationRequirements;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.assertion.AbstractMessageTargetableServerAssertion;
import com.l7tech.server.policy.assertion.xmlsec.AddWssEncryptionContext;
import com.l7tech.server.policy.assertion.xmlsec.AddWssEncryptionSupport;

public abstract class ServerAddWssEncryption<AT extends Assertion & SecurityHeaderAddressable>
extends AbstractMessageTargetableServerAssertion<AT> {
    protected final AddWssEncryptionSupport addWssEncryptionSupport;

    public ServerAddWssEncryption(AT AT) {
        super(AT);
        this.addWssEncryptionSupport = new AddWssEncryptionSupport(this.getAuditHaver(), this.logger, (MessageTargetable)AT, (SecurityHeaderAddressable)AT, (IdentityTargetable)AT);
    }

    protected AddWssEncryptionContext buildEncryptionContext(PolicyEnforcementContext policyEnforcementContext) throws AddWssEncryptionSupport.MultipleTokensException, PolicyAssertionException {
        return this.addWssEncryptionSupport.buildEncryptionContext(policyEnforcementContext);
    }

    protected void applyDecorationRequirements(PolicyEnforcementContext policyEnforcementContext, DecorationRequirements decorationRequirements, AddWssEncryptionContext addWssEncryptionContext) {
        this.addWssEncryptionSupport.applyDecorationRequirements(policyEnforcementContext, decorationRequirements, addWssEncryptionContext, this);
    }
}

