Package org.opensaml.profile.action.impl

# Class EncodeMessage

java.lang.Object
net.shibboleth.shared.component.AbstractInitializableComponent
org.opensaml.profile.action.AbstractProfileAction
org.opensaml.profile.action.impl.EncodeMessage

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

public class EncodeMessage extends AbstractProfileAction
Action that encodes an outbound response from the outbound `MessageContext`.

The input to `setMessageEncoderFactory(Function)` is used to obtain a new `MessageEncoder` to use, and the encoder is destroyed upon completion.

Event:
  `EventIds.PROCEED_EVENT_ID`, `EventIds.INVALID_MSG_CTX`, `EventIds.UNABLE_TO_ENCODE`
Postcondition:
  If ProfileRequestContext.getOutboundMessageContext() != null, it will be injected and encoded.

## Field Summary

Fields
Modifier and Type
Field
Description
`private Function<ProfileRequestContext,MessageEncoder>`
`encoderFactory`
The function to use to obtain an encoder.
`private final org.slf4j.Logger`
`log`
Class logger.
`private MessageHandler`
`messageHandler`
An optional `MessageHandler` instance to be invoked after `MessageEncoder.prepareContext()` and prior to `MessageEncoder.encode()`.
`private MessageContext`
`msgContext`
The outbound MessageContext to encode.

## Constructor Summary

Constructors
Constructor
Description
`EncodeMessage()`

## Method Summary

Modifier and Type
Method
Description
`protected void`
`doExecute(ProfileRequestContext profileRequestContext)`
Performs this action.
`protected void`
`doInitialize()`
`protected boolean`
`doPreExecute(ProfileRequestContext profileRequestContext)`
Called prior to execution, actions may override this method to perform pre-processing for a request.
`void`
`setMessageEncoderFactory(Function<ProfileRequestContext,MessageEncoder> factory)`
Set the encoder factory to use.
`void`
`setMessageHandler(MessageHandler handler)`
The supplied `MessageHandler` will be invoked on the `MessageContext` after `MessageEncoder.prepareContext()`, and prior to invoking `MessageEncoder.encode()`.

### Methods inherited from class org.opensaml.profile.action.AbstractProfileAction

`doPostExecute, doPostExecute, ensureHttpServletRequest, ensureHttpServletResponse, execute, getHttpServletRequest, getHttpServletRequestSupplier, getHttpServletResponse, getHttpServletResponseSupplier, getLogPrefix, isPreExecuteCalled, setHttpServletRequestSupplier, setHttpServletResponseSupplier`

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

`checkComponentActive, checkSetterPreconditions, destroy, doDestroy, 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

### log

@Nonnull private final org.slf4j.Logger log
Class logger.

### encoderFactory

@NonnullAfterInit private Function<ProfileRequestContext,MessageEncoder> encoderFactory
The function to use to obtain an encoder.

### messageHandler

@Nullable private MessageHandler messageHandler
An optional `MessageHandler` instance to be invoked after `MessageEncoder.prepareContext()` and prior to `MessageEncoder.encode()`.

### msgContext

@Nullable private MessageContext msgContext
The outbound MessageContext to encode.

## Constructor Details

### EncodeMessage

public EncodeMessage()

## Method Details

### setMessageEncoderFactory

public void setMessageEncoderFactory(@Nonnull Function<ProfileRequestContext,MessageEncoder> factory)
Set the encoder factory to use.

Parameters:
  `factory` - factory to use

### setMessageHandler

public void setMessageHandler(@Nullable MessageHandler handler)

The supplied `MessageHandler` will be invoked on the `MessageContext` after `MessageEncoder.prepareContext()`, and prior to invoking `MessageEncoder.encode()`. Its use is optional and primarily used for transport/binding-specific message handling, as opposed to more generalized message handling operations which would typically be invoked earlier than this action. For more details see `MessageEncoder`.

Parameters:
  `handler` - a message handler

### doInitialize

protected void doInitialize() throws ComponentInitializationException

Overrides:
  `doInitialize` in class `AbstractInitializableComponent`
Throws:
  `ComponentInitializationException`

### 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