def add()

in http-server/src/main/scala/com/twitter/finatra/http/routing/HttpRouter.scala [234:647]


  def add(
    f1Clazz: Class[_ <: HttpFilter],
    controllerClazz: Class[_ <: AbstractController]
  ): HttpRouter =
    add(injector.instance(f1Clazz), injector.instance(controllerClazz))

  /** Add per-controller filters (Note: Per-controller filters only run if the paired controller has a matching route) */
  def add[
    F1 <: HttpFilter: Manifest,
    F2 <: HttpFilter: Manifest,
    C <: Controller: Manifest
  ]: HttpRouter =
    addFiltered[C](
      injector
        .instance[F1]
        .andThen(injector.instance[F2])
    )

  /**
   * Add per-controller filter (Note: Per-controller filters only run if the paired controller has a matching route).
   *
   * This is a recommended API for Java users. Scala users should prefer [[Manifest]]-variant of this method.
   */
  def add(
    f1Clazz: Class[_ <: HttpFilter],
    f2Clazz: Class[_ <: HttpFilter],
    controllerClazz: Class[_ <: AbstractController]
  ): HttpRouter =
    add(
      injector.instance(f1Clazz).andThen(injector.instance(f2Clazz)),
      injector.instance(controllerClazz)
    )

  /** Add per-controller filters (Note: Per-controller filters only run if the paired controller has a matching route) */
  def add[
    F1 <: HttpFilter: Manifest,
    F2 <: HttpFilter: Manifest,
    F3 <: HttpFilter: Manifest,
    C <: Controller: Manifest
  ]: HttpRouter =
    addFiltered[C](
      injector
        .instance[F1]
        .andThen(injector.instance[F2])
        .andThen(injector.instance[F3])
    )

  /**
   * Add per-controller filter (Note: Per-controller filters only run if the paired controller has a matching route).
   *
   * This is a recommended API for Java users. Scala users should prefer [[Manifest]]-variant of this method.
   */
  def add(
    f1Clazz: Class[_ <: HttpFilter],
    f2Clazz: Class[_ <: HttpFilter],
    f3Clazz: Class[_ <: HttpFilter],
    controllerClazz: Class[_ <: AbstractController]
  ): HttpRouter =
    add(
      injector
        .instance(f1Clazz)
        .andThen(injector.instance(f2Clazz))
        .andThen(injector.instance(f3Clazz)),
      injector.instance(controllerClazz)
    )

  /** Add per-controller filters (Note: Per-controller filters only run if the paired controller has a matching route) */
  def add[
    F1 <: HttpFilter: Manifest,
    F2 <: HttpFilter: Manifest,
    F3 <: HttpFilter: Manifest,
    F4 <: HttpFilter: Manifest,
    C <: Controller: Manifest
  ]: HttpRouter =
    addFiltered[C](
      injector
        .instance[F1]
        .andThen(injector.instance[F2])
        .andThen(injector.instance[F3])
        .andThen(injector.instance[F4])
    )

  /**
   * Add per-controller filter (Note: Per-controller filters only run if the paired controller has a matching route).
   *
   * This is a recommended API for Java users. Scala users should prefer [[Manifest]]-variant of this method.
   */
  def add(
    f1Clazz: Class[_ <: HttpFilter],
    f2Clazz: Class[_ <: HttpFilter],
    f3Clazz: Class[_ <: HttpFilter],
    f4Clazz: Class[_ <: HttpFilter],
    controllerClazz: Class[_ <: AbstractController]
  ): HttpRouter =
    add(
      injector
        .instance(f1Clazz)
        .andThen(injector.instance(f2Clazz))
        .andThen(injector.instance(f3Clazz))
        .andThen(injector.instance(f4Clazz)),
      injector.instance(controllerClazz)
    )

  /** Add per-controller filters (Note: Per-controller filters only run if the paired controller has a matching route) */
  def add[
    F1 <: HttpFilter: Manifest,
    F2 <: HttpFilter: Manifest,
    F3 <: HttpFilter: Manifest,
    F4 <: HttpFilter: Manifest,
    F5 <: HttpFilter: Manifest,
    C <: Controller: Manifest
  ]: HttpRouter =
    addFiltered[C](
      injector
        .instance[F1]
        .andThen(injector.instance[F2])
        .andThen(injector.instance[F3])
        .andThen(injector.instance[F4])
        .andThen(injector.instance[F5])
    )

  /**
   * Add per-controller filter (Note: Per-controller filters only run if the paired controller has a matching route).
   *
   * This is a recommended API for Java users. Scala users should prefer [[Manifest]]-variant of this method.
   */
  def add(
    f1Clazz: Class[_ <: HttpFilter],
    f2Clazz: Class[_ <: HttpFilter],
    f3Clazz: Class[_ <: HttpFilter],
    f4Clazz: Class[_ <: HttpFilter],
    f5Clazz: Class[_ <: HttpFilter],
    controllerClazz: Class[_ <: AbstractController]
  ): HttpRouter =
    add(
      injector
        .instance(f1Clazz)
        .andThen(injector.instance(f2Clazz))
        .andThen(injector.instance(f3Clazz))
        .andThen(injector.instance(f4Clazz))
        .andThen(injector.instance(f5Clazz)),
      injector.instance(controllerClazz)
    )

  /** Add per-controller filters (Note: Per-controller filters only run if the paired controller has a matching route) */
  def add[
    F1 <: HttpFilter: Manifest,
    F2 <: HttpFilter: Manifest,
    F3 <: HttpFilter: Manifest,
    F4 <: HttpFilter: Manifest,
    F5 <: HttpFilter: Manifest,
    F6 <: HttpFilter: Manifest,
    C <: Controller: Manifest
  ]: HttpRouter =
    addFiltered[C](
      injector
        .instance[F1]
        .andThen(injector.instance[F2])
        .andThen(injector.instance[F3])
        .andThen(injector.instance[F4])
        .andThen(injector.instance[F5])
        .andThen(injector.instance[F6])
    )

  /**
   * Add per-controller filter (Note: Per-controller filters only run if the paired controller has a matching route).
   *
   * This is a recommended API for Java users. Scala users should prefer [[Manifest]]-variant of this method.
   */
  def add(
    f1Clazz: Class[_ <: HttpFilter],
    f2Clazz: Class[_ <: HttpFilter],
    f3Clazz: Class[_ <: HttpFilter],
    f4Clazz: Class[_ <: HttpFilter],
    f5Clazz: Class[_ <: HttpFilter],
    f6Clazz: Class[_ <: HttpFilter],
    controllerClazz: Class[_ <: AbstractController]
  ): HttpRouter =
    add(
      injector
        .instance(f1Clazz)
        .andThen(injector.instance(f2Clazz))
        .andThen(injector.instance(f3Clazz))
        .andThen(injector.instance(f4Clazz))
        .andThen(injector.instance(f5Clazz))
        .andThen(injector.instance(f6Clazz)),
      injector.instance(controllerClazz)
    )

  /** Add per-controller filters (Note: Per-controller filters only run if the paired controller has a matching route) */
  def add[
    F1 <: HttpFilter: Manifest,
    F2 <: HttpFilter: Manifest,
    F3 <: HttpFilter: Manifest,
    F4 <: HttpFilter: Manifest,
    F5 <: HttpFilter: Manifest,
    F6 <: HttpFilter: Manifest,
    F7 <: HttpFilter: Manifest,
    C <: Controller: Manifest
  ]: HttpRouter =
    addFiltered[C](
      injector
        .instance[F1]
        .andThen(injector.instance[F2])
        .andThen(injector.instance[F3])
        .andThen(injector.instance[F4])
        .andThen(injector.instance[F5])
        .andThen(injector.instance[F6])
        .andThen(injector.instance[F7])
    )

  /**
   * Add per-controller filter (Note: Per-controller filters only run if the paired controller has a matching route).
   *
   * This is a recommended API for Java users. Scala users should prefer [[Manifest]]-variant of this method.
   */
  def add(
    f1Clazz: Class[_ <: HttpFilter],
    f2Clazz: Class[_ <: HttpFilter],
    f3Clazz: Class[_ <: HttpFilter],
    f4Clazz: Class[_ <: HttpFilter],
    f5Clazz: Class[_ <: HttpFilter],
    f6Clazz: Class[_ <: HttpFilter],
    f7Clazz: Class[_ <: HttpFilter],
    controllerClazz: Class[_ <: AbstractController]
  ): HttpRouter =
    add(
      injector
        .instance(f1Clazz)
        .andThen(injector.instance(f2Clazz))
        .andThen(injector.instance(f3Clazz))
        .andThen(injector.instance(f4Clazz))
        .andThen(injector.instance(f5Clazz))
        .andThen(injector.instance(f6Clazz))
        .andThen(injector.instance(f7Clazz)),
      injector.instance(controllerClazz)
    )

  /** Add per-controller filters (Note: Per-controller filters only run if the paired controller has a matching route) */
  def add[
    F1 <: HttpFilter: Manifest,
    F2 <: HttpFilter: Manifest,
    F3 <: HttpFilter: Manifest,
    F4 <: HttpFilter: Manifest,
    F5 <: HttpFilter: Manifest,
    F6 <: HttpFilter: Manifest,
    F7 <: HttpFilter: Manifest,
    F8 <: HttpFilter: Manifest,
    C <: Controller: Manifest
  ]: HttpRouter =
    addFiltered[C](
      injector
        .instance[F1]
        .andThen(injector.instance[F2])
        .andThen(injector.instance[F3])
        .andThen(injector.instance[F4])
        .andThen(injector.instance[F5])
        .andThen(injector.instance[F6])
        .andThen(injector.instance[F7])
        .andThen(injector.instance[F8])
    )

  /**
   * Add per-controller filter (Note: Per-controller filters only run if the paired controller has a matching route).
   *
   * This is a recommended API for Java users. Scala users should prefer [[Manifest]]-variant of this method.
   */
  def add(
    f1Clazz: Class[_ <: HttpFilter],
    f2Clazz: Class[_ <: HttpFilter],
    f3Clazz: Class[_ <: HttpFilter],
    f4Clazz: Class[_ <: HttpFilter],
    f5Clazz: Class[_ <: HttpFilter],
    f6Clazz: Class[_ <: HttpFilter],
    f7Clazz: Class[_ <: HttpFilter],
    f8Clazz: Class[_ <: HttpFilter],
    controllerClazz: Class[_ <: AbstractController]
  ): HttpRouter =
    add(
      injector
        .instance(f1Clazz)
        .andThen(injector.instance(f2Clazz))
        .andThen(injector.instance(f3Clazz))
        .andThen(injector.instance(f4Clazz))
        .andThen(injector.instance(f5Clazz))
        .andThen(injector.instance(f6Clazz))
        .andThen(injector.instance(f7Clazz))
        .andThen(injector.instance(f8Clazz)),
      injector.instance(controllerClazz)
    )

  /** Add per-controller filters (Note: Per-controller filters only run if the paired controller has a matching route) */
  def add[
    F1 <: HttpFilter: Manifest,
    F2 <: HttpFilter: Manifest,
    F3 <: HttpFilter: Manifest,
    F4 <: HttpFilter: Manifest,
    F5 <: HttpFilter: Manifest,
    F6 <: HttpFilter: Manifest,
    F7 <: HttpFilter: Manifest,
    F8 <: HttpFilter: Manifest,
    F9 <: HttpFilter: Manifest,
    C <: Controller: Manifest
  ]: HttpRouter =
    addFiltered[C](
      injector
        .instance[F1]
        .andThen(injector.instance[F2])
        .andThen(injector.instance[F3])
        .andThen(injector.instance[F4])
        .andThen(injector.instance[F5])
        .andThen(injector.instance[F6])
        .andThen(injector.instance[F7])
        .andThen(injector.instance[F8])
        .andThen(injector.instance[F9])
    )

  /**
   * Add per-controller filter (Note: Per-controller filters only run if the paired controller has a matching route).
   *
   * This is a recommended API for Java users. Scala users should prefer [[Manifest]]-variant of this method.
   */
  def add(
    f1Clazz: Class[_ <: HttpFilter],
    f2Clazz: Class[_ <: HttpFilter],
    f3Clazz: Class[_ <: HttpFilter],
    f4Clazz: Class[_ <: HttpFilter],
    f5Clazz: Class[_ <: HttpFilter],
    f6Clazz: Class[_ <: HttpFilter],
    f7Clazz: Class[_ <: HttpFilter],
    f8Clazz: Class[_ <: HttpFilter],
    f9Clazz: Class[_ <: HttpFilter],
    controllerClazz: Class[_ <: AbstractController]
  ): HttpRouter =
    add(
      injector
        .instance(f1Clazz)
        .andThen(injector.instance(f2Clazz))
        .andThen(injector.instance(f3Clazz))
        .andThen(injector.instance(f4Clazz))
        .andThen(injector.instance(f5Clazz))
        .andThen(injector.instance(f6Clazz))
        .andThen(injector.instance(f7Clazz))
        .andThen(injector.instance(f8Clazz))
        .andThen(injector.instance(f9Clazz)),
      injector.instance(controllerClazz)
    )

  /** Add per-controller filters (Note: Per-controller filters only run if the paired controller has a matching route) */
  def add[
    F1 <: HttpFilter: Manifest,
    F2 <: HttpFilter: Manifest,
    F3 <: HttpFilter: Manifest,
    F4 <: HttpFilter: Manifest,
    F5 <: HttpFilter: Manifest,
    F6 <: HttpFilter: Manifest,
    F7 <: HttpFilter: Manifest,
    F8 <: HttpFilter: Manifest,
    F9 <: HttpFilter: Manifest,
    F10 <: HttpFilter: Manifest,
    C <: Controller: Manifest
  ]: HttpRouter =
    addFiltered[C](
      injector
        .instance[F1]
        .andThen(injector.instance[F2])
        .andThen(injector.instance[F3])
        .andThen(injector.instance[F4])
        .andThen(injector.instance[F5])
        .andThen(injector.instance[F6])
        .andThen(injector.instance[F7])
        .andThen(injector.instance[F8])
        .andThen(injector.instance[F9])
        .andThen(injector.instance[F10])
    )

  /**
   * Add per-controller filter (Note: Per-controller filters only run if the paired controller has a matching route).
   *
   * This is a recommended API for Java users. Scala users should prefer [[Manifest]]-variant of this method.
   */
  def add(
    f1Clazz: Class[_ <: HttpFilter],
    f2Clazz: Class[_ <: HttpFilter],
    f3Clazz: Class[_ <: HttpFilter],
    f4Clazz: Class[_ <: HttpFilter],
    f5Clazz: Class[_ <: HttpFilter],
    f6Clazz: Class[_ <: HttpFilter],
    f7Clazz: Class[_ <: HttpFilter],
    f8Clazz: Class[_ <: HttpFilter],
    f9Clazz: Class[_ <: HttpFilter],
    f10Clazz: Class[_ <: HttpFilter],
    controllerClazz: Class[_ <: AbstractController]
  ): HttpRouter =
    add(
      injector
        .instance(f1Clazz)
        .andThen(injector.instance(f2Clazz))
        .andThen(injector.instance(f3Clazz))
        .andThen(injector.instance(f4Clazz))
        .andThen(injector.instance(f5Clazz))
        .andThen(injector.instance(f6Clazz))
        .andThen(injector.instance(f7Clazz))
        .andThen(injector.instance(f8Clazz))
        .andThen(injector.instance(f9Clazz))
        .andThen(injector.instance(f10Clazz)),
      injector.instance(controllerClazz)
    )

  /* Private */

  private def addFiltered[C <: Controller: Manifest](filter: HttpFilter): HttpRouter = {
    addRoutes(filter, injector.instance[C])
  }