Skip to content

Commit

Permalink
GH-43 Support mount with receiver (Resolve #43)
Browse files Browse the repository at this point in the history
  • Loading branch information
dzikoysk committed Feb 16, 2024
1 parent 801b377 commit 1bcf5de
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
package io.javalin.community.routing

import io.javalin.Javalin
import io.javalin.config.RouterConfig
import io.javalin.http.Handler
import io.javalin.http.HandlerType
import io.javalin.router.Endpoint
import io.javalin.router.InternalRouter
import io.javalin.router.JavalinDefaultRouting
import io.javalin.router.RoutingApiInitializer
import io.javalin.router.RoutingSetupScope
import io.javalin.security.RouteRole
import java.util.function.Consumer

class JavalinRoutingExtensions(private val javalin: Javalin) {

Expand Down Expand Up @@ -57,6 +61,18 @@ fun InternalRouter.registerRoute(route: Route, path: String, handler: Handler, v
}
}

fun RouterConfig.mount(setup: RoutingSetupScope<JavalinDefaultRouting>): RouterConfig = also {
mount(Consumer {
setup.invokeAsSamWithReceiver(it)
})
}

fun <SETUP> RouterConfig.mount(initializer: RoutingApiInitializer<SETUP>, setup: RoutingSetupScope<SETUP> = RoutingSetupScope {}): RouterConfig = also {
mount(initializer, Consumer {
setup.invokeAsSamWithReceiver(it)
})
}

fun <SETUP> RoutingSetupScope<SETUP>.invokeAsSamWithReceiver(receiver: SETUP) {
with(this) { receiver.setup() }
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,13 @@ class JavalinRoutesTest {
}
}

@Test
fun `should enable sam receiver for mount`() {
Javalin.create { cfg ->
cfg.router.mount {
get("/") { it.result("Hello World!") }
}
}
}

}

0 comments on commit 1bcf5de

Please sign in to comment.