Class AbstractBatchMetadataResolver
- java.lang.Object
-
- net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
-
- net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent
-
- net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent
-
- org.opensaml.saml.metadata.resolver.impl.AbstractMetadataResolver
-
- org.opensaml.saml.metadata.resolver.impl.AbstractBatchMetadataResolver
-
- All Implemented Interfaces:
Iterable<EntityDescriptor>,Component,DestructableComponent,IdentifiableComponent,IdentifiedComponent,InitializableComponent,Resolver<EntityDescriptor,CriteriaSet>,IterableMetadataSource,BatchMetadataResolver,MetadataResolver
- Direct Known Subclasses:
AbstractReloadingMetadataResolver,DOMMetadataResolver
public abstract class AbstractBatchMetadataResolver extends AbstractMetadataResolver implements BatchMetadataResolver, IterableMetadataSource
Abstract subclass for metadata resolvers that process and resolve metadata at a given point in time from a single metadata source document.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classAbstractBatchMetadataResolver.BatchEntityBackingStoreSpecialized entity backing store implementation for batch metadata resolvers.-
Nested classes/interfaces inherited from class org.opensaml.saml.metadata.resolver.impl.AbstractMetadataResolver
AbstractMetadataResolver.EntityBackingStore
-
-
Field Summary
Fields Modifier and Type Field Description private booleancacheSourceMetadataFlag indicating whether to cache the original source metadata document.private Set<MetadataIndex>indexesThe set of indexes configured.private org.slf4j.LoggerlogClass logger.private booleanresolveViaPredicatesOnlyFlag indicating whether resolution may be performed solely by applying predicates to the entire metadata collection.
-
Constructor Summary
Constructors Constructor Description AbstractBatchMetadataResolver()Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected AbstractBatchMetadataResolver.BatchEntityBackingStorecreateNewBackingStore()Create a new backing store instance for EntityDescriptor data.protected AbstractBatchMetadataResolver.BatchEntityBackingStoregetBackingStore()Get the EntityDescriptor backing store currently in use by the metadata resolver.protected XMLObjectgetCachedFilteredMetadata()Convenience method for getting the current effective cached filtered metadata.protected XMLObjectgetCachedOriginalMetadata()Convenience method for getting the current effective cached original metadata.Set<MetadataIndex>getIndexes()Get the configured indexes.InstantgetRootValidUntil()protected voidindexEntityDescriptor(EntityDescriptor entityDescriptor, AbstractMetadataResolver.EntityBackingStore backingStore)Index the specified entity descriptor, updating the specified entity backing store instance as necessary.protected voidinitMetadataResolver()Subclasses should override this method to perform any initialization logic necessary.protected booleanisCacheSourceMetadata()Get whether to cache the original source metadata document.booleanisResolveViaPredicatesOnly()Get the flag indicating whether resolution may be performed solely by applying predicates to the entire metadata collection.BooleanisRootValid()Iterator<EntityDescriptor>iterator()protected Optional<Set<EntityDescriptor>>lookupByIndexes(CriteriaSet criteria)Resolve the set up descriptors based on the indexes currently held.protected AbstractBatchMetadataResolver.BatchEntityBackingStorepreProcessNewMetadata(XMLObject root)Process the specified new metadata document, including metadata filtering and return its data in a new entity backing store instance.Iterable<EntityDescriptor>resolve(CriteriaSet criteria)protected voidsetCacheSourceMetadata(boolean flag)Set whether to cache the original source metadata document.voidsetIndexes(Set<MetadataIndex> newIndexes)Set the configured indexes.voidsetResolveViaPredicatesOnly(boolean flag)Set the flag indicating whether resolution may be performed solely by applying predicates to the entire metadata collection.-
Methods inherited from class org.opensaml.saml.metadata.resolver.impl.AbstractMetadataResolver
doDestroy, doInitialize, filterMetadata, getCriterionPredicateRegistry, getLogPrefix, getMetadataFilter, getParserPool, getUnmarshallerFactory, isFailFastInitialization, isRequireValidMetadata, isSatisfyAnyPredicates, isUseDefaultPredicateRegistry, isValid, lookupEntityID, lookupIndexedEntityID, newFilterContext, predicateFilterCandidates, preProcessEntitiesDescriptor, preProcessEntityDescriptor, releaseMetadataDOM, removeByEntityID, resolveSingle, setBackingStore, setCriterionPredicateRegistry, setFailFastInitialization, setMetadataFilter, setParserPool, setRequireValidMetadata, setSatisfyAnyPredicates, setUseDefaultPredicateRegistry, unmarshallMetadata
-
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, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.shibboleth.utilities.java.support.component.IdentifiedComponent
getId
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Methods inherited from interface org.opensaml.saml.metadata.resolver.MetadataResolver
getMetadataFilter, isRequireValidMetadata, setMetadataFilter, setRequireValidMetadata
-
Methods inherited from interface net.shibboleth.utilities.java.support.resolver.Resolver
resolveSingle
-
-
-
-
Field Detail
-
log
private final org.slf4j.Logger log
Class logger.
-
cacheSourceMetadata
private boolean cacheSourceMetadata
Flag indicating whether to cache the original source metadata document.
-
indexes
private Set<MetadataIndex> indexes
The set of indexes configured.
-
resolveViaPredicatesOnly
private boolean resolveViaPredicatesOnly
Flag indicating whether resolution may be performed solely by applying predicates to the entire metadata collection. Defaults to false.
-
-
Method Detail
-
iterator
public Iterator<EntityDescriptor> iterator()
- Specified by:
iteratorin interfaceIterable<EntityDescriptor>
-
isCacheSourceMetadata
protected boolean isCacheSourceMetadata()
Get whether to cache the original source metadata document.- Returns:
- true if source should be cached, false otherwise
-
setCacheSourceMetadata
protected void setCacheSourceMetadata(boolean flag)
Set whether to cache the original source metadata document.- Parameters:
flag- true if source should be cached, false otherwise
-
getIndexes
@Nonnull @NonnullElements @Unmodifiable @NotLive public Set<MetadataIndex> getIndexes()
Get the configured indexes.- Returns:
- the set of configured indexes
-
setIndexes
public void setIndexes(@Nullable Set<MetadataIndex> newIndexes)Set the configured indexes.- Parameters:
newIndexes- the new indexes to set
-
isResolveViaPredicatesOnly
public boolean isResolveViaPredicatesOnly()
Get the flag indicating whether resolution may be performed solely by applying predicates to the entire metadata collection.- Returns:
- true if resolution may be attempted solely via predicates, false if not
-
setResolveViaPredicatesOnly
public void setResolveViaPredicatesOnly(boolean flag)
Set the flag indicating whether resolution may be performed solely by applying predicates to the entire metadata collection.- Parameters:
flag- true if resolution may be attempted solely via predicates, false if not
-
getRootValidUntil
@Nullable public Instant getRootValidUntil()
- Specified by:
getRootValidUntilin interfaceBatchMetadataResolver
-
isRootValid
@Nullable public Boolean isRootValid()
- Specified by:
isRootValidin interfaceBatchMetadataResolver
-
resolve
@Nonnull public Iterable<EntityDescriptor> resolve(CriteriaSet criteria) throws ResolverException
- Specified by:
resolvein interfaceResolver<EntityDescriptor,CriteriaSet>- Throws:
ResolverException
-
lookupByIndexes
@Nonnull @NonnullElements protected Optional<Set<EntityDescriptor>> lookupByIndexes(@Nonnull CriteriaSet criteria)
Resolve the set up descriptors based on the indexes currently held.- Parameters:
criteria- the criteria set to process- Returns:
- an
Optionalinstance containing the descriptors resolved via indexes, and based on the input criteria set. If the Optional instance indicates 'absent', there were either no indexes configured, or no criteria were applicable/understood by any indexes. If 'present' is indicated, then there were applicable/understood criteria, and the wrapped set contains the indexed data, which may be empty.
-
indexEntityDescriptor
protected void indexEntityDescriptor(@Nonnull EntityDescriptor entityDescriptor, @Nonnull AbstractMetadataResolver.EntityBackingStore backingStore)Index the specified entity descriptor, updating the specified entity backing store instance as necessary.- Overrides:
indexEntityDescriptorin classAbstractMetadataResolver- Parameters:
entityDescriptor- the target entity descriptor to processbackingStore- the backing store instance to update
-
createNewBackingStore
@Nonnull protected AbstractBatchMetadataResolver.BatchEntityBackingStore createNewBackingStore()
Create a new backing store instance for EntityDescriptor data. Subclasses may override to return a more specialized subclass type. Note this method does not make the returned backing store the effective one in use. The caller is responsible for callingAbstractMetadataResolver.setBackingStore(EntityBackingStore)to make it the effective instance in use.- Overrides:
createNewBackingStorein classAbstractMetadataResolver- Returns:
- the new backing store instance
-
getBackingStore
@Nonnull protected AbstractBatchMetadataResolver.BatchEntityBackingStore getBackingStore()
Get the EntityDescriptor backing store currently in use by the metadata resolver.- Overrides:
getBackingStorein classAbstractMetadataResolver- Returns:
- the current effective entity backing store
-
initMetadataResolver
protected void initMetadataResolver() throws ComponentInitializationExceptionSubclasses should override this method to perform any initialization logic necessary. Default implementation is a no-op.- Overrides:
initMetadataResolverin classAbstractMetadataResolver- Throws:
ComponentInitializationException- thrown if there is a problem initializing the provider
-
getCachedOriginalMetadata
@Nullable protected XMLObject getCachedOriginalMetadata()
Convenience method for getting the current effective cached original metadata.Note: may or may not be the same as that obtained from
getCachedFilteredMetadata(), depending on what metadata filtering produced from the original metadata document.- Returns:
- the current effective cached metadata document
-
getCachedFilteredMetadata
@Nullable protected XMLObject getCachedFilteredMetadata()
Convenience method for getting the current effective cached filtered metadata.Note: may or may not be the same as that obtained from
getCachedOriginalMetadata(), depending on what metadata filtering produced from the original metadata document.- Returns:
- the current effective cached metadata document
-
preProcessNewMetadata
@Nonnull protected AbstractBatchMetadataResolver.BatchEntityBackingStore preProcessNewMetadata(@Nonnull XMLObject root) throws FilterException
Process the specified new metadata document, including metadata filtering and return its data in a new entity backing store instance.- Parameters:
root- the root of the new metadata document being processed- Returns:
- the new backing store instance
- Throws:
FilterException- if there is a problem filtering the metadata
-
-