fixed nullpointerexception, eventsystem improved, shutdownhook
This commit is contained in:
parent
545e328b07
commit
9f7829b28a
|
@ -111,7 +111,10 @@ public class TelegramAPI implements Runnable {
|
|||
thread.start();
|
||||
} else {
|
||||
throw new IllegalStateException("Still Running.");
|
||||
}
|
||||
}
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||
stop();
|
||||
}, "TelegramAPI Shutdown Hook"));
|
||||
}
|
||||
|
||||
public void addAdmin(long admin) {
|
||||
|
@ -151,12 +154,13 @@ public class TelegramAPI implements Runnable {
|
|||
if(con.getResponseCode() == 200) {
|
||||
return new JSONObject(readfromIS(con.getInputStream()));
|
||||
} else {
|
||||
System.out.println("request " + request + " " + parameter);
|
||||
String errdesc = "[No description available]";
|
||||
try {
|
||||
//try to read error message
|
||||
JSONObject returned = new JSONObject(readfromIS(con.getErrorStream()));
|
||||
errdesc = returned.getString("description");
|
||||
} catch(Throwable ignore) { }
|
||||
} catch(Throwable ignore) { }
|
||||
throw new APIError(parameter, request, con.getResponseCode(), null, errdesc);
|
||||
//throw new IOException("API request returned HTTP " + con.getResponseCode() + " (" + con.getResponseMessage() + ") for action " + request + "\nurl: " + url.toString() + "\nparams: " + parameter + "\nerror description: " + errdesc);
|
||||
}
|
||||
|
@ -289,6 +293,9 @@ public class TelegramAPI implements Runnable {
|
|||
|
||||
public void stop() {
|
||||
run = false;
|
||||
log.log("tapi stoped.");
|
||||
if(thread == null) return;
|
||||
|
||||
thread.interrupt();
|
||||
Thread.yield();//try to not get into that loop
|
||||
while(isRunning()) {
|
||||
|
@ -298,7 +305,6 @@ public class TelegramAPI implements Runnable {
|
|||
Thread.sleep(10);
|
||||
} catch(InterruptedException e) {}
|
||||
}
|
||||
log.log("tapi stoped.");
|
||||
thread = null;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,17 +6,17 @@ import java.util.function.Consumer;
|
|||
|
||||
public class EventManager {
|
||||
|
||||
private HashMap<Class<? extends Event>, ArrayList<Consumer>> listeners = new HashMap<>();
|
||||
private HashMap<Class<? extends Event>, ArrayList<Consumer<? super Event>>> listeners = new HashMap<>();
|
||||
|
||||
public EventManager() {}
|
||||
|
||||
public void registerEvent(Class<? extends Event> eventtype, Consumer handler) {
|
||||
public void registerEvent(Class<? extends Event> eventtype, Consumer<? super Event> handler) {
|
||||
if (handler == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
|
||||
//get list
|
||||
ArrayList<Consumer> list = listeners.get(eventtype);
|
||||
ArrayList<Consumer<? super Event>> list = listeners.get(eventtype);
|
||||
if (list == null) {
|
||||
//create and add list
|
||||
list = new ArrayList<>();
|
||||
|
@ -31,7 +31,7 @@ public class EventManager {
|
|||
public Event callEvent(Event e) {
|
||||
if(e == null) return e;
|
||||
|
||||
ArrayList<Consumer> listner = listeners.get(e.getClass());
|
||||
ArrayList<Consumer<? super Event>> listner = listeners.get(e.getClass());
|
||||
if(listner != null) {
|
||||
for (Consumer listn : listner) {
|
||||
try {
|
||||
|
|
Loading…
Reference in New Issue