com.github.events1000.emitter.api.AbstractEventEmitter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of events1000 Show documentation
Show all versions of events1000 Show documentation
A Lightweight Event System.
The newest version!
package com.github.events1000.emitter.api;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;
import com.github.events1000.api.EventTopic;
import com.github.events1000.listener.api.EventListener;
public abstract class AbstractEventEmitter implements EventEmitter {
private final Map> listeners;
public AbstractEventEmitter() {
this.listeners = new LinkedHashMap<>();
}
@Override
public synchronized void registerEventListener(EventTopic topic, final L listener) {
Queue queue = listeners.get(topic);
if (queue == null) {
queue = new LinkedList<>();
while (topic != null) {
listeners.put(topic, queue);
topic = topic.getParent();
}
}
queue.add(listener);
}
@Override
public void unregisterEventListener(final L listener) {
for (final Queue q : listeners.values()) {
q.remove(listener);
}
}
protected Map> getListeners() {
return listeners;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy