Package org.opensaml.saml.common.binding.impl

# Class SAMLAddAttributeConsumingServiceHandler

java.lang.Object
net.shibboleth.shared.component.AbstractInitializableComponent
org.opensaml.messaging.handler.AbstractMessageHandler
org.opensaml.saml.common.binding.impl.SAMLAddAttributeConsumingServiceHandler

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

public class SAMLAddAttributeConsumingServiceHandler extends AbstractMessageHandler
SAML `MessageHandler` that attaches an `AttributeConsumingServiceContext` to the `SAMLMetadataContext` based on the content of an `AuthnRequest` in the message context.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`private class`
`SAMLAddAttributeConsumingServiceHandler.AuthnRequestLookup`
Default lookup function that find a SAML 2 `AuthnRequest`.

## Field Summary

Fields
Modifier and Type
Field
Description
`private Function<MessageContext,AuthnRequest>`
`authnRequestLookupStrategy`
Lookup strategy for an `AuthnRequest` index.
`private Integer`
`index`
`AttributeConsumingService` index - if specified.
`private final org.slf4j.Logger`
`log`
Logger.
`private Function<MessageContext,SAMLMetadataContext>`
`metadataContextLookupStrategy`
Lookup strategy for `SAMLMetadataContext`.
`private Collection<RequestedAttribute>`
`requestedAttributes`
`RequestedAttribute` list - if specified.

## Constructor Summary

Constructors
Constructor
Description
`SAMLAddAttributeConsumingServiceHandler()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`private AttributeConsumingService`
`attributeConsumingServiceFromRequestedAttributes()`
Generate an `AttributeConsumingService` from the `RequestedAttributes`.
`protected void`
`doInvoke(MessageContext messageContext)`
Performs the handler logic.
`protected boolean`
`doPreInvoke(MessageContext messageContext)`
Called prior to execution, handlers may override this method to perform pre-processing for a request.
`protected Collection<RequestedAttribute>`
`getRequestedAttributes(MessageContext messageContext, AuthnRequest authn)`
Grab the `RequestedAttribute` (if any) from the `AuthnRequest`.
`void`
`setIndexLookupStrategy(Function<MessageContext,AuthnRequest> strategy)`
Set the strategy to locate the `AttributeConsumingService` index from the `MessageContext`.
`void`
`setMetadataContextLookupStrategy(Function<MessageContext,SAMLMetadataContext> strategy)`
Set the strategy to locate the `SAMLMetadataContext` from the `MessageContext`.

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

`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

### log

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

### metadataContextLookupStrategy

@Nonnull private Function<MessageContext,SAMLMetadataContext> metadataContextLookupStrategy
Lookup strategy for `SAMLMetadataContext`.

### authnRequestLookupStrategy

@Nonnull private Function<MessageContext,AuthnRequest> authnRequestLookupStrategy
Lookup strategy for an `AuthnRequest` index.

### index

@Nullable private Integer index
`AttributeConsumingService` index - if specified.

### requestedAttributes

@Nullable private Collection<RequestedAttribute> requestedAttributes
`RequestedAttribute` list - if specified.

## Constructor Details

### SAMLAddAttributeConsumingServiceHandler

public SAMLAddAttributeConsumingServiceHandler()
Constructor.

## Method Details

### setMetadataContextLookupStrategy

public void setMetadataContextLookupStrategy(@Nonnull Function<MessageContext,SAMLMetadataContext> strategy)
Set the strategy to locate the `SAMLMetadataContext` from the `MessageContext`.

Parameters:
  `strategy` - lookup strategy

### setIndexLookupStrategy

public void setIndexLookupStrategy(@Nullable Function<MessageContext,AuthnRequest> strategy)
Set the strategy to locate the `AttributeConsumingService` index from the `MessageContext`.

Parameters:
  `strategy` - lookup strategy

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

### doInvoke

protected void doInvoke(@Nonnull MessageContext messageContext) throws MessageHandlerException
Performs the handler logic.

Specified by:
  `doInvoke` in class `AbstractMessageHandler`
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

### attributeConsumingServiceFromRequestedAttributes

@Nonnull private AttributeConsumingService attributeConsumingServiceFromRequestedAttributes() throws MessageHandlerException
Generate an `AttributeConsumingService` from the `RequestedAttributes`.

Returns:
  a suitable AttributeConsumingService
Throws:
  `MessageHandlerException` - when the cloning failed

### getRequestedAttributes

@Nullable protected Collection<RequestedAttribute> getRequestedAttributes(@Nonnull MessageContext messageContext, @Nonnull AuthnRequest authn)
Grab the `RequestedAttribute` (if any) from the `AuthnRequest`.

Parameters:
  `messageContext` - current message context
  `authn` - the request to interrogate
Returns:
  null or the list