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) { 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("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)