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