projects
/
Sone.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
cbc92cf
)
✨ Add ticker shutdown wrapper
author
David ‘Bombe’ Roden
<bombe@pterodactylus.net>
Thu, 12 Dec 2019 19:54:06 +0000
(20:54 +0100)
committer
David ‘Bombe’ Roden
<bombe@pterodactylus.net>
Thu, 12 Dec 2019 19:58:52 +0000
(20:58 +0100)
src/main/java/net/pterodactylus/sone/main/SonePlugin.java
patch
|
blob
|
history
src/main/kotlin/net/pterodactylus/sone/main/SoneModule.kt
patch
|
blob
|
history
src/main/kotlin/net/pterodactylus/sone/main/TickerShutdown.kt
patch
|
blob
|
history
src/test/kotlin/net/pterodactylus/sone/main/SoneModuleTest.kt
patch
|
blob
|
history
src/test/kotlin/net/pterodactylus/sone/main/SonePluginTest.kt
patch
|
blob
|
history
diff --git
a/src/main/java/net/pterodactylus/sone/main/SonePlugin.java
b/src/main/java/net/pterodactylus/sone/main/SonePlugin.java
index
ef9f05a
..
d3dd3bd
100644
(file)
--- a/
src/main/java/net/pterodactylus/sone/main/SonePlugin.java
+++ b/
src/main/java/net/pterodactylus/sone/main/SonePlugin.java
@@
-208,6
+208,9
@@
public class SonePlugin implements FredPlugin, FredPluginFCP, FredPluginL10n, Fr
/* we need to request this to install all notification handlers. */
injector.getInstance(NotificationHandler.class);
/* we need to request this to install all notification handlers. */
injector.getInstance(NotificationHandler.class);
+ /* and this is required to shutdown all tickers. */
+ injector.getInstance(TickerShutdown.class);
+
/* start core! */
core.start();
/* start core! */
core.start();
diff --git
a/src/main/kotlin/net/pterodactylus/sone/main/SoneModule.kt
b/src/main/kotlin/net/pterodactylus/sone/main/SoneModule.kt
index
5a66015
..
749de0d
100644
(file)
--- a/
src/main/kotlin/net/pterodactylus/sone/main/SoneModule.kt
+++ b/
src/main/kotlin/net/pterodactylus/sone/main/SoneModule.kt
@@
-60,6
+60,7
@@
open class SoneModule(private val sonePlugin: SonePlugin, private val eventBus:
loaders?.let { bind(Loaders::class.java).toInstance(it) }
bind(MetricRegistry::class.java).`in`(Singleton::class.java)
bind(WebOfTrustConnector::class.java).to(PluginWebOfTrustConnector::class.java).`in`(Singleton::class.java)
loaders?.let { bind(Loaders::class.java).toInstance(it) }
bind(MetricRegistry::class.java).`in`(Singleton::class.java)
bind(WebOfTrustConnector::class.java).to(PluginWebOfTrustConnector::class.java).`in`(Singleton::class.java)
+ bind(TickerShutdown::class.java).`in`(Singleton::class.java)
bindListener(Matchers.any(), object : TypeListener {
override fun <I> hear(typeLiteral: TypeLiteral<I>, typeEncounter: TypeEncounter<I>) {
bindListener(Matchers.any(), object : TypeListener {
override fun <I> hear(typeLiteral: TypeLiteral<I>, typeEncounter: TypeEncounter<I>) {
diff --git
a/src/main/kotlin/net/pterodactylus/sone/main/TickerShutdown.kt
b/src/main/kotlin/net/pterodactylus/sone/main/TickerShutdown.kt
index
71764ec
..
5f96050
100644
(file)
--- a/
src/main/kotlin/net/pterodactylus/sone/main/TickerShutdown.kt
+++ b/
src/main/kotlin/net/pterodactylus/sone/main/TickerShutdown.kt
@@
-20,12
+20,13
@@
package net.pterodactylus.sone.main
import com.google.common.eventbus.*
import net.pterodactylus.sone.core.event.*
import java.util.concurrent.*
import com.google.common.eventbus.*
import net.pterodactylus.sone.core.event.*
import java.util.concurrent.*
+import javax.inject.*
/**
* Wrapper around all [tickers][ScheduledExecutorService] used in Sone,
* ensuring proper shutdown.
*/
/**
* Wrapper around all [tickers][ScheduledExecutorService] used in Sone,
* ensuring proper shutdown.
*/
-class TickerShutdown
(
private val notificationTicker: ScheduledExecutorService) {
+class TickerShutdown
@Inject constructor(@Named("notification")
private val notificationTicker: ScheduledExecutorService) {
@Subscribe
fun shutdown(shutdown: Shutdown) {
@Subscribe
fun shutdown(shutdown: Shutdown) {
diff --git
a/src/test/kotlin/net/pterodactylus/sone/main/SoneModuleTest.kt
b/src/test/kotlin/net/pterodactylus/sone/main/SoneModuleTest.kt
index
9fe5dbb
..
28481ad
100644
(file)
--- a/
src/test/kotlin/net/pterodactylus/sone/main/SoneModuleTest.kt
+++ b/
src/test/kotlin/net/pterodactylus/sone/main/SoneModuleTest.kt
@@
-222,4
+222,9
@@
class SoneModuleTest {
injector.verifySingletonInstance<ScheduledExecutorService>(named("notification"))
}
injector.verifySingletonInstance<ScheduledExecutorService>(named("notification"))
}
+ @Test
+ fun `ticker shutdown is created as singleton`() {
+ injector.verifySingletonInstance<TickerShutdown>()
+ }
+
}
}
diff --git
a/src/test/kotlin/net/pterodactylus/sone/main/SonePluginTest.kt
b/src/test/kotlin/net/pterodactylus/sone/main/SonePluginTest.kt
index
b846522
..
e658fe2
100644
(file)
--- a/
src/test/kotlin/net/pterodactylus/sone/main/SonePluginTest.kt
+++ b/
src/test/kotlin/net/pterodactylus/sone/main/SonePluginTest.kt
@@
-100,6
+100,12
@@
class SonePluginTest {
assertThat(getInjected(NotificationHandler::class.java), notNullValue())
}
assertThat(getInjected(NotificationHandler::class.java), notNullValue())
}
+ @Test
+ fun `ticker shutdown is being requested`() {
+ sonePlugin.runPlugin(pluginRespirator)
+ assertThat(getInjected(TickerShutdown::class.java), notNullValue())
+ }
+
private class FirstStartListener(private val firstStartReceived: AtomicBoolean) {
@Subscribe
fun firstStart(firstStart: FirstStart) {
private class FirstStartListener(private val firstStartReceived: AtomicBoolean) {
@Subscribe
fun firstStart(firstStart: FirstStart) {