ScalatraFilter

trait ScalatraFilter extends Filter with ServletBase

An implementation of the Scalatra DSL in a filter. You may prefer a filter to a ScalatraServlet if:

$ - you are sharing a URL space with another servlet or filter and want to delegate unmatched requests. This is very useful when migrating legacy applications one page or resource at a time.

Unlike a ScalatraServlet, does not send 404 or 405 errors on non-matching routes. Instead, it delegates to the filter chain.

If in doubt, extend ScalatraServlet instead.

See also:

ScalatraServlet

Type members

Inherited classlikes

trait Config
Inherited from:
Initializable

Types

type ConfigT = FilterConfig

Value members

Concrete methods

override def destroy: Unit
Definition Classes
Filter
def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain): Unit
protected def filterChain: FilterChain
override def init(filterConfig: FilterConfig): Unit
Definition Classes
Filter
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.

def requestPath(uri: String, idx: Int): String
protected def routeBasePath(implicit request: HttpServletRequest): String

The base path for URL generation

The base path for URL generation

Inherited 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.

Inherited from:
ScalatraBase
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.

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

get

Inherited from:
ScalatraBase
def environment: String
Inherited from:
ScalatraBase
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.

Inherited from:
ScalatraBase
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 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

Inherited from:
ScalatraBase
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!" }
Inherited from:
ScalatraBase
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
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
Inherited from:
ServletBase
def head(transformers: RouteTransformer*)(action: => Any): Route
See also:

head

Inherited from:
ScalatraBase
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.

Inherited from:
ScalatraBase
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.

Inherited from:
ScalatraBase
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.

Inherited from:
ScalatraBase
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.

Inherited from:
ScalatraBase
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.

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

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

get

Inherited from:
ScalatraBase
def params(implicit request: HttpServletRequest): Params
Inherited from:
ScalatraBase
def params(key: String)(implicit request: HttpServletRequest): String
Inherited from:
ScalatraBase
def pass(): Nothing

Immediately exits from the current route.

Immediately exits from the current route.

Inherited from:
Control
def patch(transformers: RouteTransformer*)(action: => Any): Route
See also:

patch

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

get

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

get

Inherited from:
ScalatraBase
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.

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

The servlet context in which this kernel runs.

The servlet context in which this kernel runs.

Inherited from:
ScalatraBase
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(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"
 }
}* 

}}

Inherited from:
ScalatraBase
def trap(code: Int)(block: => Any): Unit
See also:

error

Inherited from:
CoreDsl
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 from:
ScalatraBase
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

val RequestPathKey: String
protected var doNotFound: Action

Called if no route matches the current request for any method. The default implementation varies between servlet and filter.

Called if no route matches the current request for any method. The default implementation varies between servlet and filter.

Inherited fields

The configuration, typically a ServletConfig or FilterConfig.

The configuration, typically a ServletConfig or FilterConfig.

Inherited from:
ScalatraBase

The routes registered in this kernel.

The routes registered in this kernel.

Inherited from:
ScalatraBase

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:
ServletBase
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