Class AddSOAPFault

All Implemented Interfaces:
Component, DestructableComponent, InitializableComponent, ProfileAction

public class AddSOAPFault extends AbstractProfileAction
Action that resolves or builds a SOAP 1.1 Fault object, and stores it in the outbound message context.

An attempt will first be made to resolve a pre-existing fault instance from the ProfileRequestContext, via an optionally configured lookup strategy. This is to accommodate SOAP-aware components which may choose to emit a specific, locally determined fault. The default strategy is AddSOAPFault.MessageContextFaultStrategy.

If no context fault instance is resolved, a new instance will be built using strategy functions which lookup the FaultCode QName and the FaultString String values. If no value is produced, the former defaults to FaultCode.SERVER. The latter defaults to null.

Event:
EventIds.PROCEED_EVENT_ID
  • Field Details

    • log

      @Nonnull private org.slf4j.Logger log
      Class logger.
    • contextFaultStrategy

      @Nullable private Function<ProfileRequestContext,Fault> contextFaultStrategy
      Strategy for resolving a fault instance directly from the request context.
    • detailedErrorsCondition

      @Nonnull private Predicate<ProfileRequestContext> detailedErrorsCondition
      Predicate determining whether detailed error information is permitted.
    • faultCodeLookupStrategy

      @Nullable private Function<ProfileRequestContext,QName> faultCodeLookupStrategy
      Optional method to obtain fault code.
    • faultStringLookupStrategy

      @Nullable private Function<ProfileRequestContext,String> faultStringLookupStrategy
      Optional method to obtain a fault string.
    • defaultFaultCode

      @Nonnull @NonnullElements private QName defaultFaultCode
      Default fault codes to insert.
    • faultString

      @Nullable private String faultString
      A default fault string to include.
    • detailedErrors

      private boolean detailedErrors
      Whether to include detailed status information.
    • nullifyOutboundMessage

      private boolean nullifyOutboundMessage
      Whether to set the outbound message context's message property to null.
  • Constructor Details

    • AddSOAPFault

      public AddSOAPFault()
      Constructor.
  • Method Details

    • setNullifyOutboundMessage

      public void setNullifyOutboundMessage(boolean flag)
      Set the flag indicating whether to set the outbound message context's message property to null.

      Default is: true

      Parameters:
      flag - true if should nullify, false if not
    • setContextFaultStrategy

      public void setContextFaultStrategy(@Nullable Function<ProfileRequestContext,Fault> strategy)
      Set the optional strategy used to resolve a Fault instance directly from the request context.
      Parameters:
      strategy - strategy used to resolve the fault instance
    • setDetailedErrorsCondition

      public void setDetailedErrorsCondition(@Nonnull Predicate<ProfileRequestContext> condition)
      Set the predicate used to determine the detailed errors condition.
      Parameters:
      condition - predicate for detailed errors condition
    • setFaultCodeLookupStrategy

      public void setFaultCodeLookupStrategy(@Nullable Function<ProfileRequestContext,QName> strategy)
      Set the optional strategy used to obtain a faultcode to include.
      Parameters:
      strategy - strategy used to obtain faultcode
    • setFaultStringLookupStrategy

      public void setFaultStringLookupStrategy(@Nullable Function<ProfileRequestContext,String> strategy)
      Set the optional strategy used to obtain a faultstring to include.
      Parameters:
      strategy - strategy used to obtain a fault string
    • setFaultCode

      public void setFaultCode(@Nonnull QName code)
      Set the default faultcode to insert.
      Parameters:
      code - faultcode
    • setFaultString

      public void setFaultString(@Nullable String message)
      Set a default faultstring to use in the event that error detail is off, or no specific message is obtained.
      Parameters:
      message - default faultstring
    • doPreExecute

      protected boolean doPreExecute(@Nonnull ProfileRequestContext profileRequestContext)
      Called prior to execution, actions may override this method to perform pre-processing for a request.

      If false is returned, execution will not proceed, and the action should attach an EventContext to the context tree to signal how to continue with overall workflow processing.

      If returning successfully, the last step should be to return the result of the superclass version of this method.

      Overrides:
      doPreExecute in class AbstractProfileAction
      Parameters:
      profileRequestContext - the current IdP profile request context
      Returns:
      true iff execution should proceed
    • doExecute

      protected void doExecute(@Nonnull ProfileRequestContext profileRequestContext)
      Performs this action. Actions must override this method to perform their work.
      Overrides:
      doExecute in class AbstractProfileAction
      Parameters:
      profileRequestContext - the current IdP profile request context
    • resolveContextFault

      @Nullable private Fault resolveContextFault(ProfileRequestContext profileRequestContext)
      Resolve a Fault instance stored in the ProfileRequestContext.
      Parameters:
      profileRequestContext - the current request context
      Returns:
      the fault instance resolved from the request context, or null
    • buildNewMappedFault

      @Nonnull private Fault buildNewMappedFault(ProfileRequestContext profileRequestContext)
      Build and return a new Fault based on configured mapping strategy.
      Parameters:
      profileRequestContext - the current request context
      Returns:
      the new fault
    • buildFaultString

      private void buildFaultString(@Nonnull Fault fault, @Nonnull @NotEmpty String message)
      Build and attach FaultString element.
      Parameters:
      fault - the element to attach to
      message - the message to set