63 lines
2.4 KiB
Kotlin
63 lines
2.4 KiB
Kotlin
import org.slf4j.LoggerFactory
|
|
import ro.pippo.controller.ControllerApplication
|
|
import ro.pippo.core.Pippo
|
|
import ro.pippo.core.RequestResponseFactory
|
|
import ro.pippo.session.SessionManager
|
|
import ro.pippo.session.SessionRequestResponseFactory
|
|
import ro.pippo.session.cookie.CookieSessionDataStorage
|
|
import route.*
|
|
|
|
|
|
object Main {
|
|
@JvmStatic
|
|
fun main(args: Array<String>) {
|
|
val pippo = Pippo(BasicApplication())
|
|
pippo.start()
|
|
}
|
|
}
|
|
|
|
class BasicApplication : ControllerApplication() {
|
|
private val log = LoggerFactory.getLogger(BasicApplication::class.java)
|
|
|
|
override fun onInit() {
|
|
getRouter().ignorePaths("/favicon.ico")
|
|
|
|
// send files from a local folder (try a request like 'src/main/java/ro/pippo/demo/basic/BasicApplication.java')
|
|
addFileResourceRoute("/src", "src")
|
|
|
|
// register a custom ExceptionHandler
|
|
errorHandler.setExceptionHandler(ForbiddenException::class.java) { e, routeContext ->
|
|
log.info("Called custom exception handler")
|
|
routeContext.setLocal<String>("message", e.message)
|
|
errorHandler.handle(403, routeContext)
|
|
}
|
|
|
|
// register a request logger
|
|
routePreDispatchListeners.add { request, _ ->
|
|
println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
|
|
println("requestPath = " + request.path)
|
|
println("requestUri = " + request.uri)
|
|
println("requestUrl = " + request.url)
|
|
println("contextPath = " + request.contextPath)
|
|
println("applicationPath = " + request.applicationPath)
|
|
println("applicationUri = " + request.applicationUri)
|
|
println("applicationUriWithQuery = " + request.applicationUriWithQuery)
|
|
println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
|
|
}
|
|
|
|
addControllers(CtrlUser::class.java)
|
|
addControllers(CrtlGroup::class.java)
|
|
addControllers(CtrlMenu::class.java)
|
|
addControllers(CtrlPerm::class.java)
|
|
addControllers(CtrlRole::class.java)
|
|
}
|
|
|
|
override fun createRequestResponseFactory(): RequestResponseFactory {
|
|
val sessionDataStorage = CookieSessionDataStorage(pippoSettings)
|
|
val sessionManager = SessionManager(sessionDataStorage)
|
|
|
|
return SessionRequestResponseFactory(this, sessionManager)
|
|
}
|
|
}
|
|
|
|
class ForbiddenException(message: String) : RuntimeException(message) |