Package net.shibboleth.shared.resolver

# Class CriterionPredicateRegistry<T>

java.lang.Object
net.shibboleth.shared.resolver.CriterionPredicateRegistry<T>

Type Parameters:
  `T` - the target type which the returned predicates evaluate

public class CriterionPredicateRegistry<T> extends Object
A registry which manages mappings from types of `Criterion` to types of `Predicate` which can evaluate that criterion's data against a particular target type.

Each predicate's implementation that is registered MUST implement a single-arg constructor which takes an instance of the `Criterion` to be evaluated. The predicate instance is instantiated reflectively based on this requirement.

## Field Summary

Fields
Modifier and Type
Field
Description
`private org.slf4j.Logger`
`log`
Logger.
`private Map<Class<? extends Criterion>,Class<? extends Predicate<T>>>`
`registry`
Storage for the registry mappings.

## Constructor Summary

Constructors
Constructor
Description
`CriterionPredicateRegistry()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`clearRegistry()`
Clear all mappings from the registry.
`void`
`deregister(Class<? extends Criterion> criterionClass)`
Deregister a criterion-evaluator mapping.
`Predicate<T>`
`getPredicate(Criterion criterion)`
Get an instance of `Predicate` which can evaluate the supplied criterion's requirements against a target of the specified type.
`void`
`loadMappings(String classpathResource)`
Load criterion -> predicate mappings from a classpath resource.
`void`
`loadMappings(Properties mappings)`
Load a set of criterion -> predicate mappings from the supplied properties set.
`protected Class<? extends Predicate<T>>`
`lookup(Class<? extends Criterion> clazz)`
Lookup the predicate class type which is registered for the specified Criterion class.
`void`
`register(Class<? extends Criterion> criterionClass, Class<? extends Predicate<T>> predicateClass)`
Register a `Predicate` class for a criterion class.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### log

@Nonnull private org.slf4j.Logger log
Logger.

### registry

@Nonnull private Map<Class<? extends Criterion>,Class<? extends Predicate<T>>> registry
Storage for the registry mappings.

## Constructor Details

### CriterionPredicateRegistry

public CriterionPredicateRegistry()
Constructor.

## Method Details

### getPredicate

@Nullable public Predicate<T> getPredicate(@Nonnull Criterion criterion) throws ResolverException
Get an instance of `Predicate` which can evaluate the supplied criterion's requirements against a target of the specified type.

Parameters:
  `criterion` - the criterion to be evaluated
Returns:
  an predicate instance representing the specified criterion's requirements
Throws:
  `ResolverException` - thrown if there is an error reflectively instantiating a new instance of the predicate type based on class information stored in the registry

### lookup

@Nullable protected Class<? extends Predicate<T>> lookup(@Nonnull Class<? extends Criterion> clazz)
Lookup the predicate class type which is registered for the specified Criterion class.

Parameters:
  `clazz` - the Criterion class subtype to lookup
Returns:
  the registered predicate class type

### register

public void register(@Nonnull Class<? extends Criterion> criterionClass, @Nonnull Class<? extends Predicate<T>> predicateClass)
Register a `Predicate` class for a criterion class.

Parameters:
  `criterionClass` - class subtype of `Criterion`
  `predicateClass` - the predicate class type

### deregister

public void deregister(@Nonnull Class<? extends Criterion> criterionClass)
Deregister a criterion-evaluator mapping.

Parameters:
  `criterionClass` - class subtype of `Criterion`

### clearRegistry

public void clearRegistry()
Clear all mappings from the registry.

### loadMappings

public void loadMappings(@Nonnull String classpathResource)
Load criterion -> predicate mappings from a classpath resource.

Parameters:
  `classpathResource` - the classpath resource path from which to load mapping properites

### loadMappings

public void loadMappings(@Nonnull Properties mappings)
Load a set of criterion -> predicate mappings from the supplied properties set.

Parameters:
  `mappings` - properties set where the key is the criterion class name, the value is the predicate class name