Class AbstractMessageHandler
- java.lang.Object
-
- net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
-
- org.opensaml.messaging.handler.AbstractMessageHandler
-
- All Implemented Interfaces:
Component,DestructableComponent,InitializableComponent,MessageHandler
@Prototype public abstract class AbstractMessageHandler extends AbstractInitializableComponent implements MessageHandler
A base abstract implementation ofMessageHandler.
-
-
Field Summary
Fields Modifier and Type Field Description private Predicate<MessageContext>activationConditionCondition dictating whether to run or not.private org.slf4j.LoggerlogLogger.
-
Constructor Summary
Constructors Constructor Description AbstractMessageHandler()Constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract voiddoInvoke(MessageContext messageContext)Performs the handler logic.protected voiddoPostInvoke(MessageContext messageContext)Called after execution, handlers may override this method to perform post-processing for a request.protected voiddoPostInvoke(MessageContext messageContext, Exception e)Called after execution, handlers may override this method to perform post-processing for a request.protected booleandoPreInvoke(MessageContext messageContext)Called prior to execution, handlers may override this method to perform pre-processing for a request.Predicate<MessageContext>getActivationCondition()Get activation condition indicating whether the handler should be invoked.protected StringgetLogPrefix()Return a prefix for logging messages for this component.voidinvoke(MessageContext messageContext)Invoke the handler on the specified message context.voidsetActivationCondition(Predicate<MessageContext> condition)Set activation condition indicating whether the handler should be invoked.-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, doDestroy, doInitialize, initialize, isDestroyed, isInitialized
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.shibboleth.utilities.java.support.component.InitializableComponent
initialize, isInitialized
-
-
-
-
Field Detail
-
log
private org.slf4j.Logger log
Logger.
-
activationCondition
@Nonnull private Predicate<MessageContext> activationCondition
Condition dictating whether to run or not.
-
-
Method Detail
-
getActivationCondition
@Nonnull public Predicate<MessageContext> getActivationCondition()
Get activation condition indicating whether the handler should be invoked.Defaults to a predicate which always returns
true.- Returns:
- activation condition
-
setActivationCondition
public void setActivationCondition(@Nonnull Predicate<MessageContext> condition)Set activation condition indicating whether the handler should be invoked.Defaults to a predicate which always returns
true.- Parameters:
condition- predicate to apply
-
invoke
public void invoke(@Nonnull MessageContext messageContext) throws MessageHandlerExceptionInvoke the handler on the specified message context.- Specified by:
invokein interfaceMessageHandler- Parameters:
messageContext- the message context on which to invoke the handler- Throws:
MessageHandlerException- if the there is an error invoking the handler on the message context
-
doPreInvoke
protected boolean doPreInvoke(@Nonnull MessageContext messageContext) throws MessageHandlerExceptionCalled prior to execution, handlers may override this method to perform pre-processing for a request.The default impl applies the
Predicateset via thesetActivationCondition(Predicate).If false is returned, execution will not proceed.
Subclasses which override this method should generally invoke the super version of this method first, so that the activation condition will be applied up front, and immediately return false if the super version returns false. This avoids unnecessary execution of the remaining pre-invocation code if the handler ultimately will not execute.
- Parameters:
messageContext- the message context on which to invoke the handler- Returns:
- true iff execution should proceed
- Throws:
MessageHandlerException- if there is a problem executing the handler pre-routine
-
doInvoke
protected abstract void doInvoke(@Nonnull MessageContext messageContext) throws MessageHandlerExceptionPerforms the handler logic.- Parameters:
messageContext- the message context on which to invoke the handler- Throws:
MessageHandlerException- if there is an error invoking the handler on the message context
-
doPostInvoke
protected void doPostInvoke(@Nonnull MessageContext messageContext)Called after execution, handlers may override this method to perform post-processing for a request.Handlers must not "fail" during this step. This method will not be called if
doPreInvoke(org.opensaml.messaging.context.MessageContext)fails, but is called if an exception is raised bydoInvoke(org.opensaml.messaging.context.MessageContext).- Parameters:
messageContext- the message context on which the handler was invoked
-
doPostInvoke
protected void doPostInvoke(@Nonnull MessageContext messageContext, @Nonnull Exception e)Called after execution, handlers may override this method to perform post-processing for a request.Handlers must not "fail" during this step. This method will not be called if
doPreInvoke(org.opensaml.messaging.context.MessageContext)fails, but is called if an exception is raised bydoInvoke(org.opensaml.messaging.context.MessageContext).This version of the method will be called if an exception is raised during execution of the handler. The overall handler result will be to raise this error, so any errors inadvertently raised by this method will be logged and superseded.
The default implementation simply calls the error-less version of this method.
- Parameters:
messageContext- the message context on which the handler was invokede- an exception raised by thedoInvoke(org.opensaml.messaging.context.MessageContext)method
-
-