package de.mrbesen.telegram.event; import java.util.ArrayList; import java.util.HashMap; import java.util.function.Consumer; public class EventManager { private HashMap, ArrayList>> listeners = new HashMap<>(); public EventManager() {} public void registerEvent(Class eventtype, Consumer handler) { if (handler == null) { throw new NullPointerException(); } //get list ArrayList> 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) return null; ArrayList> 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; } }