Class DefaultEventManager

java.lang.Object
eu.cloudnetservice.driver.impl.event.DefaultEventManager
All Implemented Interfaces:
eu.cloudnetservice.driver.event.EventManager

@Singleton @Provides(eu.cloudnetservice.driver.event.EventManager.class) public final class DefaultEventManager extends Object implements eu.cloudnetservice.driver.event.EventManager
The default implementation of an event manager.
Since:
4.0
  • Field Details

    • bakeLock

      protected final Lock bakeLock
    • listeners

      protected final Map<Class<?>, List<eu.cloudnetservice.driver.event.RegisteredEventListener>> listeners
  • Constructor Details

    • DefaultEventManager

      public DefaultEventManager()
  • Method Details

    • unregisterListeners

      @NonNull public @NonNull eu.cloudnetservice.driver.event.EventManager unregisterListeners(@NonNull @NonNull ClassLoader classLoader)
      Specified by:
      unregisterListeners in interface eu.cloudnetservice.driver.event.EventManager
    • unregisterListener

      @NonNull public @NonNull eu.cloudnetservice.driver.event.EventManager unregisterListener(Object @NonNull ... listeners)
      Specified by:
      unregisterListener in interface eu.cloudnetservice.driver.event.EventManager
    • callEvent

      @NonNull public <T extends eu.cloudnetservice.driver.event.Event> T callEvent(@NonNull @NonNull String channel, @NonNull T event)
      Specified by:
      callEvent in interface eu.cloudnetservice.driver.event.EventManager
    • registerListener

      @NonNull public @NonNull eu.cloudnetservice.driver.event.EventManager registerListener(@NonNull @NonNull Class<?> listenerClass)
      Specified by:
      registerListener in interface eu.cloudnetservice.driver.event.EventManager
    • registerListener

      @NonNull public @NonNull eu.cloudnetservice.driver.event.EventManager registerListener(@NonNull @NonNull Object listener)
      Specified by:
      registerListener in interface eu.cloudnetservice.driver.event.EventManager
    • registerListener

      @NonNull protected @NonNull eu.cloudnetservice.driver.event.EventManager registerListener(@NonNull @NonNull eu.cloudnetservice.driver.inject.InjectionLayer<?> layer, @NonNull @NonNull Object listener)
      Registers all methods in the given listener class which are annotated with EventListener and are taking only one argument with a subtype of Event.

      This method accepts public, protected, default (package) access, and private methods but will not include inherited methods at all.

      All methods which are not annotated with EventListener, are static and are not taking one or more arguments are silently ignored.

      Parameters:
      layer - the injection layer to use to get instances needed for event listeners.
      listener - the instance of the listener to register the methods in.
      Returns:
      the same event manager as used to call the method, for chaining.
      Throws:
      NullPointerException - if the given listener or injection layer is null.
      IllegalArgumentException - if an event listener target doesn't take an event as it's first argument.
    • safeRemove

      protected void safeRemove(@NonNull @NonNull Predicate<eu.cloudnetservice.driver.event.RegisteredEventListener> predicate)
      Safely removes the all registered event listeners which are matching the given predicate.
      Parameters:
      predicate - the predicate all listeners to remove must match.
      Throws:
      NullPointerException - if the given predicate is null.