@@ -2,10 +2,10 @@ package co.statu.parsek.api
22
33import co.statu.parsek.Main
44import co.statu.parsek.PluginEventManager
5+ import co.statu.parsek.PluginManager
56import co.statu.parsek.ReleaseStage
67import co.statu.parsek.api.event.PluginEventListener
78import io.vertx.core.Vertx
8- import kotlinx.coroutines.runBlocking
99import org.pf4j.Plugin
1010import org.slf4j.Logger
1111import org.slf4j.LoggerFactory
@@ -65,32 +65,55 @@ abstract class ParsekPlugin : Plugin() {
6565 pluginEventManager.unRegister(this , eventListener)
6666 }
6767
68- @Deprecated(" Use onEnable method." )
68+ @Deprecated(" Use onStart method." )
6969 override fun start () {
70- runBlocking {
71- onEnable()
72- }
7370 }
7471
75- @Deprecated(" Use onDisable method." )
72+ @Deprecated(" Use onStop method." )
7673 override fun stop () {
77- pluginBeanContext.close()
74+ }
75+
76+ internal fun load () {
77+ val pluginBeanContext by lazy {
78+ val pluginBeanContext = AnnotationConfigApplicationContext ()
79+
80+ pluginBeanContext.setAllowBeanDefinitionOverriding(true )
7881
82+ pluginBeanContext.parent = PluginManager .pluginGlobalBeanContext
83+ pluginBeanContext.classLoader = this .javaClass.classLoader
84+ pluginBeanContext.scan(this .javaClass.`package`.name)
85+
86+ pluginBeanContext.beanFactory.registerSingleton(this .logger.javaClass.name, this .logger)
87+ pluginBeanContext.beanFactory.registerSingleton(pluginEventManager.javaClass.name, pluginEventManager)
88+ pluginBeanContext.beanFactory.registerSingleton(this .javaClass.name, this )
89+
90+ pluginBeanContext.refresh()
91+
92+ pluginBeanContext
93+ }
94+
95+ this .pluginBeanContext = pluginBeanContext
96+
97+ pluginEventManager.initializePlugin(this , pluginBeanContext)
98+ }
99+
100+ internal fun unload () {
79101 val copyOfRegisteredBeans = registeredBeans.toList()
80102
81103 copyOfRegisteredBeans.forEach {
82- unRegisterGlobal(it)
104+ try {
105+ unRegisterGlobal(it)
106+ } catch (e: Exception ) {
107+ e.printStackTrace()
108+ }
83109 }
84110
85111 pluginEventManager.unregisterPlugin(this )
86-
87- runBlocking {
88- onDisable()
89- }
90112 }
91113
92- open suspend fun onLoad () {}
93-
114+ open suspend fun onCreate () {}
94115 open suspend fun onEnable () {}
95116 open suspend fun onDisable () {}
117+ open suspend fun onStart () {}
118+ open suspend fun onStop () {}
96119}
0 commit comments