TelegramAPI/src/main/java/de/mrbesen/telegram/event/EventManager.java

52 lines
1.3 KiB
Java

package de.mrbesen.telegram.event;
import de.mrbesen.telegram.TelegramAPI;
import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.function.Consumer;
public class EventManager {
private HashMap<Class<? extends Event>, ArrayList<Consumer>> listeners = new HashMap<>();
public EventManager() {}
public void registerEvent(Class<? extends Event> eventtype, Consumer handler) {
if (handler == null) {
throw new NullPointerException();
}
//get list
ArrayList<Consumer> list = listeners.get(eventtype);
if (list == null) {
//create and add list
list = new ArrayList<>();
listeners.put(eventtype, list);
} else if(list.contains(handler)) {
throw new IllegalArgumentException("listener allready registered");
}
list.add(handler); // ad to list
}
public Event callEvent(Event e) {
if(e == null)
throw new NullPointerException("event is not allowed to be null!");
ArrayList<Consumer> listner = listeners.get(e.getClass());
if(listner != null) {
for (Consumer listn : listner) {
try {
listn.accept(e);
} catch (Throwable t) {
System.err.println("Error occurred on Handling Event: " + e.getClass().getSimpleName());
t.printStackTrace();
}
}
}
return e;
}
}