Package net.shibboleth.idp.profile.impl

# Class ResolveAttributes

java.lang.Object
net.shibboleth.shared.component.AbstractInitializableComponent
org.opensaml.profile.action.AbstractProfileAction
org.opensaml.profile.action.AbstractConditionalProfileAction
net.shibboleth.idp.profile.AbstractProfileAction
net.shibboleth.idp.profile.impl.ResolveAttributes

All Implemented Interfaces:
  `Component`, `DestructableComponent`, `InitializableComponent`, `ProfileAction`, `Aware`, `MessageSource`, `MessageSourceAware`, `Action`

public final class ResolveAttributes extends AbstractProfileAction
Action that invokes the `AttributeResolver` for the current request.

Event:
  `EventIds.PROCEED_EVENT_ID`, `IdPEventIds.UNABLE_RESOLVE_ATTRIBS`
Postcondition:
  If resolution is successful, an AttributeContext is created with the results.

## Field Summary

Fields
Modifier and Type
Field
Description
`private Function<ProfileRequestContext,AttributeContext>`
`attributeContextCreationStrategy`
Strategy used to locate or create the `AttributeContext` to populate.
`private final ReloadableService<AttributeResolver>`
`attributeResolverService`
Service used to get the resolver used to fetch attributes.
`private Function<ProfileRequestContext,Collection<String>>`
`attributesLookupStrategy`
Strategy used to determine the attributes to resolve.
`private boolean`
`createResolutionContext`
Whether to create and populate `AttributeResolutionContext`.
`private Function<ProfileRequestContext,String>`
`issuerLookupStrategy`
Strategy used to locate the identity of the issuer associated with the attribute resolution.
`private final org.slf4j.Logger`
`log`
Class logger.
`private boolean`
`maskFailures`
Whether to treat resolver errors as equivalent to resolving no attributes.
`private Function<ProfileRequestContext,String>`
`principalNameLookupStrategy`
Strategy used to locate the principal name associated with the attribute resolution.
`private AttributeResolvingProfileConfiguration`
`profileConfiguration`
Tracked type-specific profile configuration.
`private Function<ProfileRequestContext,String>`
`recipientLookupStrategy`
Strategy used to locate the identity of the recipient associated with the attribute resolution.
`private Function<ProfileRequestContext,RelyingPartyContext>`
`relyingPartyContextLookupStrategy`
Strategy used to locate the `RelyingPartyContext` associated with a given `ProfileRequestContext`.
`private Consumer<AttributeResolutionContext>`
`resolutionContextDecorator`
Hook for adjusting/adding to resolution context.
`private String`
`resolutionLabel`
Label distinguishing different "types" of attribute resolution for use in resolver.

## Constructor Summary

