ScalatraBase

The base implementation of the Scalatra DSL. Intended to be portable to all supported backends.

Companion:
object

Type members

Inherited classlikes

trait Config
Inherited from:
Initializable

Inherited types

type ConfigT
Inherited from:
Initializable

Value members

Abstract methods

def requestPath(implicit request: HttpServletRequest): String

The effective path against which routes are matched. The definition varies between servlets and filters.

The effective path against which routes are matched. The definition varies between servlets and filters.

Concrete methods

def after(transformers: RouteTransformer*)(fun: => 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.

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 before(transformers: RouteTransformer*)(fun: => Any): Unit

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.

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 delete(transformers: RouteTransformer*)(action: => Any): Route
See also:

get

def environment: String
def error(handler: ErrorHandler): Unit

Defines an error handler for exceptions thrown in either the before block or a route action.

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 fullUrl(path: String, params: Iterable[(String, Any)], includeContextPath: Boolean, includeServletPath: Boolean, withSessionId: Boolean)(implicit request: HttpServletRequest, response: HttpServletResponse): String

Builds a full URL from the given relative path. Takes into account the port configuration, https, ...

Builds a full URL from the given relative path. Takes into account the port configuration, https, ...

Value parameters:
path

a relative path

Returns:

the full URL

def get(transformers: RouteTransformer*)(action: => Any): Route

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.

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("/") {
   <form action="/echo">
     <label>Enter your name</label>
     <input type="text" name="name"/>
   </form>
 }

 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!" }
override def handle(request: HttpServletRequest, response: HttpServletResponse): Unit

Handles a request and renders a response.

Handles a request and renders a response.

$ 1. If the request lacks a character encoding, defaultCharacterEncoding is set to the request.

$ 2. Sets the response's character encoding to defaultCharacterEncoding.

$ 3. Binds the current request, response, and multiParams, and calls executeRoutes().

Definition Classes
Handler
def head(transformers: RouteTransformer*)(action: => Any): Route
See also:

head

def initParameter(name: String): Option[String]

Gets an init parameter from the config.

Gets an init parameter from the config.

Value parameters:
name

the name of the key

Returns:

an option containing the value of the parameter if defined, or None if the parameter is not set.

def initialize(config: ConfigT): Unit

Initializes the kernel. Used to provide context that is unavailable when the instance is constructed, for example the servlet lifecycle. Should set the config variable to the parameter.

Initializes the kernel. Used to provide context that is unavailable when the instance is constructed, for example the servlet lifecycle. Should set the config variable to the parameter.

Value parameters:
config

the configuration.

def isDevelopmentMode: Boolean

A boolean flag representing whether the kernel is in development mode. The default is true if the environment begins with "dev", case-insensitive.

A boolean flag representing whether the kernel is in development mode. The default is true if the environment begins with "dev", case-insensitive.

def methodNotAllowed(f: Set[HttpMethod] => 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.

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 multiParams(key: String)(implicit request: HttpServletRequest): Seq[String]
def multiParams(implicit request: HttpServletRequest): MultiParams

The current multiparams. Multiparams are a result of merging the standard request params (query string or post params) with the route parameters extracted from the route matchers of the current route. The default value for an unknown param is the empty sequence. Invalid outside handle.

The current multiparams. Multiparams are a result of merging the standard request params (query string or post params) with the route parameters extracted from the route matchers of the current route. The default value for an unknown param is the empty sequence. Invalid outside handle.

def notFound(fun: => Any): Unit

Defines a block to run if no matching routes are found, or if all matching routes pass.

Defines a block to run if no matching routes are found, or if all matching routes pass.

def options(transformers: RouteTransformer*)(action: => Any): Route
See also:

get

def params(key: String)(implicit request: HttpServletRequest): String
def params(implicit request: HttpServletRequest): Params
def patch(transformers: RouteTransformer*)(action: => Any): Route
See also:

patch

def post(transformers: RouteTransformer*)(action: => Any): Route
See also:

get

def put(transformers: RouteTransformer*)(action: => Any): Route
See also:

get

def redirect(uri: String)(implicit request: HttpServletRequest, response: HttpServletResponse): Nothing

Sends a redirect response and immediately halts the current action.

Sends a redirect response and immediately halts the current action.

def relativeUrl(path: String, params: Iterable[(String, Any)], includeContextPath: Boolean, includeServletPath: Boolean)(implicit request: HttpServletRequest, response: HttpServletResponse): String
def serverHost(implicit request: HttpServletRequest): String
def serverPort(implicit request: HttpServletRequest): Int
def servletContext: ServletContext

The servlet context in which this kernel runs.

The servlet context in which this kernel runs.

def trap(codes: Range)(block: => Any): Unit

Error handler for HTTP response status code range. You can intercept every response code previously specified with #status or even generic 404 error.

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 url(path: String, params: Iterable[(String, Any)], includeContextPath: Boolean, includeServletPath: Boolean, absolutize: Boolean, withSessionId: Boolean)(implicit request: HttpServletRequest, response: HttpServletResponse): String

Returns a context-relative, session-aware URL for a path and specified parameters. Finally, the result is run through response.encodeURL for a session ID, if necessary.

Returns a context-relative, session-aware URL for a path and specified parameters. Finally, the result is run through response.encodeURL for a session ID, if necessary.

Value parameters:
params

params, to be appended in the form of a query string

path

the base path. If a path begins with '/', then the context path will be prepended to the result

Returns:

the path plus the query string, if any. The path is run through response.encodeURL to add any necessary session tracking parameters.

Inherited methods

def contentType: String

Gets the content type of the current response.

Gets the content type of the current response.

Inherited from:
ScalatraContext
def contentType_=(contentType: String): Unit

Sets the content type of the current response.

Sets the content type of the current response.

Inherited from:
ScalatraContext
def cookies(implicit request: HttpServletRequest): SweetCookies
Inherited from:
CookieContext
def format_=(formatValue: String): Unit

Explicitly sets the request-scoped format. This takes precedence over whatever was inferred from the request.

Explicitly sets the request-scoped format. This takes precedence over whatever was inferred from the request.

Inherited from:
ScalatraContext
def format_=(formatValue: Symbol): Unit

Explicitly sets the request-scoped format. This takes precedence over whatever was inferred from the request.

Explicitly sets the request-scoped format. This takes precedence over whatever was inferred from the request.

Inherited from:
ScalatraContext
def halt(result: ActionResult): Nothing
Inherited from:
Control
def halt[T](status: Integer, body: T, headers: Map[String, String]): Nothing

Immediately halts processing of a request. Can be called from either a before filter or a route.

Immediately halts processing of a request. Can be called from either a before filter or a route.

Value parameters:
body

a result to render through the render pipeline as the body

headers

headers to add to the response

status

the status to set on the response, or null to leave the status unchanged.

Inherited from:
Control
def pass(): Nothing

Immediately exits from the current route.

Immediately exits from the current route.

Inherited from:
Control
def session(key: String)(implicit request: HttpServletRequest): Any
Inherited from:
SessionSupport
def sessionOption(implicit request: HttpServletRequest): Option[HttpSession]

The current session. If none exists, None is returned.

The current session. If none exists, None is returned.

Inherited from:
SessionSupport
protected def shutdown(): Unit

A hook to shutdown the class. Bridges the gap between servlet's destroy and filter's destroy.

A hook to shutdown the class. Bridges the gap between servlet's destroy and filter's destroy.

Inherited from:
Initializable
def status: Int

Gets the status code of the current response.

Gets the status code of the current response.

Inherited from:
ScalatraContext
def status_=(code: Int): Unit

Sets the status code of the current response.

Sets the status code of the current response.

Inherited from:
ScalatraContext
def stringToDate(format: => String): TypeConverter[String, Date]
def stringToDateFormat(format: => DateFormat): TypeConverter[String, Date]
def stringToSeq[T : ClassTag](elementConverter: TypeConverter[String, T], separator: String): TypeConverter[String, Seq[T]]
def trap(code: Int)(block: => Any): Unit
See also:

error

Inherited from:
CoreDsl
protected def withRequest[A](request: HttpServletRequest)(f: => A): A

Executes the block with the given request bound to the request method.

Executes the block with the given request bound to the request method.

Inherited from:
DynamicScope
protected def withResponse[A](response: HttpServletResponse)(f: => A): A

Executes the block with the given response bound to the response method.

Executes the block with the given response bound to the response method.

Inherited from:
DynamicScope

Concrete fields

var config: ConfigT

The configuration, typically a ServletConfig or FilterConfig.

The configuration, typically a ServletConfig or FilterConfig.

The routes registered in this kernel.

The routes registered in this kernel.

Implicits

Inherited implicits

implicit val anyToBoolean: TypeConverter[Any, Boolean]
implicit val anyToByte: TypeConverter[Any, Byte]
implicit val anyToDouble: TypeConverter[Any, Double]
implicit val anyToFloat: TypeConverter[Any, Float]
implicit val anyToInt: TypeConverter[Any, Int]
implicit val anyToLong: TypeConverter[Any, Long]
implicit val anyToShort: TypeConverter[Any, Short]
implicit val anyToString: TypeConverter[Any, String]
implicit protected def configWrapper(config: ConfigT): Config
Inherited from:
Initializable
Inherited from:
CookieContext
implicit def defaultStringToSeq[T : ClassTag](implicit evidence$1: ClassTag[T], elementConverter: TypeConverter[String, T]): TypeConverter[String, Seq[T]]
implicit def enrichRequest(request: HttpServletRequest): RichRequest
Inherited from:
ServletApiImplicits
implicit def enrichResponse(response: HttpServletResponse): RichResponse
Inherited from:
ServletApiImplicits
implicit def enrichServletContext(servletContext: ServletContext): RichServletContext
Inherited from:
ServletApiImplicits
implicit def enrichSession(session: HttpSession): RichSession
Inherited from:
ServletApiImplicits
implicit def lowestPriorityAny2T[T : ClassTag]: TypeConverter[Any, T]
implicit def request: HttpServletRequest

The currently scoped request. Valid only inside the handle method.

The currently scoped request. Valid only inside the handle method.

Inherited from:
DynamicScope
implicit def response: HttpServletResponse

The currently scoped response. Valid only inside the handle method.

The currently scoped response. Valid only inside the handle method.

Inherited from:
DynamicScope
implicit def safe[S, T](f: S => T): TypeConverter[S, T]
Inherited from:
TypeConverterSupport
implicit def safeOption[S, T](f: S => Option[T]): TypeConverter[S, T]

Implicit convert a (String) => Option[T] function into a TypeConverter[T]

Implicit convert a (String) => Option[T] function into a TypeConverter[T]

Inherited from:
TypeConverterSupport
implicit def seqHead[T : ClassTag](implicit evidence$3: ClassTag[T], elementConverter: TypeConverter[String, T]): TypeConverter[Seq[String], T]
implicit def seqToSeq[T : ClassTag](implicit evidence$4: ClassTag[T], elementConverter: TypeConverter[String, T]): TypeConverter[Seq[String], Seq[T]]
implicit def session(implicit request: HttpServletRequest): HttpSession

The current session. Creates a session if none exists.

The current session. Creates a session if none exists.

Inherited from:
SessionSupport
implicit val stringToBoolean: TypeConverter[String, Boolean]
implicit val stringToByte: TypeConverter[String, Byte]
implicit val stringToDouble: TypeConverter[String, Double]
implicit val stringToFloat: TypeConverter[String, Float]
implicit val stringToInt: TypeConverter[String, Int]
implicit val stringToLong: TypeConverter[String, Long]
implicit val stringToSelf: TypeConverter[String, String]
implicit val stringToShort: TypeConverter[String, Short]
implicit def toTypedParams(params: Params): TypedParams