diff --git a/src/main/scala/plugin/Plugin.scala b/src/main/scala/plugin/Plugin.scala index 3c9fe4a..e797699 100644 --- a/src/main/scala/plugin/Plugin.scala +++ b/src/main/scala/plugin/Plugin.scala @@ -2,6 +2,10 @@ import util.Version +/** + * Trait for define plugin interface. + * To provide plugin, put Plugin class which mixed in this trait into the package root. + */ trait Plugin { val pluginId: String @@ -9,8 +13,16 @@ val description: String val versions: Seq[Version] + /** + * This method is invoked in initialization of plugin system. + * Register plugin functionality to PluginRegistry. + */ def initialize(registry: PluginRegistry): 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): Unit } diff --git a/src/main/scala/plugin/PluginRegistory.scala b/src/main/scala/plugin/PluginRegistory.scala index 186b38a..c924922 100644 --- a/src/main/scala/plugin/PluginRegistory.scala +++ b/src/main/scala/plugin/PluginRegistory.scala @@ -73,14 +73,23 @@ } +/** + * Provides entry point to PluginRegistry. + */ object PluginRegistry { private val logger = LoggerFactory.getLogger(classOf[PluginRegistry]) private val instance = new PluginRegistry() + /** + * Returns the PluginRegistry singleton instance. + */ def apply(): PluginRegistry = instance + /** + * Initializes all installed plugins. + */ def initialize(conn: java.sql.Connection): Unit = { val pluginDir = new File(PluginHome) if(pluginDir.exists && pluginDir.isDirectory){ diff --git a/src/main/scala/plugin/Results.scala b/src/main/scala/plugin/Results.scala index c31c170..18fdb7f 100644 --- a/src/main/scala/plugin/Results.scala +++ b/src/main/scala/plugin/Results.scala @@ -2,6 +2,9 @@ import play.twirl.api.Html +/** + * Defines result case classes returned by plugin controller. + */ object Results { case class Redirect(path: String) case class Fragment(html: Html)