Class EventListenerUtils

    • Field Detail

      • LISTENER_INSTANCE_COMPARATOR

        public static final Comparator<EventListener> LISTENER_INSTANCE_COMPARATOR
        A special "comparator" whose only purpose is to ensure there are no same references in a listener's set - to be used in conjunction with a TreeSet as its comparator
    • Method Detail

      • synchronizedListenersSet

        public static <L extends SshdEventListenerSet<L> synchronizedListenersSet​(Collection<? extends L> listeners)
        Type Parameters:
        L - Type of SshdEventListener contained in the set
        Parameters:
        listeners - The listeners to pre-add to the create set - ignored if (@code null}/empty
        Returns:
        A (synchronized) Set for containing the listeners ensuring that if same listener instance is added repeatedly only one instance is actually contained
      • synchronizedListenersSet

        public static <L extends SshdEventListenerSet<L> synchronizedListenersSet()
        Type Parameters:
        L - Type of SshdEventListener contained in the set
        Returns:
        A (synchronized) Set for containing the listeners ensuring that if same listener instance is added repeatedly only one instance is actually contained
        See Also:
        LISTENER_INSTANCE_COMPARATOR
      • proxyWrapper

        public static <T extends SshdEventListener> T proxyWrapper​(Class<T> listenerType,
                                                                   Iterable<? extends T> listeners)
        Provides proxy wrapper around an Iterable container of listener interface implementation. Note: a listener interface is one whose invoked methods return only void.
        Type Parameters:
        T - Generic listener type
        Parameters:
        listenerType - The expected listener interface
        listeners - An Iterable container of listeners to be invoked.

        Note(s):

        • The invocation order is same as the Iterable container

        • If any of the invoked listener methods throws an exception, the rest of the listener are not invoked and the exception is propagated to the caller

        • It is up to the caller to ensure that the container does not change while the proxy is invoked

        Returns:
        A proxy wrapper implementing the same interface, but delegating the calls to the container
        See Also:
        proxyWrapper(Class, ClassLoader, Iterable)
      • proxyWrapper

        public static <T extends SshdEventListener> T proxyWrapper​(Class<T> listenerType,
                                                                   ClassLoader loader,
                                                                   Iterable<? extends T> listeners)
        Provides proxy wrapper around an Iterable container of listener interface implementation. Note: a listener interface is one whose invoked methods return only void.
        Type Parameters:
        T - Generic SshdEventListener type
        Parameters:
        listenerType - The expected listener interface
        loader - The ClassLoader to use for the proxy
        listeners - An Iterable container of listeners to be invoked.

        Note(s):

        • The invocation order is same as the Iterable container

        • If any of the invoked listener methods throws an exception, the rest of the listener are not invoked and the exception is propagated to the caller

        • It is up to the caller to ensure that the container does not change while the proxy is invoked

        Returns:
        A proxy wrapper implementing the same interface, but delegating the calls to the container
        Throws:
        IllegalArgumentException - if listenerType is not an interface or a null container has been provided
        See Also:
        proxyWrapper(Class, ClassLoader, Iterable)