--
You received this message because you are subscribed to the Google Groups "play-framework" group.
To post to this group, send email to play-fr...@googlegroups.com.
To unsubscribe from this group, send email to play-framewor...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/play-framework?hl=en.
I'm not sure what you are trying to do but:
case class CustomRequest(token: String, request: Request[AnyContent])
extends WrappedRequest(request)
case class CustomAction(f: CustomRequest => Result) extends Action[AnyContent] {
lazy val parser = BodyParsers.parse.anyContent
def apply(req: Request[AnyContent]) = req match {
case r: CustomRequest => f(r)
case _ => sys.error("Invalid usage")
}
}
object Application extends Controller {
def index = CustomAction { request =>
Ok("Token: " + request.token)
}
}
With onRouteRequest:
override def onRouteRequest(req: RequestHeader) = {
super.onRouteRequest(req).map { _ match {
case a: CustomAction => Action { (request: Request[AnyContent]) =>
a(CustomRequest("XXX", request))
}
case o => o
}
}
}
--
Guillaume Bort
case class CustomRequest[A](token: String, request: Request[A])
extends WrappedRequest(request)
case class CustomAction[A](f: CustomRequest[A] => Result)(implicit bp: BodyParser[A]) extends Action[A] {
lazy val parser = bp
def apply(req: Request[A]) = req match {
case r: CustomRequest[_] => f(r.asInstanceOf[CustomRequest[A]])
case _ => sys.error("Invalid usage")
}
}
object Application extends Controller {
def index = CustomAction[AnyContent] { request =>
Ok("Token: " + request.token)
}
}
With onRouteRequest:
override def onRouteRequest(req: RequestHeader) = {
super.onRouteRequest(req).map { _ match {
case a: CustomAction[_] => Action { (request: Request[_]) =>
BTW, this sets the BodyParser to AnyContent. I tried making CustomRequest generic but I got into trouble in onRouteRequest. Any suggestion?