Skip to content

Instantly share code, notes, and snippets.

@casualjim
Forked from rossabaker/ScalatraServer.scala
Created October 24, 2011 21:33
Show Gist options
  • Save casualjim/1310383 to your computer and use it in GitHub Desktop.
Save casualjim/1310383 to your computer and use it in GitHub Desktop.
dsl proposal for embedded servers
object Main {
def main(args: Array[String]) {
MySquerylScheme.initialize()
WebServer("src/main/webapp", Config.webServerPort) { server =>
server.inContext("/api") { context =>
context.mount("validate", new ValidateApp)
context.mount("channels", new MessageChannelApp)
context.mount("streams", new StreamsApp)
context.mount("", new AccountApp)
}
server.mount("plans", new PlanApp) //mounts in root context
}
}
}
@WebListener class Bootstrap extends ServletContextListenerBootstrap {
def initialize(context: Context) {
MySquerylScheme.initialize()
context.mount("validate", new ValidateApp)
context.mount("channels", new MessageChannelApp)
context.mount("streams", new StreamsApp)
context.mount("", new AccountApp)
}
def destroy(context: Context) { }
}
trait Context {
def mount[App <: ScalatraKernel](path: String, app: App): Configurator[App]
}
trait Configurator {
def addListener(fn: () => Unit): this.type
def set(kv: (String, Any)): this.type
def purge(kv: (String, Any)): this.type
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment