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; public class EventManager { private HashMap, ArrayList> listeners = new HashMap<>(); public EventManager() {} public void registerEvent(Class eventtype, EventListener listener) { if (listener == null) { throw new NullPointerException(); } //get list ArrayList list = listeners.get(eventtype); if (list == null) { list = new ArrayList(); listeners.put(eventtype, list); } else if(list.contains(listener)) { throw new IllegalArgumentException("listener allready registered"); } list.add(listener); } public Event callEvent(Event e) { if(e == null) throw new NullPointerException("event is not allowed to be null!"); ArrayList listner = listeners.get(e.getClass()); for(EventListener listn : listner) { try { listn.handleEvent(e); } catch(Throwable t) { System.err.println("Error occurred on Handling Event: " + e.getClass().getSimpleName()); t.printStackTrace(); } } return e; } }