Class TemplateAttributeDefinition
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.TemplateAttributeDefinition
- All Implemented Interfaces:
AttributeDefinition,ResolverPlugin<IdPAttribute>,Component,DestructableComponent,IdentifiableComponent,IdentifiedComponent,InitializableComponent,UnmodifiableComponent,DisposableBean
An attribute definition that constructs its values based on the values of its dependencies using the Velocity
Template Language. Dependencies may have multiple values, however multiple dependencies must have the same number of
values. In the case of multi-valued dependencies, the template will be evaluated multiples times, iterating over each
dependency.
The template is inserted into the engine with a unique name derived from this class and from the id supplied for this attribute.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate intaddAttributeValues(String attributeName, List<IdPAttributeValue> attributeValues, Map<String, Iterator<IdPAttributeValue>> sourceValues, int curValueCount) Add values for a given attribute to the source Map.protected IdPAttributedoAttributeDefinitionResolve(AttributeResolutionContext resolutionContext, AttributeResolverWorkContext workContext) Creates and populates the values for the resolved attribute.protected voidGet the template text to be evaluated.Get the template text to be evaluated.org.apache.velocity.app.VelocityEngineGet theVelocityEngineto be used.voidsetTemplateText(String velocityTemplate) Set the literal text of the template to be evaluated.private intsetupSourceValues(AttributeResolverWorkContext workContext, Map<String, Iterator<IdPAttributeValue>> sourceValues) Set up a map which can be used to populate the template.voidsetVelocityEngine(org.apache.velocity.app.VelocityEngine velocityEngine) Set theVelocityEngineto be used.Methods inherited from class net.shibboleth.idp.attribute.resolver.AbstractAttributeDefinition
doResolve, getLogPrefix, isDependencyOnly, isPreRequested, setDependencyOnly, setPreRequestedMethods inherited from class net.shibboleth.idp.attribute.resolver.AbstractResolverPlugin
doDestroy, equals, getActivationCondition, getAttributeDependencies, getDataConnectorDependencies, hashCode, isPropagateResolutionExceptions, resolve, setActivationCondition, setAttributeDependencies, setDataConnectorDependencies, setPropagateResolutionExceptionsMethods inherited from class net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent
setIdMethods inherited from class net.shibboleth.shared.component.AbstractIdentifiedInitializableComponent
ensureId, getId, ifDestroyedThrowDestroyedComponentException, ifInitializedThrowUnmodifiabledComponentException, ifNotInitializedThrowUninitializedComponentExceptionMethods inherited from class net.shibboleth.shared.component.AbstractInitializableComponent
checkComponentActive, checkSetterPreconditions, destroy, initialize, isDestroyed, isInitializedMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.shibboleth.shared.component.DestructableComponent
destroy, isDestroyedMethods inherited from interface org.springframework.beans.factory.DisposableBean
destroyMethods inherited from interface net.shibboleth.shared.component.IdentifiedComponent
getIdMethods inherited from interface net.shibboleth.shared.component.InitializableComponent
initialize, isInitializedMethods 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. -
template
Template to be evaluated. -
templateText
Template (as Text) to be evaluated. -
engine
VelocityEngine.
-
-
Constructor Details
-
TemplateAttributeDefinition
public TemplateAttributeDefinition()
-
-
Method Details
-
getTemplate
Get the template text to be evaluated.- Returns:
- the template
-
getTemplateText
Get the template text to be evaluated.- Returns:
- the template
-
setTemplateText
Set the literal text of the template to be evaluated.- Parameters:
velocityTemplate- template to be evaluated
-
getVelocityEngine
Get theVelocityEngineto be used.- Returns:
- the template
-
setVelocityEngine
public void setVelocityEngine(@Nonnull org.apache.velocity.app.VelocityEngine velocityEngine) Set theVelocityEngineto be used.- Parameters:
velocityEngine- engine to be used
-
doInitialize
- Overrides:
doInitializein classAbstractAttributeDefinition- Throws:
ComponentInitializationException
-
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:
doAttributeDefinitionResolvein 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
-
addAttributeValues
private int addAttributeValues(@Nonnull String attributeName, @Nullable List<IdPAttributeValue> attributeValues, @Nonnull Map<String, Iterator<IdPAttributeValue>> sourceValues, int curValueCount) throws ResolutionExceptionAdd values for a given attribute to the source Map. Helper function forsetupSourceValues(AttributeResolverWorkContext, Map)- Parameters:
attributeName- the attribute name under considerationattributeValues- The values to add.sourceValues- the Map to add tocurValueCount- how many values to expect. 0 means never set- Returns:
- the number of values to expect, 0 means still not set.
- Throws:
ResolutionException- if there is a mismatched count of attributes
-
setupSourceValues
private int setupSourceValues(@Nonnull AttributeResolverWorkContext workContext, @Nonnull Map<String, Iterator<IdPAttributeValue>> sourceValues) throws ResolutionExceptionSet up a map which can be used to populate the template. The key is the attribute name and the value is the iterator to give all the names. We also return how deep the iteration will be and throw an exception if there is a mismatch in number of elements in any attribute.- Parameters:
workContext- source for dependenciessourceValues- to populate with the attribute iterators- Returns:
- how many values in the attributes
- Throws:
ResolutionException- if there is a mismatched count of attributes
-