Constructors
Constructor
Description
`ResolveAttributes(ReloadableService<AttributeResolver> resolverService)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`doExecute(ProfileRequestContext profileRequestContext)`
`protected boolean`
`doPreExecute(ProfileRequestContext profileRequestContext)`
`private void`
`populateResolutionContext(ProfileRequestContext profileRequestContext, AttributeResolutionContext resolutionContext)`
Fill in the resolution context data.
`void`
`setAttributeContextCreationStrategy(Function<ProfileRequestContext,AttributeContext> strategy)`
Set the strategy used to locate or create the `AttributeContext` to populate.
`void`
`setAttributesLookupStrategy(Function<ProfileRequestContext,Collection<String>> strategy)`
Set a strategy to use to obtain the names of the attributes to resolve.
`void`
`setAttributesToResolve(Collection<String> attributeIds)`
Set the attribute IDs to pass into the resolver.
`void`
`setCreateResolutionContext(boolean flag)`
Set whether to create the `AttributeResolutionContext` internally.
`void`
`setIssuerLookupStrategy(Function<ProfileRequestContext,String> strategy)`
Set the strategy used to lookup the issuer for this attribute resolution.
`void`
`setMaskFailures(boolean flag)`
Set whether to treat resolution failure as equivalent to resolving no attributes.
`void`
`setPrincipalNameLookupStrategy(Function<ProfileRequestContext,String> strategy)`
Set the strategy used to locate the principal name for this attribute resolution.
`void`
`setRecipientLookupStrategy(Function<ProfileRequestContext,String> strategy)`
Set the strategy used to lookup the recipient for this attribute resolution.
`void`
`setRelyingPartyContextLookupStrategy(Function<ProfileRequestContext,RelyingPartyContext> strategy)`
Set the strategy used to locate the `RelyingPartyContext` associated with a given `ProfileRequestContext`.
`void`
`setResolutionContextDecorator(Consumer<AttributeResolutionContext> decorator)`
Set optional hook for decorating or adding to resolution context.
`void`
`setResolutionLabel(String label)`
Set the optional "contextual" label associated with this attribute resolution.

### Methods inherited from class net.shibboleth.idp.profile.AbstractProfileAction

`doExecute, execute, getBean, getBean, getMessage, getMessage, getMessage, getParameter, getParameter, getProfileContextLookupStrategy, getRequestContext, getResult, setMessageSource, setProfileContextLookupStrategy`

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

`getActivationCondition, setActivationCondition`

### 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, 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
Class logger.

### relyingPartyContextLookupStrategy

@Nonnull private Function<ProfileRequestContext,RelyingPartyContext> relyingPartyContextLookupStrategy
Strategy used to locate the `RelyingPartyContext` associated with a given `ProfileRequestContext`.

### attributeResolverService

@Nonnull private final ReloadableService<AttributeResolver> attributeResolverService
Service used to get the resolver used to fetch attributes.

### issuerLookupStrategy

@Nullable private Function<ProfileRequestContext,String> issuerLookupStrategy
Strategy used to locate the identity of the issuer associated with the attribute resolution.

### recipientLookupStrategy

@Nullable private Function<ProfileRequestContext,String> recipientLookupStrategy
Strategy used to locate the identity of the recipient associated with the attribute resolution.

### principalNameLookupStrategy

@Nullable private Function<ProfileRequestContext,String> principalNameLookupStrategy
Strategy used to locate the principal name associated with the attribute resolution.

### attributeContextCreationStrategy

@Nonnull private Function<ProfileRequestContext,AttributeContext> attributeContextCreationStrategy
Strategy used to locate or create the `AttributeContext` to populate.

### attributesLookupStrategy

@Nonnull private Function<ProfileRequestContext,Collection<String>> attributesLookupStrategy
Strategy used to determine the attributes to resolve.

### resolutionContextDecorator

@Nullable private Consumer<AttributeResolutionContext> resolutionContextDecorator
Hook for adjusting/adding to resolution context.

### maskFailures

private boolean maskFailures
Whether to treat resolver errors as equivalent to resolving no attributes.

### resolutionLabel

@Nullable private String resolutionLabel
Label distinguishing different "types" of attribute resolution for use in resolver.

### createResolutionContext

private boolean createResolutionContext
Whether to create and populate `AttributeResolutionContext`.

### profileConfiguration

@Nullable private AttributeResolvingProfileConfiguration profileConfiguration
Tracked type-specific profile configuration.

## Constructor Details

### ResolveAttributes

public ResolveAttributes(@Nonnull ReloadableService<AttributeResolver> resolverService)
Constructor.

Parameters:
  `resolverService` - resolver used to fetch attributes

## Method Details

### setRelyingPartyContextLookupStrategy

public void setRelyingPartyContextLookupStrategy(@Nonnull Function<ProfileRequestContext,RelyingPartyContext> strategy)
Set the strategy used to locate the `RelyingPartyContext` associated with a given `ProfileRequestContext`.

Parameters:
  `strategy` - strategy used to locate the `RelyingPartyContext` associated with a given `ProfileRequestContext`
Since:
  5.2.0

### setIssuerLookupStrategy

public void setIssuerLookupStrategy(@Nullable Function<ProfileRequestContext,String> strategy)
Set the strategy used to lookup the issuer for this attribute resolution.

Parameters:
  `strategy` - lookup strategy

### setRecipientLookupStrategy

public void setRecipientLookupStrategy(@Nullable Function<ProfileRequestContext,String> strategy)
Set the strategy used to lookup the recipient for this attribute resolution.

Parameters:
  `strategy` - lookup strategy

### setPrincipalNameLookupStrategy

public void setPrincipalNameLookupStrategy(@Nullable Function<ProfileRequestContext,String> strategy)
Set the strategy used to locate the principal name for this attribute resolution.

Parameters:
  `strategy` - lookup strategy

### setAttributeContextCreationStrategy

public void setAttributeContextCreationStrategy(@Nonnull Function<ProfileRequestContext,AttributeContext> strategy)
Set the strategy used to locate or create the `AttributeContext` to populate.

Parameters:
  `strategy` - lookup/creation strategy

### setAttributesLookupStrategy

public void setAttributesLookupStrategy(@Nonnull Function<ProfileRequestContext,Collection<String>> strategy)
Set a strategy to use to obtain the names of the attributes to resolve.

Parameters:
  `strategy` - lookup strategy

### setAttributesToResolve

public void setAttributesToResolve(@Nonnull Collection<String> attributeIds)
Set the attribute IDs to pass into the resolver.

Parameters:
  `attributeIds` - attribute ID collection

### setResolutionContextDecorator

public void setResolutionContextDecorator(@Nullable Consumer<AttributeResolutionContext> decorator)
Set optional hook for decorating or adding to resolution context.

Parameters:
  `decorator` - decorator hook
Since:
  4.2.0

### setMaskFailures

public void setMaskFailures(boolean flag)
Set whether to treat resolution failure as equivalent to resolving no attributes.

This matches the behavior of V2.

Parameters:
  `flag` - flag to set

### setResolutionLabel

public void setResolutionLabel(@Nullable String label)
Set the optional "contextual" label associated with this attribute resolution.

Parameters:
  `label` - label to set
Since:
  3.4.0

### setCreateResolutionContext

public void setCreateResolutionContext(boolean flag)
Set whether to create the `AttributeResolutionContext` internally.

Defaults to 'true', disable to allow external creation of the context.

Parameters:
  `flag` - flag to set

### doPreExecute

protected boolean doPreExecute(@Nonnull ProfileRequestContext profileRequestContext)

Overrides:
  `doPreExecute` in class `AbstractConditionalProfileAction`

### doExecute

protected void doExecute(@Nonnull ProfileRequestContext profileRequestContext)

Overrides:
  `doExecute` in class `AbstractProfileAction`

### populateResolutionContext

private void populateResolutionContext(@Nonnull ProfileRequestContext profileRequestContext, @Nonnull AttributeResolutionContext resolutionContext)
Fill in the resolution context data.

Parameters:
  `profileRequestContext` - current profile request context
  `resolutionContext` - context to populate