Package org.opensaml.soap.messaging

# Class AbstractHeaderGeneratingMessageHandler

java.lang.Object
net.shibboleth.shared.component.AbstractInitializableComponent
org.opensaml.messaging.handler.AbstractMessageHandler
org.opensaml.soap.messaging.AbstractHeaderGeneratingMessageHandler

All Implemented Interfaces:
  `Component`, `DestructableComponent`, `InitializableComponent`, `MessageHandler`

Direct Known Subclasses:
  `AddActionHandler`, `AddMessageIDHandler`, `AddRelatesToHandler`, `AddTimestampHandler`

public abstract class AbstractHeaderGeneratingMessageHandler extends AbstractMessageHandler
Abstract base class for message handlers that generate SOAP headers.

## Field Summary

Fields
Modifier and Type
Field
Description
`private boolean`
`effectiveMustUnderstand`
The effective mustUnderstand value to use.
`private String`
`effectiveTargetNode`
The effective target node value to use.
`private boolean`
`mustUnderstand`
The statically configured value for mustUnderstand.
`private Predicate<MessageContext>`
`mustUnderstandStrategy`
Predicate strategy for evaluating mustUnderstand from the message context.
`private String`
`targetNode`
The statically configured value for target node (SOAP 1.1 actor or SOAP 1.2 role).
`private Function<MessageContext,String>`
`targetNodeStrategy`
Function strategy for resolving target node from the message context.

## Constructor Summary

Constructors
Constructor
Description
`AbstractHeaderGeneratingMessageHandler()`

## Method Summary

Modifier and Type
Method
Description
`protected void`
`decorateGeneratedHeader(MessageContext messageContext, XMLObject header)`
Decorate the header based on configured and/or resolved values.
`protected boolean`
`doPreInvoke(MessageContext messageContext)`
Called prior to execution, handlers may override this method to perform pre-processing for a request.
`protected String`
`getEffectiveTargetNode()`
Get the effective value for target node (SOAP 1.1 actor or SOAP 1.2 role).
`protected boolean`
`isEffectiveMustUnderstand()`
Get the effective value for mustUnderstand.
`void`
`setMustUnderstand(boolean flag)`
Set the statically configured value for mustUnderstand.
`void`
`setMustUnderstandStrategy(Predicate<MessageContext> strategy)`
Set the predicate strategy for evaluating mustUnderstand from the message context.
`void`
`setTargetNode(String node)`
Set the statically configured value for target node (SOAP 1.1 actor or SOAP 1.2 role).
`void`
`setTargetNodeStrategy(Function<MessageContext,String> strategy)`
Set the predicate strategy for evaluating mustUnderstand from the message context.

### Methods inherited from class org.opensaml.messaging.handler.AbstractMessageHandler

`doInvoke, doPostInvoke, doPostInvoke, getActivationCondition, getLogPrefix, invoke, isPreInvokeCalled, setActivationCondition`

### Methods inherited from class net.shibboleth.shared.component.AbstractInitializableComponent

`checkComponentActive, checkSetterPreconditions, destroy, doDestroy, doInitialize, ifDestroyedThrowDestroyedComponentException, ifInitializedThrowUnmodifiabledComponentException, ifNotInitializedThrowUninitializedComponentException, 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.shared.component.InitializableComponent

`initialize, isInitialized`

## Field Details

### mustUnderstand

private boolean mustUnderstand
The statically configured value for mustUnderstand.

### mustUnderstandStrategy

@Nullable private Predicate<MessageContext> mustUnderstandStrategy
Predicate strategy for evaluating mustUnderstand from the message context.

### effectiveMustUnderstand

private boolean effectiveMustUnderstand
The effective mustUnderstand value to use.

### targetNode

@Nullable private String targetNode
The statically configured value for target node (SOAP 1.1 actor or SOAP 1.2 role).

### targetNodeStrategy

@Nullable private Function<MessageContext,String> targetNodeStrategy
Function strategy for resolving target node from the message context.

### effectiveTargetNode

@Nullable private String effectiveTargetNode
The effective target node value to use.

## Constructor Details

### AbstractHeaderGeneratingMessageHandler

public AbstractHeaderGeneratingMessageHandler()

## Method Details

### setMustUnderstand

public void setMustUnderstand(boolean flag)
Set the statically configured value for mustUnderstand.

Parameters:
  `flag` - true if header must be understood, false if not

### setMustUnderstandStrategy

public void setMustUnderstandStrategy(@Nullable Predicate<MessageContext> strategy)
Set the predicate strategy for evaluating mustUnderstand from the message context.

Parameters:
  `strategy` - the predicate strategy

### isEffectiveMustUnderstand

protected boolean isEffectiveMustUnderstand()
Get the effective value for mustUnderstand.

Returns:
  the effective value for mustUnderstand.

### setTargetNode

public void setTargetNode(@Nullable String node)
Set the statically configured value for target node (SOAP 1.1 actor or SOAP 1.2 role).

Parameters:
  `node` - the target node, may be null

### setTargetNodeStrategy

public void setTargetNodeStrategy(@Nullable Function<MessageContext,String> strategy)
Set the predicate strategy for evaluating mustUnderstand from the message context.

Parameters:
  `strategy` - the predicate strategy

### getEffectiveTargetNode

protected String getEffectiveTargetNode()
Get the effective value for target node (SOAP 1.1 actor or SOAP 1.2 role).

Returns:
  the effective value for target node

### 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 `AbstractMessageHandler.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.

Overrides:
  `doPreInvoke` in class `AbstractMessageHandler`
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

### decorateGeneratedHeader

protected void decorateGeneratedHeader(@Nonnull MessageContext messageContext, @Nonnull XMLObject header)
Decorate the header based on configured and/or resolved values.

Parameters:
  `messageContext` - the current message context
  `header` - the header to decorate