diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-07-22 00:06:06 +0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-07-22 00:13:03 +0800 |
commit | f08ecab418034f99f6fcf0a469d02f3435345cc2 (patch) | |
tree | 0a9fe1520fcc7491fbaecd5ca65b681ced8106ee | |
parent | 1cfe997b4d8874738c2ed384dc221420b42f551b (diff) | |
download | cask-f08ecab418034f99f6fcf0a469d02f3435345cc2.tar.gz cask-f08ecab418034f99f6fcf0a469d02f3435345cc2.tar.bz2 cask-f08ecab418034f99f6fcf0a469d02f3435345cc2.zip |
renamings
-rw-r--r-- | cask/src/cask/Endpoints.scala (renamed from cask/src/cask/Annotations.scala) | 14 | ||||
-rw-r--r-- | cask/src/cask/Main.scala | 6 | ||||
-rw-r--r-- | cask/src/cask/Routes.scala | 20 | ||||
-rw-r--r-- | cask/test/src/test/cask/VariableRoutes.scala | 4 |
4 files changed, 21 insertions, 23 deletions
diff --git a/cask/src/cask/Annotations.scala b/cask/src/cask/Endpoints.scala index 17e6b0a..8363104 100644 --- a/cask/src/cask/Annotations.scala +++ b/cask/src/cask/Endpoints.scala @@ -4,7 +4,7 @@ import cask.Router.EntryPoint import io.undertow.server.HttpServerExchange import collection.JavaConverters._ -trait EndpointAnnotation[R]{ +trait Endpoint[R]{ val path: String def subpath: Boolean = false def wrapMethodOutput(t: R): Any @@ -16,7 +16,7 @@ trait EndpointAnnotation[R]{ routes: Routes, entryPoint: EntryPoint[Routes, (HttpServerExchange, Seq[String])]): Router.Result[Response] } -trait RouteBase extends EndpointAnnotation[Response]{ +trait WebEndpoint extends Endpoint[Response]{ def wrapMethodOutput(t: Response) = t def handle(exchange: HttpServerExchange, remaining: Seq[String], @@ -34,11 +34,11 @@ trait RouteBase extends EndpointAnnotation[Response]{ .asInstanceOf[Router.Result[Response]] } } -class get(val path: String, override val subpath: Boolean = false) extends RouteBase -class post(val path: String, override val subpath: Boolean = false) extends RouteBase -class put(val path: String, override val subpath: Boolean = false) extends RouteBase -class route(val path: String, val methods: Seq[String], override val subpath: Boolean = false) extends RouteBase -class static(val path: String) extends EndpointAnnotation[String] { +class get(val path: String, override val subpath: Boolean = false) extends WebEndpoint +class post(val path: String, override val subpath: Boolean = false) extends WebEndpoint +class put(val path: String, override val subpath: Boolean = false) extends WebEndpoint +class route(val path: String, val methods: Seq[String], override val subpath: Boolean = false) extends WebEndpoint +class static(val path: String) extends Endpoint[String] { override def subpath = true def wrapOutput(t: String) = t diff --git a/cask/src/cask/Main.scala b/cask/src/cask/Main.scala index 4469a1e..8cdbd4f 100644 --- a/cask/src/cask/Main.scala +++ b/cask/src/cask/Main.scala @@ -3,7 +3,7 @@ import cask.Router.EntryPoint import java.io.OutputStream import java.nio.ByteBuffer -import cask.Routes.Metadata +import cask.Routes.RoutesEndpointsMetadata import io.undertow.Undertow import io.undertow.server.handlers.BlockingHandler import io.undertow.server.{HttpHandler, HttpServerExchange} @@ -22,10 +22,10 @@ abstract class BaseMain{ lazy val routeList = for{ routes <- allRoutes - route <- routes.caskMetadata.value.map(x => x: Routes.RouteMetadata[_]) + route <- routes.caskMetadata.value.map(x => x: Routes.EndpointMetadata[_]) } yield (routes, route) - lazy val routeTrie = DispatchTrie.construct[(Routes, Routes.RouteMetadata[_])](0, + lazy val routeTrie = DispatchTrie.construct[(Routes, Routes.EndpointMetadata[_])](0, for((route, metadata) <- routeList) yield (Util.splitPath(metadata.metadata.path): IndexedSeq[String], (route, metadata), metadata.metadata.subpath) ) diff --git a/cask/src/cask/Routes.scala b/cask/src/cask/Routes.scala index 0145c91..01783f0 100644 --- a/cask/src/cask/Routes.scala +++ b/cask/src/cask/Routes.scala @@ -31,18 +31,18 @@ object Response{ } object Routes{ - case class RouteMetadata[T](metadata: EndpointAnnotation[_], - entryPoint: EntryPoint[T, (HttpServerExchange, Seq[String])]) - case class Metadata[T](value: RouteMetadata[T]*) - object Metadata{ + case class EndpointMetadata[T](metadata: Endpoint[_], + entryPoint: EntryPoint[T, (HttpServerExchange, Seq[String])]) + case class RoutesEndpointsMetadata[T](value: EndpointMetadata[T]*) + object RoutesEndpointsMetadata{ implicit def initialize[T] = macro initializeImpl[T] - implicit def initializeImpl[T: c.WeakTypeTag](c: Context): c.Expr[Metadata[T]] = { + implicit def initializeImpl[T: c.WeakTypeTag](c: Context): c.Expr[RoutesEndpointsMetadata[T]] = { import c.universe._ val router = new cask.Router[c.type](c) val routeParts = for{ m <- c.weakTypeOf[T].members - annot <- m.annotations.filter(_.tree.tpe <:< c.weakTypeOf[EndpointAnnotation[_]]) + annot <- m.annotations.filter(_.tree.tpe <:< c.weakTypeOf[Endpoint[_]]) } yield { val annotObject = q"new ${annot.tree.tpe}(..${annot.tree.children.tail})" val annotObjectSym = c.universe.TermName(c.freshName("annotObject")) @@ -57,22 +57,22 @@ object Routes{ q"""{ val $annotObjectSym = $annotObject - cask.Routes.RouteMetadata($annotObjectSym, $route) + cask.Routes.EndpointMetadata($annotObjectSym, $route) }""" } - c.Expr[Metadata[T]](q"""cask.Routes.Metadata(..$routeParts)""") + c.Expr[RoutesEndpointsMetadata[T]](q"""cask.Routes.RoutesEndpointsMetadata(..$routeParts)""") } } } trait Routes{ - private[this] var metadata0: Routes.Metadata[this.type] = null + private[this] var metadata0: Routes.RoutesEndpointsMetadata[this.type] = null def caskMetadata = if (metadata0 != null) metadata0 else throw new Exception("Routes not yet initialize") - protected[this] def initialize()(implicit routes: Routes.Metadata[this.type]): Unit = { + protected[this] def initialize()(implicit routes: Routes.RoutesEndpointsMetadata[this.type]): Unit = { metadata0 = routes } } diff --git a/cask/test/src/test/cask/VariableRoutes.scala b/cask/test/src/test/cask/VariableRoutes.scala index 1dda4e6..d1816ab 100644 --- a/cask/test/src/test/cask/VariableRoutes.scala +++ b/cask/test/src/test/cask/VariableRoutes.scala @@ -1,7 +1,5 @@ package test.cask -import cask.Subpath - object VariableRoutes extends cask.MainRoutes{ @cask.get("/user/:userName") def showUserProfile(userName: String) = { @@ -14,7 +12,7 @@ object VariableRoutes extends cask.MainRoutes{ } @cask.get("/path", subpath = true) - def showSubpath(subPath: Subpath) = { + def showSubpath(subPath: cask.Subpath) = { s"Subpath ${subPath.value}" } |