Class NamedSpiManager<T>


  • public final class NamedSpiManager<T>
    extends java.lang.Object
    This class is internal and is hence not for public use. Its APIs are unstable and can change at any time.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.concurrent.ConcurrentMap<java.lang.String,​java.util.Optional<T>> nameToImplementation  
      private java.util.Map<java.lang.String,​java.util.function.Supplier<T>> nameToProvider  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private NamedSpiManager​(java.util.Map<java.lang.String,​java.util.function.Supplier<T>> nameToProvider)  
    • Field Detail

      • nameToProvider

        private final java.util.Map<java.lang.String,​java.util.function.Supplier<T>> nameToProvider
      • nameToImplementation

        private final java.util.concurrent.ConcurrentMap<java.lang.String,​java.util.Optional<T>> nameToImplementation
    • Constructor Detail

      • NamedSpiManager

        private NamedSpiManager​(java.util.Map<java.lang.String,​java.util.function.Supplier<T>> nameToProvider)
    • Method Detail

      • create

        static <T> NamedSpiManager<T> create​(java.util.Map<java.lang.String,​java.util.function.Supplier<T>> nameToProvider)
      • getByName

        @Nullable
        public T getByName​(java.lang.String name)
        Return an implementation by name, invoking the supplier if not previously invoked.
      • tryLoadImplementationForName

        private java.util.Optional<T> tryLoadImplementationForName​(java.lang.String name)