Class AbstractMessageHandler

All Implemented Interfaces:
Component, DestructableComponent, InitializableComponent, MessageHandler
Direct Known Subclasses:
AbstractHeaderGeneratingMessageHandler, AbstractMessageChannelSecurity, AddChannelBindingsHeaderHandler, AddConsentToResponseHandler, AddECPResponseHeaderHandler, AddGeneratedKeyHeaderHandler, AddRelayStateHeaderHandler, AddRequestAuthenticatedHeaderHandler, BaseSAMLSimpleSignatureSecurityHandler, BaseTrustEngineSecurityHandler, BasicMessageHandlerChain, CheckAndRecordServerTLSEntityAuthenticationtHandler, CheckExpectedIssuer, CheckMandatoryAuthentication, CheckMandatoryIssuer, CheckMessageVersionHandler, EndpointURLSchemeSecurityHandler, EnvelopeBodyHandler, ExtractChannelBindingsExtensionsHandler, ExtractChannelBindingsHeadersHandler, ExtractConsentFromRequestHandler, ExtractMessageIDHandler, ExtractProxiedRequestersHandler, FunctionMessageHandler, HTTPRequestValidationHandler, InResponseToSecurityHandler, MessageHandlerErrorStrategyAdapter, MessageLifetimeSecurityHandler, MessageReplaySecurityHandler, PopulateHttpClientSecurityParametersHandler, PopulateSignatureSigningParametersHandler, PopulateSignatureValidationParametersHandler, ReceivedEndpointSecurityHandler, SAML1ArtifactRequestIssuerHandler, SAML2AuthnRequestsSignedSecurityHandler, SAMLAddAttributeConsumingServiceHandler, SAMLMetadataLookupHandler, SAMLOutboundDestinationHandler, SAMLOutboundProtocolMessageSigningHandler, SAMLProtocolAndRoleHandler, SAMLSOAPDecoderBodyHandler, SchemaValidateXMLMessage, SimplePayloadBodyHandler, ValidateActionHandler, WSSecuritySAML20AssertionTokenSecurityHandler

@Prototype
public abstract class AbstractMessageHandler
extends AbstractInitializableComponent
implements MessageHandler
A base abstract implementation of MessageHandler.
  • Field Details

    • log

      private org.slf4j.Logger log
      Logger.
    • activationCondition

      @Nonnull private Predicate<MessageContext> activationCondition
      Condition dictating whether to run or not.
  • Constructor Details

    • AbstractMessageHandler

      public AbstractMessageHandler()
      Constructor.
  • Method Details

    • 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 MessageHandlerException
      Invoke the handler on the specified message context.
      Specified by:
      invoke in interface MessageHandler
      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 MessageHandlerException
      Called prior to execution, handlers may override this method to perform pre-processing for a request.

      The default impl applies the Predicate set via the setActivationCondition(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 MessageHandlerException
      Performs 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 by doInvoke(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 by doInvoke(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 invoked
      e - an exception raised by the doInvoke(org.opensaml.messaging.context.MessageContext) method
    • getLogPrefix

      @Nonnull @NotEmpty protected String getLogPrefix()
      Return a prefix for logging messages for this component.
      Returns:
      a string for insertion at the beginning of any log messages