All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.scalatra.CoreDsl.scala Maven / Gradle / Ivy

package org.scalatra

import org.scalatra.servlet.ServletApiImplicits

/**
 * The core Scalatra DSL.
 */
trait CoreDsl extends Handler with Control with ScalatraContext with ServletApiImplicits {

  /**
   * Adds a filter to run before the route.  The filter only runs if each
   * routeMatcher returns Some.  If the routeMatchers list is empty, the
   * filter runs for all routes.
   */
  def before(transformers: RouteTransformer*)(block: => Any): Unit

  /**
   * Adds a filter to run after the route.  The filter only runs if each
   * routeMatcher returns Some.  If the routeMatchers list is empty, the
   * filter runs for all routes.
   */
  def after(transformers: RouteTransformer*)(block: => Any): Unit

  /**
   * Defines a block to run if no matching routes are found, or if all
   * matching routes pass.
   */
  def notFound(block: => Any): Unit

  /**
   * Defines a block to run if matching routes are found only for other
   * methods.  The set of matching methods is passed to the block.
   */
  def methodNotAllowed(block: Set[HttpMethod] => Any): Unit

  /**
   * Defines an error handler for exceptions thrown in either the before
   * block or a route action.
   *
   * If the error handler does not match, the result falls through to the
   * previously defined error handler.  The default error handler simply
   * rethrows the exception.
   *
   * The error handler is run before the after filters, and the result is
   * rendered like a standard response.  It is the error handler's
   * responsibility to set any appropriate status code.
   */
  def error(handler: ErrorHandler): Unit

  /**
   * The Scalatra DSL core methods take a list of [[org.scalatra.RouteMatcher]]
   * and a block as the action body.  The return value of the block is
   * rendered through the pipeline and sent to the client as the response body.
   *
   * See [[org.scalatra.ScalatraBase#renderResponseBody]] for the detailed
   * behaviour and how to handle your response body more explicitly, and see
   * how different return types are handled.
   *
   * The block is executed in the context of a CoreDsl instance, so all the
   * methods defined in this trait are also available inside the block.
   *
   * {{{
   *   get("/") {
   *     
* * *
* } * * post("/echo") { * "hello {params('name)}!" * } * }}} * * ScalatraKernel provides implicit transformation from boolean blocks, * strings and regular expressions to [[org.scalatra.RouteMatcher]], so * you can write code naturally. * {{{ * get("/", request.getRemoteHost == "127.0.0.1") { "Hello localhost!" } * }}} * */ def get(transformers: RouteTransformer*)(block: => Any): Route /** * @see get */ def post(transformers: RouteTransformer*)(block: => Any): Route /** * @see get */ def put(transformers: RouteTransformer*)(block: => Any): Route /** * @see get */ def delete(transformers: RouteTransformer*)(block: => Any): Route /** * @see get */ def options(transformers: RouteTransformer*)(block: => Any): Route /** * @see head */ def head(transformers: RouteTransformer*)(block: => Any): Route /** * @see patch */ def patch(transformers: RouteTransformer*)(block: => Any): Route /** * Error handler for HTTP response status code range. You can intercept every response code previously * specified with #status or even generic 404 error. * {{{ * trap(403) { * "You are not authorized" * } * }* }}} * }} */ def trap(codes: Range)(block: => Any): Unit /** * @see error */ def trap(code: Int)(block: => Any): Unit = { trap(Range(code, code + 1))(block) } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy