From cecd94d094ca0e77a03a1a2561a2955565e4df22 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Wed, 9 Oct 2019 10:16:58 +0800 Subject: Genericize `cask.Main#decorators` and `cask.Routes#decorators` to allow other non-http-response results --- cask/src/cask/main/Main.scala | 4 ++-- cask/src/cask/main/Routes.scala | 2 +- cask/src/cask/router/Decorators.scala | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cask/src/cask/main/Main.scala b/cask/src/cask/main/Main.scala index 6d08c04..0bc1abf 100644 --- a/cask/src/cask/main/Main.scala +++ b/cask/src/cask/main/Main.scala @@ -27,7 +27,7 @@ class MainRoutes extends Main with Routes{ * application-wide properties. */ abstract class Main{ - def mainDecorators: Seq[RawDecorator] = Nil + def mainDecorators: Seq[Decorator[_, _]] = Nil def allRoutes: Seq[Routes] def port: Int = 8080 def host: String = "localhost" @@ -61,7 +61,7 @@ abstract class Main{ object Main{ class DefaultHandler(routeTries: Map[String, DispatchTrie[(Routes, EndpointMetadata[_])]], - mainDecorators: Seq[RawDecorator], + mainDecorators: Seq[Decorator[_, _]], debugMode: Boolean, handleNotFound: () => Response.Raw, handleError: (Routes, EndpointMetadata[_], Result.Error) => Response.Raw) diff --git a/cask/src/cask/main/Routes.scala b/cask/src/cask/main/Routes.scala index f93e641..59da2c7 100644 --- a/cask/src/cask/main/Routes.scala +++ b/cask/src/cask/main/Routes.scala @@ -6,7 +6,7 @@ import language.experimental.macros trait Routes{ - def decorators = Seq.empty[cask.router.RawDecorator] + def decorators = Seq.empty[cask.router.Decorator[_, _]] implicit def executionContext = concurrent.ExecutionContext.Implicits.global private[this] var metadata0: RoutesEndpointsMetadata[this.type] = null def caskMetadata = diff --git a/cask/src/cask/router/Decorators.scala b/cask/src/cask/router/Decorators.scala index 14b4ab4..d661177 100644 --- a/cask/src/cask/router/Decorators.scala +++ b/cask/src/cask/router/Decorators.scala @@ -39,14 +39,14 @@ object Decorator{ entryPoint: EntryPoint[T, _], routes: T, routeBindings: Map[String, String], - remainingDecorators: List[RawDecorator], + remainingDecorators: List[Decorator[_, _]], bindings: List[Map[String, Any]]): Result[Any] = try { remainingDecorators match { case head :: rest => - head.wrapFunction( + head.asInstanceOf[Decorator[Any, Any]].wrapFunction( ctx, args => invoke(ctx, endpoint, entryPoint, routes, routeBindings, rest, args :: bindings) - .asInstanceOf[Result[cask.model.Response.Raw]] + .asInstanceOf[Result[Nothing]] ) case Nil => -- cgit v1.2.3