Class ScriptedAttributeDefinition
java.lang.Object
net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent
net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent
net.shibboleth.idp.attribute.resolver.AbstractResolverPlugin<IdPAttribute>
net.shibboleth.idp.attribute.resolver.AbstractAttributeDefinition
net.shibboleth.idp.attribute.resolver.ad.impl.ScriptedAttributeDefinition
- All Implemented Interfaces:
AttributeDefinition
,ResolverPlugin<IdPAttribute>
,Component
,DestructableComponent
,IdentifiableComponent
,IdentifiedComponent
,InitializableComponent
,UnmodifiableComponent
,DisposableBean
An
AttributeDefinition
that executes a script in order to populate the
values of the generated attribute.
The evaluated script has access to the following information:
- A script attribute whose name is the ID of this attribute definition and whose value is a newly constructed
IdPAttribute
. - A script attribute whose name is
context
and whose value is the currentAttributeResolutionContext
- A script attribute for every attribute produced by the dependencies of this attribute definition. The name of the
script attribute is the ID of the
IdPAttribute
and its value is theList
ofIdPAttributeValue
for the attribute.
The evaluated script should populate the values of the newly constructed IdPAttribute
mentioned above. No
other information from the script will be taken in to account.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate class
Evaluator bound to the AttributeDefinition semantic. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Object
The custom object we inject into all scripts.private final org.slf4j.Logger
Class logger.Strategy used to locate theProfileRequestContext
to use.private Function<ProfileRequestContext,
SubjectContext> Strategy used to locate theSubjectContext
to use.private EvaluableScript
Script to be evaluated.Evaluator. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected IdPAttribute
doAttributeDefinitionResolve
(AttributeResolutionContext resolutionContext, AttributeResolverWorkContext workContext) Creates and populates the values for the resolved attribute.protected void
Return the custom (externally provided) object.Gets the script to be evaluated.void
setCustomObject
(Object object) Set the custom (externally provided) object.void
setProfileRequestContextLookupStrategy
(Function<AttributeResolutionContext, ProfileRequestContext> strategy) Set the strategy used to locate theProfileRequestContext
associated with a givenAttributeResolutionContext
.void
setScript
(EvaluableScript definitionScript) Sets the script to be evaluated.void
Set the strategy used to locate theSubjectContext
associated with a givenAttributeResolutionContext
.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
addDisplayInformation, doDestroy, equals, getActivationCondition, getAttributeDependencies, getDataConnectorDependencies, getProfileContextStrategy, hashCode, isPropagateResolutionExceptions, isSuppressDisplayInformation, resolve, setActivationCondition, setAttributeDependencies, setDataConnectorDependencies, setProfileContextStrategy, setPropagateResolutionExceptions, setSuppressDisplayInformation
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent
setId
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent
getId
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
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.utilities.java.support.component.DestructableComponent
destroy, isDestroyed
Methods inherited from interface org.springframework.beans.factory.DisposableBean
destroy
Methods inherited from interface net.shibboleth.utilities.java.support.component.IdentifiedComponent
getId
Methods inherited from interface net.shibboleth.utilities.java.support.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 logClass logger. -
script
Script to be evaluated. -
scriptEvaluator
@NonnullAfterInit private ScriptedAttributeDefinition.AttributeDefinitionScriptEvaluator scriptEvaluatorEvaluator. -
prcLookupStrategy
Strategy used to locate theProfileRequestContext
to use. -
scLookupStrategy
Strategy used to locate theSubjectContext
to use. -
customObject
The custom object we inject into all scripts.
-
-
Constructor Details
-
ScriptedAttributeDefinition
public ScriptedAttributeDefinition()Constructor.
-
-
Method Details
-
getCustomObject
Return the custom (externally provided) object.- Returns:
- the custom object
-
setCustomObject
Set the custom (externally provided) object.- Parameters:
object
- the custom object
-
getScript
Gets the script to be evaluated.- Returns:
- the script to be evaluated
-
setScript
Sets the script to be evaluated.- Parameters:
definitionScript
- the script to be evaluated
-
setProfileRequestContextLookupStrategy
public void setProfileRequestContextLookupStrategy(@Nonnull Function<AttributeResolutionContext, ProfileRequestContext> strategy) Set the strategy used to locate theProfileRequestContext
associated with a givenAttributeResolutionContext
.- Parameters:
strategy
- strategy used to locate theProfileRequestContext
associated with a givenAttributeResolutionContext
-
setSubjectContextLookupStrategy
public void setSubjectContextLookupStrategy(@Nonnull Function<ProfileRequestContext, SubjectContext> strategy) Set the strategy used to locate theSubjectContext
associated with a givenAttributeResolutionContext
.- Parameters:
strategy
- strategy used to locate theSubjectContext
associated with a givenAttributeResolutionContext
-
doInitialize
- Overrides:
doInitialize
in classAbstractAttributeDefinition
- Throws:
ComponentInitializationException
-
doAttributeDefinitionResolve
@Nullable 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 classAbstractAttributeDefinition
- Parameters:
resolutionContext
- current attribute resolution contextworkContext
- 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
-