Class LazyClientIdentityIterator

  • All Implemented Interfaces:
    java.util.Iterator<java.security.KeyPair>

    public class LazyClientIdentityIterator
    extends java.lang.Object
    implements java.util.Iterator<java.security.KeyPair>
    Wraps several ClientIdentityProvider into a KeyPair Iterator that invokes each provider "lazily" - i.e., only when Iterator.hasNext() is invoked. This prevents password protected private keys to be decrypted until they are actually needed.
    • Field Detail

      • finished

        protected boolean finished
      • currentIdentities

        protected java.util.Iterator<? extends java.security.KeyPair> currentIdentities
      • currentPair

        protected java.security.KeyPair currentPair
      • kpExtractor

        private final java.util.function.Function<? super ClientIdentityProvider,​? extends java.lang.Iterable<? extends java.security.KeyPair>> kpExtractor
      • filter

        private final java.util.function.Predicate<? super java.security.KeyPair> filter
    • Constructor Detail

      • LazyClientIdentityIterator

        public LazyClientIdentityIterator​(java.util.Iterator<? extends ClientIdentityProvider> providers,
                                          java.util.function.Function<? super ClientIdentityProvider,​? extends java.lang.Iterable<? extends java.security.KeyPair>> kpExtractor,
                                          java.util.function.Predicate<? super java.security.KeyPair> filter)
        Parameters:
        providers - The providers - ignored if null
        kpExtractor - The (never null) extractor of the KeyPair from the ClientIdentityProvider argument. If returned pair is null then next provider is queried.
        filter - Any further filter to apply on (non-null) key pairs before returning it as the Iterator.next() result.
    • Method Detail

      • getIdentitiesExtractor

        public java.util.function.Function<? super ClientIdentityProvider,​? extends java.lang.Iterable<? extends java.security.KeyPair>> getIdentitiesExtractor()
      • getFilter

        public java.util.function.Predicate<? super java.security.KeyPair> getFilter()
      • hasNext

        public boolean hasNext()
        Specified by:
        hasNext in interface java.util.Iterator<java.security.KeyPair>
      • next

        public java.security.KeyPair next()
        Specified by:
        next in interface java.util.Iterator<java.security.KeyPair>
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object