diff --git a/src/main/scala/gitbucket/core/plugin/Plugin.scala b/src/main/scala/gitbucket/core/plugin/Plugin.scala index b9bedb6..8166a7c 100644 --- a/src/main/scala/gitbucket/core/plugin/Plugin.scala +++ b/src/main/scala/gitbucket/core/plugin/Plugin.scala @@ -1,6 +1,7 @@ package gitbucket.core.plugin import javax.servlet.ServletContext +import gitbucket.core.service.SystemSettingsService.SystemSettings import gitbucket.core.util.Version /** @@ -18,12 +19,12 @@ * This method is invoked in initialization of plugin system. * Register plugin functionality to PluginRegistry. */ - def initialize(registry: PluginRegistry, context: ServletContext): Unit + def initialize(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Unit /** * This method is invoked in shutdown of plugin system. * If the plugin has any resources, release them in this method. */ - def shutdown(registry: PluginRegistry, context: ServletContext): Unit + def shutdown(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Unit } diff --git a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala index 56490f4..fdd3892 100644 --- a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala +++ b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala @@ -7,6 +7,7 @@ import gitbucket.core.controller.{Context, ControllerBase} import gitbucket.core.service.RepositoryService.RepositoryInfo +import gitbucket.core.service.SystemSettingsService.SystemSettings import gitbucket.core.util.ControlUtil._ import gitbucket.core.util.Directory._ import gitbucket.core.util.JDBCUtil._ @@ -89,7 +90,7 @@ /** * Initializes all installed plugins. */ - def initialize(context: ServletContext, conn: java.sql.Connection): Unit = { + def initialize(context: ServletContext, settings: SystemSettings, conn: java.sql.Connection): Unit = { val pluginDir = new File(PluginHome) if(pluginDir.exists && pluginDir.isDirectory){ pluginDir.listFiles(new FilenameFilter { @@ -119,7 +120,7 @@ } // Initialize - plugin.initialize(instance,context) + plugin.initialize(instance, context, settings) instance.addPlugin(PluginInfo( pluginId = plugin.pluginId, pluginName = plugin.pluginName, @@ -137,10 +138,10 @@ } } - def shutdown(context: ServletContext): Unit = { + def shutdown(context: ServletContext, settings: SystemSettings): Unit = { instance.getPlugins().foreach { pluginInfo => try { - pluginInfo.pluginClass.shutdown(instance, context) + pluginInfo.pluginClass.shutdown(instance, context, settings) } catch { case e: Exception => { logger.error(s"Error during plugin shutdown", e) diff --git a/src/main/scala/gitbucket/core/servlet/InitializeListener.scala b/src/main/scala/gitbucket/core/servlet/InitializeListener.scala index 96654f4..2371170 100644 --- a/src/main/scala/gitbucket/core/servlet/InitializeListener.scala +++ b/src/main/scala/gitbucket/core/servlet/InitializeListener.scala @@ -3,6 +3,7 @@ import java.io.File import java.sql.{DriverManager, Connection} import gitbucket.core.plugin.PluginRegistry +import gitbucket.core.service.SystemSettingsService import gitbucket.core.util._ import org.apache.commons.io.FileUtils import javax.servlet.{ServletContextListener, ServletContextEvent} @@ -169,7 +170,7 @@ * Initialize GitBucket system. * Update database schema and load plug-ins automatically in the context initializing. */ -class InitializeListener extends ServletContextListener { +class InitializeListener extends ServletContextListener with SystemSettingsService { import AutoUpdate._ private val logger = LoggerFactory.getLogger(classOf[InitializeListener]) @@ -189,14 +190,14 @@ } // Load plugins logger.debug("Initialize plugins") - PluginRegistry.initialize(event.getServletContext, conn) + PluginRegistry.initialize(event.getServletContext, loadSystemSettings(), conn) } } def contextDestroyed(event: ServletContextEvent): Unit = { // Shutdown plugins - PluginRegistry.shutdown(event.getServletContext) + PluginRegistry.shutdown(event.getServletContext, loadSystemSettings()) } private def getConnection(): Connection =