Class AlgorithmRegistryImpl

java.lang.Object
se.swedenconnect.security.algorithms.impl.AlgorithmRegistryImpl
All Implemented Interfaces:
AlgorithmRegistry
Direct Known Subclasses:
StaticAlgorithmRegistry

public class AlgorithmRegistryImpl extends Object implements AlgorithmRegistry
Default implementation of the AlgorithmRegistry interface.
Author:
Martin Lindström (martin@idsec.se), Stefan Santesson (stefan@idsec.se)
  • Constructor Details

    • AlgorithmRegistryImpl

      public AlgorithmRegistryImpl()
      Default constructor.
    • AlgorithmRegistryImpl

      public AlgorithmRegistryImpl(List<Algorithm> registry)
      Constructor setting up the registry according to the supplied list.

      Note: a copy of the supplied registry is made.

      Parameters:
      registry - initial contents of the registry
  • Method Details

    • register

      public void register(Algorithm algorithm)
      Registers the given algorithm in the registry.
      Parameters:
      algorithm - the algorithm to register
    • unregister

      public void unregister(String algorithmUri)
      Removes the given algorithm from the registry.
      Parameters:
      algorithmUri - the algorithm URI
    • getAlgorithm

      public Algorithm getAlgorithm(String algorithmUri)
      Gets the algorithm based on its URI.
      Specified by:
      getAlgorithm in interface AlgorithmRegistry
      Parameters:
      algorithmUri - the algorithm URI
      Returns:
      the algorithm, or null if none is found
    • getAlgorithm

      public <T extends Algorithm> T getAlgorithm(String algorithmUri, Class<T> clazz)
      Gets an algorithm based on its URI and type.
      Specified by:
      getAlgorithm in interface AlgorithmRegistry
      Type Parameters:
      T - the algorithm type
      Parameters:
      algorithmUri - the algorithm URI
      clazz - the type representing the algorithm
      Returns:
      the algorithm, or null if none is found
    • getAlgorithm

      public <T extends Algorithm> T getAlgorithm(Predicate<Algorithm> predicate, Class<T> clazz)
      Gets the first algorithm that matches the given type and supplied predicate.

      If more than one algorithm matches the supplied predicate, the one with the lowest order is returned.

      Specified by:
      getAlgorithm in interface AlgorithmRegistry
      Parameters:
      predicate - the predicate to apply
      clazz - the type representing the algorithm
      Returns:
      an Algorithm or null if no algorithms in the registry matches
      See Also:
    • getAlgorithm

      public Algorithm getAlgorithm(Predicate<Algorithm> predicate)
      Gets the first algorithm that matches the supplied predicate.

      If more than one algorithm matches the supplied predicate, the one with the lowest order is returned.

      Specified by:
      getAlgorithm in interface AlgorithmRegistry
      Parameters:
      predicate - the predicate to apply
      Returns:
      an Algorithm or null if no algorithms in the registry matches
      See Also:
    • getAlgorithms

      public List<Algorithm> getAlgorithms(Predicate<Algorithm> predicate)
      Gets all algorithms that matches the supplied predicate.

      The list is sorted with the lowest algorithms with the lowest order index first.

      Specified by:
      getAlgorithms in interface AlgorithmRegistry
      Parameters:
      predicate - the predicate to apply
      Returns:
      a (possibly empty) list of Algorithm objects
    • getAlgorithms

      public <T extends Algorithm> List<T> getAlgorithms(Predicate<Algorithm> predicate, Class<T> clazz)
      Gets all algorithms that matches the given type and the supplied predicate.

      The list is sorted with the lowest algorithms with the lowest order index first.

      Specified by:
      getAlgorithms in interface AlgorithmRegistry
      Parameters:
      predicate - the predicate to apply
      clazz - the type representing the algorithm
      Returns:
      a (possibly empty) list of Algorithm objects