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

# Class AbstractSearchDataConnector<T1 extends ExecutableSearch,T2 extends MappingStrategy<?>>

java.lang.Object
net.shibboleth.shared.component.AbstractInitializableComponent
net.shibboleth.shared.component.AbstractIdentifiedInitializableComponent
net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent
net.shibboleth.idp.attribute.resolver.AbstractResolverPlugin<Map<String,IdPAttribute>>
net.shibboleth.idp.attribute.resolver.AbstractDataConnector
net.shibboleth.idp.attribute.resolver.dc.impl.AbstractSearchDataConnector<T1,T2>

Type Parameters:
  `T1` - type of executable search
  `T2` - type of mapping strategy

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

Direct Known Subclasses:
  `HTTPDataConnector`, `LDAPDataConnector`, `RDBMSDataConnector`, `SAMLDataConnector`, `ScriptedDataConnector`, `StorageServiceDataConnector`

public abstract class AbstractSearchDataConnector<T1 extends ExecutableSearch,T2 extends MappingStrategy<?>> extends AbstractDataConnector
A `DataConnector` containing functionality common to data connectors that retrieve attribute data by searching a data source.

## Field Summary

Fields
Modifier and Type
Field
Description
`private Validator`
`connectorValidator`
Validator for validating this data connector.
`private boolean`
`failFastInitialize`
Does DataConnector fail fast on Initialize.
`private final org.slf4j.Logger`
`log`
Class logger.
`private T2`
`mappingStrategy`
Strategy for mapping search results to a collection of `IdPAttribute`s.
`private Cache<String,Map<String,IdPAttribute>>`
`resultsCache`
Query result cache.
`private ExecutableSearchBuilder<T1>`
`searchBuilder`
Builder used to create executable searches.

## Constructor Summary

Constructors
Constructor
Description
`AbstractSearchDataConnector()`

## Method Summary

Modifier and Type
Method
Description
`protected Map<String,IdPAttribute>`
`doDataConnectorResolve(AttributeResolutionContext resolutionContext, AttributeResolverWorkContext workContext)`
Retrieves a collection of attributes from some data source.
`protected void`
`doInitialize()`
`ExecutableSearchBuilder<T1>`
`getExecutableSearchBuilder()`
Gets the builder used to create executable searches.
`T2`
`getMappingStrategy()`
Gets the strategy for mapping from search results to a collection of `IdPAttribute`s.
`Cache<String,Map<String,IdPAttribute>>`
`getResultsCache()`
Gets the cache used to cache search results.
`Validator`
`getValidator()`
Gets the validator used to validate this connector.
`boolean`
`isFailFastInitialize()`
Does the data connector fails fast.
`protected abstract Map<String,IdPAttribute>`
`retrieveAttributes(T1 executable)`
Attempts to retrieve attributes from the data source.
`protected Map<String,IdPAttribute>`
`retrieveAttributes(T1 executable, AttributeResolverWorkContext workContext)`
A version of `retrieveAttributes(ExecutableSearch)` that also gets passed the work context.
`void`
`setExecutableSearchBuilder(ExecutableSearchBuilder<T1> builder)`
Sets the builder used to create the executable searches.
`void`
`setFailFastInitialize(boolean what)`
Whether the data connector fails fast (on initialize).
`void`
`setMappingStrategy(T2 strategy)`
Sets the strategy for mapping from search results to a collection of `IdPAttribute`s.
`void`
`setResultsCache(Cache<String,Map<String,IdPAttribute>> cache)`
Sets the cache used to cache search results.
`void`
`setValidator(Validator validator)`
Sets the validator used to validate this connector.

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

`doResolve, getExportAttributes, getFailoverDataConnectorId, getLastFail, getLastSuccess, getLogPrefix, getNoRetryDelay, setExportAttributes, setFailoverDataConnectorId, setLastFail, setLastSuccess, setNoRetryDelay`

### 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.

### searchBuilder

@NonnullAfterInit private ExecutableSearchBuilder<T1 extends ExecutableSearch> searchBuilder
Builder used to create executable searches.

### connectorValidator

@NonnullAfterInit private Validator connectorValidator
Validator for validating this data connector.

