package de.persosim.simulator.seccondition; import java.util.ArrayList; import java.util.Collection; import de.persosim.simulator.protocols.Oid; import de.persosim.simulator.protocols.ta.Authorization; import de.persosim.simulator.secstatus.EffectiveAuthorizationMechanism; import de.persosim.simulator.secstatus.SecMechanism; /** * {@link SecCondition} that ensures that a given AuthorizationExtenension is present in {@link EffectiveAuthorizationMechanism} * @author amay * */ public class AuthorizationExtensionPresentSecCondition implements SecCondition { protected Oid oid; public AuthorizationExtensionPresentSecCondition(Oid oid) { this.oid = oid; } @Override public boolean check(Collection<SecMechanism> mechanisms) { for(SecMechanism secMechanism:mechanisms) { if(secMechanism instanceof EffectiveAuthorizationMechanism) { EffectiveAuthorizationMechanism authMechanism = (EffectiveAuthorizationMechanism) secMechanism; Authorization auth = authMechanism.getAuthorization(oid); return auth != null; } } return false; } @Override public Collection<Class<? extends SecMechanism>> getNeededMechanisms() { Collection<Class<? extends SecMechanism>> mechanisms = new ArrayList<>(); mechanisms.add(EffectiveAuthorizationMechanism.class); return mechanisms; } @Override public String toString() { return getClass().getSimpleName() + "[" + oid + "]"; } }