summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2019-10-09 10:16:58 +0800
committerLi Haoyi <haoyi.sg@gmail.com>2019-10-09 10:16:58 +0800
commitcecd94d094ca0e77a03a1a2561a2955565e4df22 (patch)
tree3d17774eda005f51c9f33a77ccae3e20de511f3f
parent15a862949a58debc9a233cff47463dde1755dfbd (diff)
downloadcask-cecd94d094ca0e77a03a1a2561a2955565e4df22.tar.gz
cask-cecd94d094ca0e77a03a1a2561a2955565e4df22.tar.bz2
cask-cecd94d094ca0e77a03a1a2561a2955565e4df22.zip
Genericize `cask.Main#decorators` and `cask.Routes#decorators` to allow other non-http-response results
-rw-r--r--cask/src/cask/main/Main.scala4
-rw-r--r--cask/src/cask/main/Routes.scala2
-rw-r--r--cask/src/cask/router/Decorators.scala6
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 =>