diff --git a/pom.xml b/pom.xml index 9b60b94..65107d0 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,9 @@ maven-compiler-plugin 3.5.1 + + de/mrbesen/test/** + @@ -48,4 +51,5 @@ 1.8 1.8 + \ No newline at end of file diff --git a/src/main/java/de/mrbesen/telegram/event/EventListener.java b/src/main/java/de/mrbesen/telegram/event/EventListener.java deleted file mode 100644 index d0cc7d4..0000000 --- a/src/main/java/de/mrbesen/telegram/event/EventListener.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.mrbesen.telegram.event; - -public interface EventListener { - - public void handleEvent(T event); -} diff --git a/src/main/java/de/mrbesen/telegram/event/EventManager.java b/src/main/java/de/mrbesen/telegram/event/EventManager.java index f4f8f30..89f5da7 100644 --- a/src/main/java/de/mrbesen/telegram/event/EventManager.java +++ b/src/main/java/de/mrbesen/telegram/event/EventManager.java @@ -6,40 +6,44 @@ 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, ArrayList> listeners = new HashMap<>(); + private HashMap, ArrayList> listeners = new HashMap<>(); public EventManager() {} - public void registerEvent(Class eventtype, EventListener listener) { - if (listener == null) { + public void registerEvent(Class eventtype, Consumer handler) { + if (handler == null) { throw new NullPointerException(); } //get list - ArrayList list = listeners.get(eventtype); + ArrayList list = listeners.get(eventtype); if (list == null) { - list = new ArrayList(); + //create and add list + list = new ArrayList<>(); listeners.put(eventtype, list); - } else if(list.contains(listener)) { + } else if(list.contains(handler)) { throw new IllegalArgumentException("listener allready registered"); } - list.add(listener); + 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 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(); + 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; diff --git a/src/main/java/de/mrbesen/test/Main.java b/src/main/java/de/mrbesen/test/Main.java index e57abfd..a493c91 100644 --- a/src/main/java/de/mrbesen/test/Main.java +++ b/src/main/java/de/mrbesen/test/Main.java @@ -3,8 +3,6 @@ package de.mrbesen.test; import java.util.Scanner; import de.mrbesen.telegram.TelegramAPI; -import de.mrbesen.telegram.event.EventListener; -import de.mrbesen.telegram.event.events.UserCallbackEvent; import de.mrbesen.telegram.event.events.UserSendMessageEvent; import de.mrbesen.telegram.objects.TMessage; import de.mrbesen.telegram.objects.TUser.Status; @@ -13,7 +11,7 @@ import de.mrbesen.test.commands.ReplyKeyboardRemoveTC; import de.mrbesen.test.commands.ReplyKeyboardTestCase; import de.mrbesen.test.commands.SimpleTestCase; -public class Main implements EventListener, Runnable { +public class Main implements Runnable { TelegramAPI api; private int action = 0; @@ -30,10 +28,11 @@ public class Main implements EventListener, Runnable { api.getCommandManager().registerCommand(new InlineKeyboardTC()); api.getCommandManager().registerCommand(new ReplyKeyboardTestCase()); api.getCommandManager().registerCommand(new ReplyKeyboardRemoveTC()); - api.getEventManager().registerEvent(UserSendMessageEvent.class, this); + api.getEventManager().registerEvent(UserSendMessageEvent.class, this::handleEvent); } - public void handleEvent(UserSendMessageEvent e) { + public void handleEvent(Object event) { + UserSendMessageEvent e = (UserSendMessageEvent) event; //api.sendMessage(new MessageBuilder().setText("this is a reply").setReciver(e.getUser().getID()).setSilent(true).setNoWebView(true).build()); if(oldmsg != null) {