Class ChainingMetadataResolver
java.lang.Object
net.shibboleth.shared.component.AbstractInitializableComponent
net.shibboleth.shared.component.AbstractIdentifiedInitializableComponent
net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent
org.opensaml.saml.metadata.resolver.ChainingMetadataResolver
- All Implemented Interfaces:
Component,DestructableComponent,IdentifiableComponent,IdentifiedComponent,InitializableComponent,Resolver<EntityDescriptor,,CriteriaSet> ClearableMetadataResolver,MetadataResolver,RefreshableMetadataResolver
public class ChainingMetadataResolver
extends AbstractIdentifiableInitializableComponent
implements MetadataResolver, RefreshableMetadataResolver, ClearableMetadataResolver
A metadata provider that uses registered resolvers, in turn, to answer queries.
The Iterable of entity descriptors returned is the first non-null and non-empty Iterable found while iterating over
the registered resolvers in resolver list order.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Predicate<ProfileRequestContext>Activation condition.private DetectDuplicateEntityIDsStrategy for detecting duplicate entityIDs across resolvers.private final org.slf4j.LoggerClass logger.private List<MetadataResolver>Registered resolvers.private StringResolver type. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclear()Attempt to clear all data from the internal cache of the resolver.voidAttempt to clear data from the internal cache of the resolver for the specified entityID.collectEntityIDs(Iterable<EntityDescriptor> descriptors) Collect the unique entityIDs from the supplied iterable of entity descriptors.private voiddetectDuplicateEntityIDs(MetadataResolver resolver, CriteriaSet criteria, Set<String> resultEntityIDs, DetectDuplicateEntityIDs detectDuplicates) Perform duplicate entityID detection.Get an activation condition for this resolver.Get the strategy for detecting duplicate entityIDs across resolvers.Gets the reason the last refresh failed.Gets the time the last refresh cycle occurred.Gets the time the last successful refresh cycle occurred.Get the time that the currently available metadata was last updated.Gets the metadata filter applied to the metadata.Get an immutable the list of currently registered resolvers.getType()Gets the type of resolver for reporting or logging purposes.booleanGets whether the metadata returned by queries must be valid.voidrefresh()Refresh the data exposed by the resolver.resolve(CriteriaSet criteria) resolveSingle(CriteriaSet criteria) voidsetActivationCondition(Predicate<ProfileRequestContext> condition) Set an activation condition for this resolver.voidSet the strategy for detecting duplicate entityIDs across resolvers.voidsetMetadataFilter(MetadataFilter newFilter) Sets the metadata filter applied to the metadata.voidsetRequireValidMetadata(boolean requireValidMetadata) Sets whether the metadata returned by queries must be valid.voidsetResolvers(List<? extends MetadataResolver> newResolvers) Set the registered metadata resolvers.voidSets the type of this resolver for reporting/logging.Gets whether the last refresh cycle was successful.Methods inherited from class net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent
setIdMethods inherited from class net.shibboleth.shared.component.AbstractIdentifiedInitializableComponent
doInitialize, ensureId, getId, ifDestroyedThrowDestroyedComponentException, ifInitializedThrowUnmodifiabledComponentException, ifNotInitializedThrowUninitializedComponentExceptionMethods inherited from class net.shibboleth.shared.component.AbstractInitializableComponent
checkComponentActive, checkSetterPreconditions, destroy, doDestroy, initialize, isDestroyed, isInitializedMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.shibboleth.shared.component.IdentifiedComponent
getId
-
Field Details
-
log
@Nonnull private final org.slf4j.Logger logClass logger. -
resolverType
Resolver type. -
resolvers
Registered resolvers. -
detectDuplicateEntityIDs
Strategy for detecting duplicate entityIDs across resolvers. -
activationCondition
Activation condition.
-
-
Constructor Details
-
ChainingMetadataResolver
public ChainingMetadataResolver()Constructor.
-
-
Method Details
-
getType
Gets the type of resolver for reporting or logging purposes.- Specified by:
getTypein interfaceMetadataResolver- Returns:
- resolver type
-
setType
Sets the type of this resolver for reporting/logging.- Parameters:
type- type to set- Since:
- 5.0.0
-
getResolvers
Get an immutable the list of currently registered resolvers.- Returns:
- list of currently registered resolvers
-
setResolvers
public void setResolvers(@Nonnull List<? extends MetadataResolver> newResolvers) throws ResolverException Set the registered metadata resolvers.- Parameters:
newResolvers- the metadata resolvers to use- Throws:
ResolverException- thrown if there is a problem adding the metadata resolvers
-
getDetectDuplicateEntityIDs
Get the strategy for detecting duplicate entityIDs across resolvers.- Returns:
- the configured strategy
-
setDetectDuplicateEntityIDs
Set the strategy for detecting duplicate entityIDs across resolvers.- Parameters:
strategy- the strategy to configure
-
isRequireValidMetadata
public boolean isRequireValidMetadata()Gets whether the metadata returned by queries must be valid.At a minimum, metadata is valid only if the date expressed in the
validUntilattribute of the element and all its ancestral elements has not passed. Specific implementations may add additional constraints.- Specified by:
isRequireValidMetadatain interfaceMetadataResolver- Returns:
- whether the metadata returned by queries must be valid
-
setRequireValidMetadata
public void setRequireValidMetadata(boolean requireValidMetadata) Sets whether the metadata returned by queries must be valid.- Specified by:
setRequireValidMetadatain interfaceMetadataResolver- Parameters:
requireValidMetadata- whether the metadata returned by queries must be valid
-
getMetadataFilter
Gets the metadata filter applied to the metadata.- Specified by:
getMetadataFilterin interfaceMetadataResolver- Returns:
- the metadata filter applied to the metadata
-
setMetadataFilter
Sets the metadata filter applied to the metadata.- Specified by:
setMetadataFilterin interfaceMetadataResolver- Parameters:
newFilter- the metadata filter applied to the metadata
-
getActivationCondition
Get an activation condition for this resolver.- Returns:
- activation condition
-
setActivationCondition
Set an activation condition for this resolver.- Parameters:
condition- condition to set
-
collectEntityIDs
Collect the unique entityIDs from the supplied iterable of entity descriptors.- Parameters:
descriptors- the input objects- Returns:
- the unique entityIDs from the supplied descriptors
-
clear
Attempt to clear all data from the internal cache of the resolver.- Specified by:
clearin interfaceClearableMetadataResolver- Throws:
ResolverException- if the clear operation was unsuccessful
-
clear
Attempt to clear data from the internal cache of the resolver for the specified entityID.- Specified by:
clearin interfaceClearableMetadataResolver- Parameters:
entityID- the target entityID- Throws:
ResolverException- if the clear operation was unsuccessful
-
refresh
Refresh the data exposed by the resolver.An implementation of this method should typically be either
synchronizedor make use other locking mechanisms to protect against concurrent access.- Specified by:
refreshin interfaceRefreshableMetadataResolver- Throws:
ResolverException- if the refresh operation was unsuccessful
-
getLastUpdate
Get the time that the currently available metadata was last updated. Note, this may be different than the time retrieved byRefreshableMetadataResolver.getLastRefresh()is the metadata was known not to have changed during the last refresh cycle. We iterate over all the children and return the earliest instant or null if one of them hasn't ever updated.- Specified by:
getLastUpdatein interfaceRefreshableMetadataResolver- Returns:
- time when the currently metadata was last updated, null if metadata has never successfully been read in
-
getLastRefresh
Gets the time the last refresh cycle occurred. We iterate over all the children and return the earliest instant or null if one of them hasn't ever refreshed.- Specified by:
getLastRefreshin interfaceRefreshableMetadataResolver- Returns:
- time the last refresh cycle occurred
-
getLastSuccessfulRefresh
Gets the time the last successful refresh cycle occurred. We iterate over all the children and return the earliest instant or null if one of them hasn't ever refreshed successfully.- Specified by:
getLastSuccessfulRefreshin interfaceRefreshableMetadataResolver- Returns:
- time the last successful refresh cycle occurred
-
wasLastRefreshSuccess
Gets whether the last refresh cycle was successful. We iterate over all children - a failure of any is a failure.- Specified by:
wasLastRefreshSuccessin interfaceRefreshableMetadataResolver- Returns:
- true if last refresh cycle was successful, false if not
-
getLastFailureCause
Gets the reason the last refresh failed. We iterate over all children and return the first failure we find.- Specified by:
getLastFailureCausein interfaceRefreshableMetadataResolver- Returns:
- reason the last refresh failed or null if the last refresh was successful
-