Packages

package routing

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. Protected

Type Members

  1. case class ClosedRouterException(router: Router[_, _]) extends RuntimeException with NoStackTrace with Product with Serializable

    Exception thrown when an attempt to route an Input to a Router where close has been initiated on the Router.

    Exception thrown when an attempt to route an Input to a Router where close has been initiated on the Router.

    router

    The Router where close has already been initiated.

  2. final case class Found[Input, Route](input: Input, route: Route) extends Result with Product with Serializable

    A result that represents that the router could determine a defined route for a given input.

    A result that represents that the router could determine a defined route for a given input.

    Input

    The input type for the Router.

    Route

    The route type for the Router.

    input

    The input when attempting to find a route.

    route

    The route that was found.

  3. abstract class Generator[Input, Route, +RouterType <: Router[Input, Route]] extends (RouterInfo[Route]) => RouterType

    Functional alias for creating a router given a label and all of the defined routes for the router to be generated.

  4. sealed abstract class Result extends AnyRef

    A result from attempting to find a route via a Router.

  5. abstract class Router[Input, +Route] extends (Input) => Result with ClosableOnce with Logging

    A generic interface for routing an input to an optional matching route.

    A generic interface for routing an input to an optional matching route.

    Input

    The Input type used when determining a route destination

    Route

    The resulting route type. A Route may have dynamic properties and may be found to satisfy multiple Input instances. As there may not be a 1-to-1 mapping of Input to Route, it is encouraged that a Route encapsulates its relationship to an Input. An example to consider would be an HTTP Router. An HTTP request contains a Method (i.e. GET, POST) and a URI. A Router for a REST API may match "GET /users/{id}" for multiple HTTP requests (i.e. "GET /users/123" AND "GET /users/456" would map to the same destination Route). As a result, the Route in this example should be aware of the method, path, and and the destination/logic responsible for handling an Input that matches. Another property to consider for a Route is "uniqueness". A Router should be able to determine either: a) a single Route for an Input b) no Route for an Input A Router should NOT be expected to return multiple routes for an Input.

    Note

    A Router should be considered immutable unless explicitly noted.

  6. case class RouterBuilder[Input, Route, +RouterType <: Router[Input, Route]] extends Product with Serializable

    Utility for building and creating routers.

    Utility for building and creating routers. The resulting router should be considered immutable, unless the router's implementation explicitly states otherwise.

    Input

    The router's Input type.

    Route

    The router's destination Route type. It is recommended that the Route is a self-contained/self-describing type for the purpose of validation via the Validator. Put differently, the Route should know of the Input that maps to itself.

    RouterType

    The type of Router to build.

  7. case class RouterInfo[+Route](label: String, routes: Iterable[Route]) extends Product with Serializable

    The information needed to generate a Router via a Generator.

  8. case class ValidationError(msg: String) extends Product with Serializable

    Container class for an error that is encountered as part of validating routes via a RouterBuilder.

    Container class for an error that is encountered as part of validating routes via a RouterBuilder.

    msg

    The message that explains the error.

  9. case class ValidationException extends Exception with Product with Serializable

    Exception thrown when a RouterBuilder observes any routes that are not valid for the Router type it is building.

  10. abstract class Validator[-Route] extends (Iterable[Route]) => Iterable[ValidationError]

    Functional alias for determining whether all defined results are valid for a specific router type.

Value Members

  1. case object NotFound extends Result with Product with Serializable

    A result that represents that the router could not determine a defined route for a given input.

  2. object RouterBuilder extends Serializable
  3. case object RouterClosed extends Result with Product with Serializable

    A result that represents that the router has been closed and will no longer attempt to find routes for any inputs.

  4. object Validator

Ungrouped