Class AlgorithmRegistrySingleton

java.lang.Object
se.swedenconnect.security.algorithms.AlgorithmRegistrySingleton
All Implemented Interfaces:
AlgorithmRegistry

public class AlgorithmRegistrySingleton extends Object implements AlgorithmRegistry
A singleton for easy access to the AlgorithmRegistry.
Author:
Martin Lindström (martin@idsec.se), Stefan Santesson (stefan@idsec.se)
  • Method Details

    • getInstance

      public static AlgorithmRegistrySingleton getInstance()
      Gets the singleton instance.
      Returns:
      the singleton instance
    • setAlgorithmRegistry

      public static void setAlgorithmRegistry(AlgorithmRegistry algorithmRegistry)
      Assigns the AlgorithmRegistry instance to be used by this singleton. If no instance is assigned, a default implementation of the registry will be used.
      Parameters:
      algorithmRegistry - the registry to be used by the singleton
    • 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 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:
    • 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:
    • 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