X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FWebInterface.java;h=60cda15ccb5f53b5cda98bae242ba6ee49dbacde;hb=63ef27de3c0ebad90acf11e6ed5688d9f83b2d4e;hp=18aebedf5e1b5a0dc70569c003fca0817eb44452;hpb=99888ce13cc17d49f5e217ab6f2c9ad5ef168792;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/web/WebInterface.java b/src/main/java/net/pterodactylus/sone/web/WebInterface.java index 18aebed..60cda15 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -32,6 +32,10 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -142,7 +146,6 @@ import net.pterodactylus.util.template.TemplateContextFactory; import net.pterodactylus.util.template.TemplateParser; import net.pterodactylus.util.template.TemplateProvider; import net.pterodactylus.util.template.XmlFilter; -import net.pterodactylus.util.thread.Ticker; import net.pterodactylus.util.web.RedirectPage; import net.pterodactylus.util.web.StaticPage; import net.pterodactylus.util.web.TemplatePage; @@ -213,7 +216,7 @@ public class WebInterface { private final Map soneInsertNotifications = new HashMap(); /** Sone locked notification ticker objects. */ - private final Map lockedSonesTickerObjects = Collections.synchronizedMap(new HashMap()); + private final Map> lockedSonesTickerObjects = Collections.synchronizedMap(new HashMap>()); /** The “Sone locked” notification. */ private final ListNotification lockedSonesNotification; @@ -230,6 +233,9 @@ public class WebInterface { /** The “image insert failed” notification. */ private final ListNotification imageInsertFailedNotification; + /** Scheduled executor for time-based notifications. */ + private final ScheduledExecutorService ticker = Executors.newScheduledThreadPool(1); + /** * Creates a new web interface. * @@ -554,17 +560,17 @@ public class WebInterface { final TemplateNotification startupNotification = new TemplateNotification("startup-notification", startupNotificationTemplate); notificationManager.addNotification(startupNotification); - Ticker.getInstance().registerEvent(System.currentTimeMillis() + (120 * 1000), new Runnable() { + ticker.schedule(new Runnable() { @Override public void run() { startupNotification.dismiss(); } - }, "Sone Startup Notification Remover"); + }, 2, TimeUnit.MINUTES); Template wotMissingNotificationTemplate = TemplateParser.parse(createReader("/templates/notify/wotMissingNotification.html")); final TemplateNotification wotMissingNotification = new TemplateNotification("wot-missing-notification", wotMissingNotificationTemplate); - Ticker.getInstance().registerEvent(System.currentTimeMillis() + (15 * 1000), new Runnable() { + ticker.scheduleAtFixedRate(new Runnable() { @Override @SuppressWarnings("synthetic-access") @@ -574,10 +580,9 @@ public class WebInterface { } else { notificationManager.addNotification(wotMissingNotification); } - Ticker.getInstance().registerEvent(System.currentTimeMillis() + (15 * 1000), this, "Sone WoT Connector Checker"); } - }, "Sone WoT Connector Checker"); + }, 15, 15, TimeUnit.SECONDS); } /** @@ -585,7 +590,7 @@ public class WebInterface { */ public void stop() { unregisterToadlets(); - Ticker.getInstance().stop(); + ticker.shutdownNow(); } // @@ -953,7 +958,7 @@ public class WebInterface { @Subscribe public void soneLocked(SoneLockedEvent soneLockedEvent) { final Sone sone = soneLockedEvent.sone(); - Object tickerObject = Ticker.getInstance().registerEvent(System.currentTimeMillis() + (5 * 60) * 1000, new Runnable() { + ScheduledFuture tickerObject = ticker.schedule(new Runnable() { @Override @SuppressWarnings("synthetic-access") @@ -962,7 +967,7 @@ public class WebInterface { lockedSonesTickerObjects.remove(sone); notificationManager.addNotification(lockedSonesNotification); } - }, "Sone Locked Notification"); + }, 5, TimeUnit.MINUTES); lockedSonesTickerObjects.put(sone, tickerObject); } @@ -975,7 +980,7 @@ public class WebInterface { @Subscribe public void soneUnlocked(SoneUnlockedEvent soneUnlockedEvent) { lockedSonesNotification.remove(soneUnlockedEvent.sone()); - Ticker.getInstance().deregisterEvent(lockedSonesTickerObjects.remove(soneUnlockedEvent.sone())); + lockedSonesTickerObjects.remove(soneUnlockedEvent.sone()).cancel(false); } /**