Class MessageHandlerErrorStrategyAdapter
- All Implemented Interfaces:
Component,DestructableComponent,InitializableComponent,MessageHandler
MessageHandler which wraps and invokes another handler, catches any Throwable which is
thrown by the wrapped handler's MessageHandler.invoke(MessageContext), and applies
a list of configured TypedMessageErrorHandler strategies.
The configured error handlers are iterated in the supplied order, and each will be given an opportunity to
handle the error if the thrown Throwable is an instance a type supported by the error handler,
as determined by TypedMessageErrorHandler.handlesError(Throwable). This iteration is essentially a
"dynamic catch block". The first handler to indicate it has handled the error via the return value of
MessageErrorHandler.handleError(Throwable, MessageContext) terminates the error handler iteration.
A configured error handler may simply adjust or decorate the MessageContext with additional
information (e.g. to register a SOAP fault on behalf of a non-SOAP aware handler), or it may itself directly emit
an error response in a protocol- or technology-specific manner.
Whether the thrown Throwable is rethrown by this handler is determined by the flags
setRethrowIfHandled(boolean) and setRethrowIfNotHandled(boolean).
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate List<TypedMessageErrorHandler>The list of typed error handlers.private org.slf4j.LoggerLogger.private booleanFlag indicating whether the wrapped handler's exception should be rethrown after being handled successfully.private booleanFlag indicating whether the wrapped handler's exception should be rethrown if not handled successfully by any configured error handler.private MessageHandlerThe wrapped message handler. -
Constructor Summary
ConstructorsConstructorDescriptionMessageHandlerErrorStrategyAdapter(MessageHandler messageHandler, List<TypedMessageErrorHandler> typedErrorHandlers) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddoInvoke(MessageContext messageContext) Performs the handler logic.voidsetRethrowIfHandled(boolean flag) Set whether to rethrow the error if it is successfully handled by one of the configuredTypedMessageErrorHandler.voidsetRethrowIfNotHandled(boolean flag) Set whether to rethrow the error if it is NOT successfully handled by any of the configuredTypedMessageErrorHandler.Methods inherited from class org.opensaml.messaging.handler.AbstractMessageHandler
doPostInvoke, doPostInvoke, doPreInvoke, getActivationCondition, getLogPrefix, invoke, isPreInvokeCalled, setActivationConditionMethods inherited from class net.shibboleth.shared.component.AbstractInitializableComponent
checkComponentActive, checkSetterPreconditions, destroy, doDestroy, doInitialize, ifDestroyedThrowDestroyedComponentException, ifInitializedThrowUnmodifiabledComponentException, ifNotInitializedThrowUninitializedComponentException, initialize, isDestroyed, isInitializedMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.shibboleth.shared.component.InitializableComponent
initialize, isInitialized
-
Field Details
-
log
@Nonnull private org.slf4j.Logger logLogger. -
wrappedHandler
The wrapped message handler. -
errorHandlers
The list of typed error handlers. -
rethrowIfHandled
private boolean rethrowIfHandledFlag indicating whether the wrapped handler's exception should be rethrown after being handled successfully. -
rethrowIfNotHandled
private boolean rethrowIfNotHandledFlag indicating whether the wrapped handler's exception should be rethrown if not handled successfully by any configured error handler.
-
-
Constructor Details
-
MessageHandlerErrorStrategyAdapter
public MessageHandlerErrorStrategyAdapter(@Nonnull MessageHandler messageHandler, @Nonnull List<TypedMessageErrorHandler> typedErrorHandlers) Constructor.- Parameters:
messageHandler- the wrapped message handlertypedErrorHandlers- the list of typed error handlers to apply
-
-
Method Details
-
setRethrowIfHandled
public void setRethrowIfHandled(boolean flag) Set whether to rethrow the error if it is successfully handled by one of the configuredTypedMessageErrorHandler.Default is: false
- Parameters:
flag- true if should rethrow, false if not
-
setRethrowIfNotHandled
public void setRethrowIfNotHandled(boolean flag) Set whether to rethrow the error if it is NOT successfully handled by any of the configuredTypedMessageErrorHandler.Default is: true
- Parameters:
flag- true if should rethrow, false if not
-
doInvoke
Performs the handler logic.- Specified by:
doInvokein classAbstractMessageHandler- 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
-