diff --git a/etc/deploy-assemby-jar.sh b/etc/deploy-assemby-jar.sh old mode 100644 new mode 100755 diff --git a/src/main/scala/plugin/Images.scala b/src/main/scala/plugin/Images.scala new file mode 100644 index 0000000..b569f07 --- /dev/null +++ b/src/main/scala/plugin/Images.scala @@ -0,0 +1,10 @@ +package plugin + +/** + * Provides a helper method to generate data URI of images registered by plug-in. + */ +object Images { + + def dataURI(id: String) = s"data:image/png;base64,${PluginRegistry().getImage(id)}" + +} diff --git a/src/main/scala/plugin/PluginRegistory.scala b/src/main/scala/plugin/PluginRegistory.scala index bb7c2cb..ebdf7db 100644 --- a/src/main/scala/plugin/PluginRegistory.scala +++ b/src/main/scala/plugin/PluginRegistory.scala @@ -1,16 +1,19 @@ package plugin -import java.io.{FilenameFilter, File} +import java.io.{InputStream, FilenameFilter, File} import java.net.URLClassLoader import javax.servlet.ServletContext import javax.servlet.http.{HttpServletRequest, HttpServletResponse} import org.slf4j.LoggerFactory +import org.apache.commons.codec.binary.{StringUtils, Base64} import service.RepositoryService.RepositoryInfo import util.Directory._ import util.JDBCUtil._ +import util.ControlUtil._ import util.{Version, Versions} +import scala.collection.mutable import scala.collection.mutable.ListBuffer import app.{ControllerBase, Context} @@ -19,6 +22,7 @@ private val plugins = new ListBuffer[PluginInfo] private val javaScripts = new ListBuffer[(String, String)] private val controllers = new ListBuffer[(ControllerBase, String)] + private val images = mutable.Map[String, String]() def addPlugin(pluginInfo: PluginInfo): Unit = { plugins += pluginInfo @@ -26,6 +30,18 @@ def getPlugins(): List[PluginInfo] = plugins.toList + def addImage(id: String, in: InputStream): Unit = { + val bytes = using(in){ in => + val bytes = new Array[Byte](in.available) + in.read(bytes) + bytes + } + val encoded = StringUtils.newStringUtf8(Base64.encodeBase64(bytes, false)) + images += ((id, encoded)) + } + + def getImage(id: String): String = images(id) + def addController(controller: ControllerBase, path: String): Unit = { controllers += ((controller, path)) }