### mappingStrategy

@NonnullAfterInit private T2 extends MappingStrategy<?> mappingStrategy
Strategy for mapping search results to a collection of `IdPAttribute`s.

### resultsCache

@Nullable private Cache<String,Map<String,IdPAttribute>> resultsCache
Query result cache.

### failFastInitialize

private boolean failFastInitialize
Does DataConnector fail fast on Initialize.

## Constructor Details

### AbstractSearchDataConnector

public AbstractSearchDataConnector()

## Method Details

### getExecutableSearchBuilder

@NonnullAfterInit public ExecutableSearchBuilder<T1> getExecutableSearchBuilder()
Gets the builder used to create executable searches.

Returns:
  builder used to create the executable searches

### setExecutableSearchBuilder

public void setExecutableSearchBuilder(@Nonnull ExecutableSearchBuilder<T1> builder)
Sets the builder used to create the executable searches.

Parameters:
  `builder` - builder used to create the executable searches

### getValidator

@NonnullAfterInit public Validator getValidator()
Gets the validator used to validate this connector.

Returns:
  validator used to validate this connector

### setValidator

public void setValidator(@Nonnull Validator validator)
Sets the validator used to validate this connector.

Parameters:
  `validator` - used to validate this connector

### getMappingStrategy

@NonnullAfterInit public T2 getMappingStrategy()
Gets the strategy for mapping from search results to a collection of `IdPAttribute`s.

Returns:
  strategy for mapping from search results to a collection of `IdPAttribute`s

### setMappingStrategy

public void setMappingStrategy(@Nonnull T2 strategy)
Sets the strategy for mapping from search results to a collection of `IdPAttribute`s.

Parameters:
  `strategy` - strategy for mapping from search results to a collection of `IdPAttribute`s

### getResultsCache

@Nullable public Cache<String,Map<String,IdPAttribute>> getResultsCache()
Gets the cache used to cache search results.

Returns:
  cache used to cache search results

### setResultsCache

public void setResultsCache(@Nullable Cache<String,Map<String,IdPAttribute>> cache)
Sets the cache used to cache search results. Note, all entries in the cache are invalidated prior to use.

Parameters:
  `cache` - cache used to cache search results

### retrieveAttributes

@Nullable @Unmodifiable @NotLive protected abstract Map<String,IdPAttribute> retrieveAttributes(@Nonnull T1 executable) throws ResolutionException
Attempts to retrieve attributes from the data source.

Parameters:
  `executable` - used to retrieve data from the data source
Returns:
  attributes
Throws:
  `ResolutionException` - thrown if there is a problem retrieving data from the data source

### retrieveAttributes

@Nullable @Unmodifiable @NotLive protected Map<String,IdPAttribute> retrieveAttributes(@Nonnull T1 executable, @Nonnull AttributeResolverWorkContext workContext) throws ResolutionException
A version of `retrieveAttributes(ExecutableSearch)` that also gets passed the work context.

Parameters:
  `executable` - used to retrieve data from the data source
  `workContext` - the work context for the operation.
Returns:
  attributes
Throws:
  `ResolutionException` - thrown if there is a problem retrieving data from the data source

### doDataConnectorResolve

@Nullable @Unmodifiable @NotLive protected Map<String,IdPAttribute> doDataConnectorResolve(@Nonnull AttributeResolutionContext resolutionContext, @Nonnull AttributeResolverWorkContext workContext) throws ResolutionException
Retrieves a collection of attributes from some data source.

Specified by:
  `doDataConnectorResolve` in class `AbstractDataConnector`
Parameters:
  `resolutionContext` - current resolution context
  `workContext` - current resolver work context
Returns:
  collected attributes indexed by attribute ID
Throws:
  `ResolutionException` - thrown if there is a problem resolving the attributes

### doInitialize

protected void doInitialize() throws ComponentInitializationException

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

### isFailFastInitialize

public boolean isFailFastInitialize()
Does the data connector fails fast.

Returns:
  Returns whether the data connector fails fast (on initialize)

### setFailFastInitialize

public void setFailFastInitialize(boolean what)
Whether the data connector fails fast (on initialize).

Parameters:
  `what` - what to set