def get[RequestType: TypeTag, ResponseType: TypeTag]()

in http-server/src/main/scala/com/twitter/finatra/http/RouteDSL.scala [126:579]


  def get[RequestType: TypeTag, ResponseType: TypeTag](
    route: String,
    name: String = "",
    admin: Boolean = false,
    index: Option[RouteIndex] = None
  )(
    callback: RequestType => ResponseType
  ): Unit =
    add(Get, route, name, admin, index, callback)

  /* For Java compatibility */

  protected def get(
    route: String,
    callback: JavaCallback[Request, Object]
  ): Unit =
    get(route, admin = false, callback)

  protected def get(
    route: String,
    admin: Boolean,
    callback: JavaCallback[Request, Object]
  ): Unit =
    get(route, admin, null, callback)

  protected def get(
    route: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    get(route, "", admin, index, callback)

  protected def get(
    route: String,
    name: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    get[Request, Object](
      route,
      name,
      admin,
      Option(index)
    )(callback.apply)

  /* POST/ */

  def post[RequestType: TypeTag, ResponseType: TypeTag](
    route: String,
    name: String = "",
    admin: Boolean = false,
    index: Option[RouteIndex] = None
  )(
    callback: RequestType => ResponseType
  ): Unit =
    add(Post, route, name, admin, index, callback)

  /* For Java compatibility */

  protected def post(
    route: String,
    callback: JavaCallback[Request, Object]
  ): Unit =
    post(route, admin = false, callback)

  protected def post(
    route: String,
    admin: Boolean,
    callback: JavaCallback[Request, Object]
  ): Unit =
    post(route, admin, null, callback)

  protected def post(
    route: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    post(route, "", admin, index, callback)

  protected def post(
    route: String,
    name: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    post[Request, Object](
      route,
      name,
      admin,
      Option(index)
    )(callback.apply)

  /* PUT/ */

  def put[RequestType: TypeTag, ResponseType: TypeTag](
    route: String,
    name: String = "",
    admin: Boolean = false,
    index: Option[RouteIndex] = None
  )(
    callback: RequestType => ResponseType
  ): Unit =
    add(Put, route, name, admin, index, callback)

  /* For Java compatibility */

  protected def put(
    route: String,
    callback: JavaCallback[Request, Object]
  ): Unit =
    put(route, admin = false, callback)

  protected def put(
    route: String,
    admin: Boolean,
    callback: JavaCallback[Request, Object]
  ): Unit =
    put(route, admin, null, callback)

  protected def put(
    route: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    put(route, "", admin, index, callback)

  protected def put(
    route: String,
    name: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    put[Request, Object](
      route,
      name,
      admin,
      Option(index)
    )(callback.apply)

  /* HEAD/ */

  def head[RequestType: TypeTag, ResponseType: TypeTag](
    route: String,
    name: String = "",
    admin: Boolean = false,
    index: Option[RouteIndex] = None
  )(
    callback: RequestType => ResponseType
  ): Unit =
    add(Head, route, name, admin, index, callback)

  /* For Java compatibility */

  protected def head(
    route: String,
    callback: JavaCallback[Request, Object]
  ): Unit =
    head(route, admin = false, callback)

  protected def head(
    route: String,
    admin: Boolean,
    callback: JavaCallback[Request, Object]
  ): Unit =
    head(route, admin, null, callback)

  protected def head(
    route: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    head(route, "", admin, index, callback)

  protected def head(
    route: String,
    name: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    head[Request, Object](
      route,
      name,
      admin,
      Option(index)
    )(callback.apply)

  /* PATCH/ */

  def patch[RequestType: TypeTag, ResponseType: TypeTag](
    route: String,
    name: String = "",
    admin: Boolean = false,
    index: Option[RouteIndex] = None
  )(
    callback: RequestType => ResponseType
  ): Unit =
    add(Patch, route, name, admin, index, callback)

  /* For Java compatibility */

  protected def patch(
    route: String,
    callback: JavaCallback[Request, Object]
  ): Unit =
    patch(route, admin = false, callback)

  protected def patch(
    route: String,
    admin: Boolean,
    callback: JavaCallback[Request, Object]
  ): Unit =
    patch(route, admin, null, callback)

  protected def patch(
    route: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    patch(route, "", admin, index, callback)

  protected def patch(
    route: String,
    name: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    patch[Request, Object](
      route,
      name,
      admin,
      Option(index)
    )(callback.apply)

  /* DELETE/ */

  def delete[RequestType: TypeTag, ResponseType: TypeTag](
    route: String,
    name: String = "",
    admin: Boolean = false,
    index: Option[RouteIndex] = None
  )(
    callback: RequestType => ResponseType
  ): Unit =
    add(Delete, route, name, admin, index, callback)

  /* For Java compatibility */

  protected def delete(
    route: String,
    callback: JavaCallback[Request, Object]
  ): Unit =
    delete(route, admin = false, callback)

  protected def delete(
    route: String,
    admin: Boolean,
    callback: JavaCallback[Request, Object]
  ): Unit =
    delete(route, admin, null, callback)

  protected def delete(
    route: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    delete(route, "", admin, index, callback)

  protected def delete(
    route: String,
    name: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    delete[Request, Object](
      route,
      name,
      admin,
      Option(index)
    )(callback.apply)

  /* TRACE/ */

  def trace[RequestType: TypeTag, ResponseType: TypeTag](
    route: String,
    name: String = "",
    admin: Boolean = false,
    index: Option[RouteIndex] = None
  )(
    callback: RequestType => ResponseType
  ): Unit =
    add(Trace, route, name, admin, index, callback)

  /* For Java compatibility */

  protected def trace(
    route: String,
    callback: JavaCallback[Request, Object]
  ): Unit =
    trace(route, admin = false, callback)

  protected def trace(
    route: String,
    admin: Boolean,
    callback: JavaCallback[Request, Object]
  ): Unit =
    trace(route, admin, null, callback)

  protected def trace(
    route: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    trace(route, "", admin, index, callback)

  protected def trace(
    route: String,
    name: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    trace[Request, Object](
      route,
      name,
      admin,
      Option(index)
    )(callback.apply)

  /* OPTIONS/ */

  def options[RequestType: TypeTag, ResponseType: TypeTag](
    route: String,
    name: String = "",
    admin: Boolean = false,
    index: Option[RouteIndex] = None
  )(
    callback: RequestType => ResponseType
  ): Unit =
    add(Options, route, name, admin, index, callback)

  /* For Java compatibility */

  protected def options(
    route: String,
    callback: JavaCallback[Request, Object]
  ): Unit =
    options(route, admin = false, callback)

  protected def options(
    route: String,
    admin: Boolean,
    callback: JavaCallback[Request, Object]
  ): Unit =
    options(route, admin, null, callback)

  protected def options(
    route: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    options(route, "", admin, index, callback)

  protected def options(
    route: String,
    name: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    options[Request, Object](
      route,
      name,
      admin,
      Option(index)
    )(callback.apply)

  /* ANY/ */

  def any[RequestType: TypeTag, ResponseType: TypeTag](
    route: String,
    name: String = "",
    admin: Boolean = false,
    index: Option[RouteIndex] = None
  )(
    callback: RequestType => ResponseType
  ): Unit =
    add(AnyMethod, route, name, admin, index, callback)

  /* For Java compatibility */

  protected def any(
    route: String,
    callback: JavaCallback[Request, Object]
  ): Unit =
    any(route, admin = false, callback)

  protected def any(
    route: String,
    admin: Boolean,
    callback: JavaCallback[Request, Object]
  ): Unit =
    any(route, admin, null, callback)

  protected def any(
    route: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    any(route, "", admin, index, callback)

  protected def any(
    route: String,
    name: String,
    admin: Boolean,
    index: RouteIndex,
    callback: JavaCallback[Request, Object]
  ): Unit =
    any[Request, Object](
      route,
      name,
      admin,
      Option(index)
    )(callback.apply)

  /* Private */

  /* A function that wraps another and sets any contexts, if necessary */
  private[http] def contextWrapper[T](f: => T): T = f

  /* Execute a block with a given RouteContext */
  private[http] def withContext[T](ctx: RouteContext)(f: => T): T = {
    val orig = contextVar()
    contextVar() = ctx
    try {
      f
    } finally {
      contextVar() = orig
    }
  }