package scalaz
package http
package servlet
import javax.servlet.{ServletRequest, ServletResponse, Filter, FilterChain, FilterConfig}
import HttpServletRequest._
final class FlashFilter extends Filter {
override def init(config : FilterConfig) = {}
override def destroy = {}
import FlashFilter.flashParameter
override def doFilter(request : ServletRequest, response : ServletResponse, chain : FilterChain) {
val r = request.asInstanceOf[javax.servlet.http.HttpServletRequest]
r.session(flashParameter) foreach (flash => {
r(flashParameter) = flash
r.session -= (flashParameter)
})
chain.doFilter(request, response)
}
}
object FlashFilter {
val flashParameter = "scalaz.http.servlet.FlashFilter.flashParameter"
def flashSet[A](v: A)(implicit r: HttpServletRequest) {
r.session(flashParameter) = v
}
def flashGet[A](implicit r: HttpServletRequest) = r attr flashParameter map (_.asInstanceOf[A])
}