(refs #464)Fix compilation error

This commit is contained in:
Naoki Takezoe
2014-08-13 22:06:08 +09:00
parent 13385cbced
commit bab93ea4f5
4 changed files with 36 additions and 15 deletions

View File

@@ -11,6 +11,7 @@ import org.apache.commons.io.FileUtils
import java.io.FileInputStream
import plugin.{Plugin, PluginSystem}
import org.scalatra.Ok
import util.Implicits._
class SystemSettingsController extends SystemSettingsControllerBase
with AccountService with AdminAuthenticator

View File

@@ -10,6 +10,8 @@ import org.apache.commons.io.FileUtils
import service.RepositoryService.RepositoryInfo
import Security._
import service.PluginService
import model.Profile._
import profile.simple._
/**
* Provides extension points to plug-ins.
@@ -22,14 +24,15 @@ object PluginSystem extends PluginService {
private val pluginsMap = scala.collection.mutable.Map[String, Plugin]()
private val repositoriesList = scala.collection.mutable.ListBuffer[PluginRepository]()
def install(plugin: Plugin): Unit = {
def install(plugin: Plugin)(implicit session: Session): Unit = {
pluginsMap.put(plugin.id, plugin)
}
def plugins: List[Plugin] = pluginsMap.values.toList
def uninstall(id: String): Unit = {
def uninstall(id: String)(implicit session: Session): Unit = {
pluginsMap.remove(id)
deletePlugin(id)
}
def repositories: List[PluginRepository] = repositoriesList.toList
@@ -37,7 +40,7 @@ object PluginSystem extends PluginService {
/**
* Initializes the plugin system. Load scripts from GITBUCKET_HOME/plugins.
*/
def init(): Unit = {
def init()(implicit session: Session): Unit = {
if(initialized.compareAndSet(false, true)){
// Load installed plugins
val pluginDir = new java.io.File(PluginHome)
@@ -52,7 +55,7 @@ object PluginSystem extends PluginService {
}
// TODO Method name seems to not so good.
def installPlugin(id: String): Unit = {
def installPlugin(id: String)(implicit session: Session): Unit = {
val pluginDir = new java.io.File(PluginHome)
val scalaFile = new java.io.File(pluginDir, id + "/plugin.scala")

View File

@@ -14,6 +14,6 @@ trait PluginService {
def deletePlugin(pluginId: String)(implicit s: Session): Unit = Plugins.filter(_.pluginId === pluginId.bind).delete
def getPlugin(pluginId: String): Option[Plugin] = Plugins.filter(_.pluginId === pluginId.bind).firstOption
def getPlugin(pluginId: String)(implicit s: Session): Option[Plugin] = Plugins.filter(_.pluginId === pluginId.bind).firstOption
}

View File

@@ -180,10 +180,12 @@ class AutoUpdateListener extends ServletContextListener {
System.setProperty("gitbucket.home", datadir)
}
org.h2.Driver.load()
event.getServletContext.setInitParameter("db.url", s"jdbc:h2:${DatabaseHome};MVCC=true")
logger.debug("Start schema update")
val context = event.getServletContext
context.setInitParameter("db.url", s"jdbc:h2:${DatabaseHome};MVCC=true")
defining(getConnection(event.getServletContext)){ conn =>
logger.debug("Start schema update")
try {
defining(getCurrentVersion()){ currentVersion =>
if(currentVersion == headVersion){
@@ -193,7 +195,6 @@ class AutoUpdateListener extends ServletContextListener {
} else {
versions.takeWhile(_ != currentVersion).reverse.foreach(_.update(conn))
FileUtils.writeStringToFile(versionFile, headVersion.versionString, "UTF-8")
conn.commit()
logger.debug(s"Updated from ${currentVersion.versionString} to ${headVersion.versionString}")
}
}
@@ -204,10 +205,12 @@ class AutoUpdateListener extends ServletContextListener {
conn.rollback()
}
}
}
logger.debug("End schema update")
}
getDatabase(context).withSession { implicit session =>
logger.debug("Starting plugin system...")
try {
plugin.PluginSystem.init()
scheduler.start()
@@ -215,6 +218,14 @@ class AutoUpdateListener extends ServletContextListener {
logger.debug("PluginUpdateJob is started.")
logger.debug("Plugin system is initialized.")
} catch {
case ex: Throwable => {
logger.error("Failed to initialize plugin system", ex)
ex.printStackTrace()
session.rollback()
}
}
}
}
def contextDestroyed(sce: ServletContextEvent): Unit = {
@@ -227,4 +238,10 @@ class AutoUpdateListener extends ServletContextListener {
servletContext.getInitParameter("db.user"),
servletContext.getInitParameter("db.password"))
private def getDatabase(servletContext: ServletContext): scala.slick.jdbc.JdbcBackend.Database =
slick.jdbc.JdbcBackend.Database.forURL(
servletContext.getInitParameter("db.url"),
servletContext.getInitParameter("db.user"),
servletContext.getInitParameter("db.password"))
}