package at.gv.egiz.eaaf.modules.pvp2.impl.verification; import java.util.ArrayList; import java.util.List; import org.opensaml.messaging.context.MessageContext; import org.opensaml.messaging.handler.MessageHandler; import org.opensaml.messaging.handler.MessageHandlerChain; import org.opensaml.messaging.handler.MessageHandlerException; import lombok.extern.slf4j.Slf4j; import net.shibboleth.shared.component.ComponentInitializationException; @Slf4j public class PvpSamlMessageHandlerChain implements MessageHandlerChain { private final List handlers = new ArrayList<>(); private boolean isInitialized = false; @Override public void invoke(MessageContext messageContext) throws MessageHandlerException { if (!isInitialized) { throw new RuntimeException("Component: " + PvpSamlMessageHandlerChain.class.getName() + " not initialized"); } for (final MessageHandler handler : getHandlers()) { log.trace("Initializing SAML message handler: {}", handler.getClass().getName()); handler.invoke(messageContext); } } @Override public boolean isInitialized() { return isInitialized; } @Override public void initialize() throws ComponentInitializationException { if (!isInitialized) { for (final MessageHandler handler : getHandlers()) { log.trace("Initializing SAML message handler: {}", handler.getClass().getName()); handler.initialize(); } isInitialized = true; } } @Override public List getHandlers() { return handlers; } public void addHandler(MessageHandler handler) { handlers.add(handler); } public void addHandlers(List handlerList) { handlers.addAll(handlerList); } }