Package net.shibboleth.idp.attribute.resolver.ad.impl

# Class ScopedAttributeDefinition

java.lang.Object
net.shibboleth.shared.component.AbstractInitializableComponent
net.shibboleth.shared.component.AbstractIdentifiedInitializableComponent
net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent
net.shibboleth.idp.attribute.resolver.AbstractResolverPlugin<IdPAttribute>
net.shibboleth.idp.attribute.resolver.AbstractAttributeDefinition
net.shibboleth.idp.attribute.resolver.ad.impl.ScopedAttributeDefinition

All Implemented Interfaces:
  `AttributeDefinition`, `ResolverPlugin<IdPAttribute>`, `Component`, `DestructableComponent`, `IdentifiableComponent`, `IdentifiedComponent`, `InitializableComponent`, `UnmodifiableComponent`, `DisposableBean`

@ThreadSafe public class ScopedAttributeDefinition extends AbstractAttributeDefinition
An attribute definition that creates `ScopedStringAttributeValue`s by taking a source attribute value and applying a static scope to each.

## Field Summary

Fields
Modifier and Type
Field
Description
`private final org.slf4j.Logger`
`log`
Class logger.
`private Collection<ResolverAttributeDefinitionDependency>`
`nonScopeAttributeDependencies`
The attribute dependencies mine the scopeSource attribute (if there is one).
`private String`
`scope`
Scope value.
`private String`
`scopeSource`
Scope source.

## Constructor Summary

Constructors
Constructor
Description
`ScopedAttributeDefinition()`

## Method Summary

Modifier and Type
Method
Description
`protected IdPAttribute`
`doAttributeDefinitionResolve(AttributeResolutionContext resolutionContext, AttributeResolverWorkContext workContext)`
Creates and populates the values for the resolved attribute.
`protected void`
`doInitialize()`
`private Collection<ResolverAttributeDefinitionDependency>`
`ensureNonScopeAttributeDependencies()`
Null safe getter for `nonScopeAttributeDependencies`.
`String`
`getScope()`
Get scope value.
`private String`
`getScopeFromSource(AttributeResolverWorkContext workContext)`
Lookup the source attribute in the resolved list.
`String`
`getScopeSource()`
Get scope source (attribute id).
`void`
`setScope(String newScope)`
Set the scope for this definition.
`void`
`setScopeSource(String attributeId)`
Set the source of the scope for this definition.

### Methods inherited from class net.shibboleth.idp.attribute.resolver.AbstractAttributeDefinition

`doResolve, getLogPrefix, isDependencyOnly, isPreRequested, setDependencyOnly, setPreRequested`

### Methods inherited from class net.shibboleth.idp.attribute.resolver.AbstractResolverPlugin

`doDestroy, equals, getActivationCondition, getAttributeDependencies, getDataConnectorDependencies, hashCode, isPropagateResolutionExceptions, resolve, setActivationCondition, setAttributeDependencies, setDataConnectorDependencies, setPropagateResolutionExceptions`

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

`setId`

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

`ensureId, getId, ifDestroyedThrowDestroyedComponentException, ifInitializedThrowUnmodifiabledComponentException, ifNotInitializedThrowUninitializedComponentException`

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

`checkComponentActive, checkSetterPreconditions, destroy, initialize, isDestroyed, isInitialized`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface net.shibboleth.shared.component.DestructableComponent

`destroy, isDestroyed`

### Methods inherited from interface org.springframework.beans.factory.DisposableBean

`destroy`

### Methods inherited from interface net.shibboleth.shared.component.IdentifiedComponent

`getId`

### Methods inherited from interface net.shibboleth.shared.component.InitializableComponent

`initialize, isInitialized`

### Methods inherited from interface net.shibboleth.idp.attribute.resolver.ResolverPlugin

`getActivationCondition, getAttributeDependencies, getDataConnectorDependencies, isPropagateResolutionExceptions, resolve`

## Field Details

### log

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

### scope

@Nullable private String scope
Scope value. Mutually exclusive with `scopeSource`

### scopeSource

@Nullable private String scopeSource
Scope source. Mutually exclusive with `scope`

### nonScopeAttributeDependencies

@NonnullAfterInit private Collection<ResolverAttributeDefinitionDependency> nonScopeAttributeDependencies
The attribute dependencies mine the scopeSource attribute (if there is one).

## Constructor Details

### ScopedAttributeDefinition

public ScopedAttributeDefinition()

## Method Details

### getScope

@Nullable public String getScope()
Get scope value.

Returns:
  Returns the scope.

### setScope

public void setScope(@Nonnull @NotEmpty String newScope)
Set the scope for this definition.

Parameters:
  `newScope` - what to set.

### getScopeSource

@Nullable public String getScopeSource()
Get scope source (attribute id).

Returns:
  Returns the scope.

### ensureNonScopeAttributeDependencies

@Nonnull private Collection<ResolverAttributeDefinitionDependency> ensureNonScopeAttributeDependencies()
Null safe getter for `nonScopeAttributeDependencies`.

Returns:
  Returns the nonScopeAttributeDependencies.

### setScopeSource

public void setScopeSource(@Nonnull @NotEmpty String attributeId)
Set the source of the scope for this definition.

Parameters:
  `attributeId` - what to set.

### getScopeFromSource

@Nonnull @NotEmpty private String getScopeFromSource(@Nonnull AttributeResolverWorkContext workContext) throws ResolutionException
Lookup the source attribute in the resolved list.

Parameters:
  `workContext` - where to look
Returns:
  the single string value contained in the attribute
Throws:
  `ResolutionException` - if the attribute was not there or if it didn't have only one string value

### doAttributeDefinitionResolve

@Nonnull protected IdPAttribute doAttributeDefinitionResolve(@Nonnull AttributeResolutionContext resolutionContext, @Nonnull AttributeResolverWorkContext workContext) throws ResolutionException
Creates and populates the values for the resolved attribute. Implementations should not set, or otherwise manage, the resolved attribute's display name, description or encoders. Nor should the resultant attribute be recorded in the given resolution context.

Specified by:
  `doAttributeDefinitionResolve` in class `AbstractAttributeDefinition`
Parameters:
  `resolutionContext` - current attribute resolution context
  `workContext` - current resolver work context
Returns:
  resolved attribute or null if nothing to resolve.
Throws:
  `ResolutionException` - thrown if there is a problem resolving and creating the attribute

### doInitialize

protected void doInitialize() throws ComponentInitializationException

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