forked from scalatra/scalatra
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ScalatraKernelProxy.scala
53 lines (43 loc) · 1.51 KB
/
ScalatraKernelProxy.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package org.scalatra.auth
import org.scalatra.RouteMatcher
import javax.servlet.http.{HttpServletResponse, HttpServletRequest, HttpServlet, HttpSession}
/**
* Created by IntelliJ IDEA.
* User: ivan
* Date: Aug 21, 2010
* Time: 10:04:05 AM
*
*/
class ScalatraKernelProxy {
private var _session: () => HttpSession = _
private var _params: () => collection.Map[String, String] = _
private var _redirect: String => Unit = _
private var _request: () => HttpServletRequest = _
private var _response: () => HttpServletResponse = _
def session = _session()
private[auth] def session_=(sess: => HttpSession) = {
_session = () => sess
}
def params = _params()
private[auth] def params_=(paramsBag: => collection.Map[String, String]) = {
_params = () => paramsBag
}
def redirect(uri: String) = _redirect(uri)
private[auth] def redirect_=(redirectFunction: String => Unit) = _redirect = redirectFunction
def request = _request()
def response = _response()
def request_=(req: => HttpServletRequest) = _request = () => req
def response_=(res: => HttpServletResponse) = _response = () => res
}
object ScalatraKernelProxy {
def apply(session: => HttpSession, params: => collection.Map[String, String], redirect: String => Unit,
request: => HttpServletRequest, response: => HttpServletResponse ) ={
val ctxt = new ScalatraKernelProxy
ctxt.session = session
ctxt.params = params
ctxt.redirect_=(redirect)
ctxt.response = response
ctxt.request = request
ctxt
}
}