(refs #32)Example of custom action extension

This commit is contained in:
Naoki Takezoe
2014-06-05 21:22:16 +09:00
parent 6f666ca49f
commit b0b318ce30
3 changed files with 55 additions and 5 deletions

View File

@@ -0,0 +1,40 @@
package servlet
import javax.servlet._
import javax.servlet.http.{HttpServletResponse, HttpServletRequest}
import org.apache.commons.io.IOUtils
class PluginActionInvokeFilter extends Filter {
def init(config: FilterConfig) = {}
def destroy(): Unit = {}
def doFilter(req: ServletRequest, res: ServletResponse, chain: FilterChain): Unit = {
(req, res) match {
case (request: HttpServletRequest, response: HttpServletResponse) => {
val path = req.asInstanceOf[HttpServletRequest].getRequestURI
//println(req.asInstanceOf[HttpServletRequest].getContextPath)
//println(req.asInstanceOf[HttpServletRequest].getRequestURL)
val action = plugin.PluginSystem.actions.find(_.path == path)
if(action.isDefined){
val result = action.get.function(request, response)
result match {
case x: String => {
response.setContentType("text/plain; charset=UTF-8")
IOUtils.write(x.getBytes("UTF-8"), response.getOutputStream)
}
case x => {
// TODO returns as JSON?
}
}
} else {
chain.doFilter(req, res)
}
}
}
}
}