Package io.microsphere.event
Class AbstractEventDispatcher
- java.lang.Object
-
- io.microsphere.event.AbstractEventDispatcher
-
- All Implemented Interfaces:
EventDispatcher
,Listenable<EventListener<?>>
- Direct Known Subclasses:
DirectEventDispatcher
,ParallelEventDispatcher
public abstract class AbstractEventDispatcher extends java.lang.Object implements EventDispatcher
The abstractEventDispatcher
providers the common implementation.- Since:
- 1.0.0
- See Also:
EventDispatcher
,Listenable
,ServiceLoader
,EventListener
,Event
-
-
Field Summary
-
Fields inherited from interface io.microsphere.event.EventDispatcher
DIRECT_EXECUTOR
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractEventDispatcher(java.util.concurrent.Executor executor)
Constructor with an instance ofExecutor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addEventListener(EventListener<?> listener)
Add aevent listener
void
dispatch(Event event)
Dispatch a event to the registeredevent listeners
protected void
doInListener(EventListener<?> listener, java.util.function.Consumer<java.util.Collection<EventListener>> consumer)
java.util.List<EventListener<?>>
getAllEventListeners()
Get all registeredevent listeners
java.util.concurrent.Executor
getExecutor()
TheExecutor
to dispatch aevent
protected void
loadEventListenerInstances()
Default, load the instances ofevent listeners
byServiceLoader
void
removeEventListener(EventListener<?> listener)
Remove aevent listener
protected java.util.stream.Stream<EventListener>
sortedListeners()
protected java.util.stream.Stream<EventListener>
sortedListeners(java.util.function.Predicate<java.util.Map.Entry<java.lang.Class<? extends Event>,java.util.List<EventListener>>> predicate)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.microsphere.event.Listenable
addEventListeners, addEventListeners, removeAllEventListeners, removeEventListeners
-
-
-
-
Method Detail
-
addEventListener
public void addEventListener(EventListener<?> listener) throws java.lang.NullPointerException, java.lang.IllegalArgumentException
Description copied from interface:Listenable
Add aevent listener
- Specified by:
addEventListener
in interfaceListenable<EventListener<?>>
- Parameters:
listener
- aevent listener
If currentEventListener
is existed, returnfalse
- Throws:
java.lang.NullPointerException
- iflistener
argument isnull
java.lang.IllegalArgumentException
- iflistener
argument is not concrete instance
-
removeEventListener
public void removeEventListener(EventListener<?> listener) throws java.lang.NullPointerException, java.lang.IllegalArgumentException
Description copied from interface:Listenable
Remove aevent listener
- Specified by:
removeEventListener
in interfaceListenable<EventListener<?>>
- Parameters:
listener
- aevent listener
- Throws:
java.lang.NullPointerException
- iflistener
argument isnull
java.lang.IllegalArgumentException
-
getAllEventListeners
public java.util.List<EventListener<?>> getAllEventListeners()
Description copied from interface:Listenable
Get all registeredevent listeners
- Specified by:
getAllEventListeners
in interfaceListenable<EventListener<?>>
- Returns:
- non-null read-only ordered
event listeners
- See Also:
EventListener.getPriority()
-
sortedListeners
protected java.util.stream.Stream<EventListener> sortedListeners()
-
sortedListeners
protected java.util.stream.Stream<EventListener> sortedListeners(java.util.function.Predicate<java.util.Map.Entry<java.lang.Class<? extends Event>,java.util.List<EventListener>>> predicate)
-
dispatch
public void dispatch(Event event)
Description copied from interface:EventDispatcher
Dispatch a event to the registeredevent listeners
- Specified by:
dispatch
in interfaceEventDispatcher
- Parameters:
event
- aevent
-
getExecutor
public final java.util.concurrent.Executor getExecutor()
Description copied from interface:EventDispatcher
TheExecutor
to dispatch aevent
- Specified by:
getExecutor
in interfaceEventDispatcher
- Returns:
- the non-null
Executor
- See Also:
EventDispatcher.DIRECT_EXECUTOR
-
doInListener
protected void doInListener(EventListener<?> listener, java.util.function.Consumer<java.util.Collection<EventListener>> consumer)
-
loadEventListenerInstances
protected void loadEventListenerInstances()
Default, load the instances ofevent listeners
byServiceLoader
It could be override by the sub-class
- See Also:
EventListener
,ServiceLoader.load(Class)
-
-