From d48b167fb389730c2cd34313426c0a90008871ec Mon Sep 17 00:00:00 2001 From: "J. Neugebauer" Date: Fri, 8 Jul 2022 07:31:37 +0200 Subject: [PATCH] Renamed generator to dispatcher --- ...entGenerator.java => EventDispatcher.java} | 14 +++++++++--- src/schule/ngb/zm/media/Audio.java | 2 ++ src/schule/ngb/zm/media/AudioListener.java | 11 ++++++++++ src/schule/ngb/zm/media/Mixer.java | 11 ++++++++++ src/schule/ngb/zm/media/Music.java | 22 +++++++++++++++++++ src/schule/ngb/zm/media/Sound.java | 4 ++++ ...atorTest.java => EventDispatcherTest.java} | 4 ++-- 7 files changed, 63 insertions(+), 5 deletions(-) rename src/schule/ngb/zm/events/{EventGenerator.java => EventDispatcher.java} (78%) create mode 100644 src/schule/ngb/zm/media/AudioListener.java rename test/src/schule/ngb/zm/events/{EventGeneratorTest.java => EventDispatcherTest.java} (93%) diff --git a/src/schule/ngb/zm/events/EventGenerator.java b/src/schule/ngb/zm/events/EventDispatcher.java similarity index 78% rename from src/schule/ngb/zm/events/EventGenerator.java rename to src/schule/ngb/zm/events/EventDispatcher.java index f8834a0..61722c5 100644 --- a/src/schule/ngb/zm/events/EventGenerator.java +++ b/src/schule/ngb/zm/events/EventDispatcher.java @@ -1,22 +1,27 @@ package schule.ngb.zm.events; +import schule.ngb.zm.util.Validator; + import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.CopyOnWriteArraySet; import java.util.function.BiConsumer; -public class EventGenerator> { +public class EventDispatcher> { private CopyOnWriteArraySet listeners; private ConcurrentMap> eventRegistry; - public EventGenerator() { + public EventDispatcher() { listeners = new CopyOnWriteArraySet<>(); eventRegistry = new ConcurrentHashMap<>(); } public void registerEventType( String eventKey, BiConsumer dispatcher ) { + Validator.requireNotNull(eventKey); + Validator.requireNotNull(dispatcher); + if( !eventRegistered(eventKey) ) { eventRegistry.put(eventKey, dispatcher); } @@ -39,9 +44,12 @@ public class EventGenerator> { } public void dispatchEvent( String eventKey, final E event ) { + Validator.requireNotNull(eventKey); + Validator.requireNotNull(event); + if( eventRegistered(eventKey) ) { final BiConsumer dispatcher = eventRegistry.get(eventKey); - listeners.stream().forEach(( listener ) -> { + listeners.forEach(( listener ) -> { dispatcher.accept(event, listener); }); } diff --git a/src/schule/ngb/zm/media/Audio.java b/src/schule/ngb/zm/media/Audio.java index e2f5137..0292df6 100644 --- a/src/schule/ngb/zm/media/Audio.java +++ b/src/schule/ngb/zm/media/Audio.java @@ -5,6 +5,8 @@ package schule.ngb.zm.media; */ public interface Audio { + String getSource(); + /** * Prüft, ob das Medium gerade abgespielt wird. * diff --git a/src/schule/ngb/zm/media/AudioListener.java b/src/schule/ngb/zm/media/AudioListener.java new file mode 100644 index 0000000..1600e07 --- /dev/null +++ b/src/schule/ngb/zm/media/AudioListener.java @@ -0,0 +1,11 @@ +package schule.ngb.zm.media; + +import schule.ngb.zm.events.Listener; + +public interface AudioListener extends Listener