/** * Copyright (C) 2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package conf; import ninja.AssetsController; import ninja.Router; import ninja.application.ApplicationRoutes; import ninja.utils.NinjaProperties; import com.google.inject.Inject; import controllers.ApplicationController; import controllers.AsyncController; import controllers.FilterController; import controllers.I18nController; import controllers.InjectionExampleController; import controllers.PersonController; import controllers.UdpPingController; import controllers.UploadController; public class Routes implements ApplicationRoutes { private NinjaProperties ninjaProperties; @Inject public Routes(NinjaProperties ninjaProperties) { this.ninjaProperties = ninjaProperties; } /** * Using a (almost) nice DSL we can configure the router. * * The second argument NinjaModuleDemoRouter contains all routes of a * submodule. By simply injecting it we activate the routes. * * @param router * The default router of this application */ @Override public void init(Router router) { // ///////////////////////////////////////////////////////////////////// // some default functions // ///////////////////////////////////////////////////////////////////// // simply render a page: router.GET().route("/").with(ApplicationController.class, "index"); router.GET().route("/examples").with(ApplicationController.class, "examples"); // render a page with variable route parts: router.GET().route("/user/{id}/{email}/userDashboard").with(ApplicationController.class, "userDashboard"); router.GET().route("/validation").with(ApplicationController.class, "validation"); // redirect back to / router.GET().route("/redirect").with(ApplicationController.class, "redirect"); router.GET().route("/session").with(ApplicationController.class, "session"); router.GET().route("/flash_success").with(ApplicationController.class, "flashSuccess"); router.GET().route("/flash_error").with(ApplicationController.class, "flashError"); router.GET().route("/flash_any").with(ApplicationController.class, "flashAny"); router.GET().route("/htmlEscaping").with(ApplicationController.class, "htmlEscaping"); // ///////////////////////////////////////////////////////////////////// // Json support // ///////////////////////////////////////////////////////////////////// router.GET().route("/api/person.json").with(PersonController.class, "getPersonJson"); router.POST().route("/api/person.json").with(PersonController.class, "postPersonJson"); router.GET().route("/api/person.xml").with(PersonController.class, "getPersonXml"); router.POST().route("/api/person.xml").with(PersonController.class, "postPersonXml"); // ///////////////////////////////////////////////////////////////////// // Form parsing support // ///////////////////////////////////////////////////////////////////// router.GET().route("/contactForm").with(ApplicationController.class, "contactForm"); router.POST().route("/contactForm").with(ApplicationController.class, "postContactForm"); // ///////////////////////////////////////////////////////////////////// // Cache support test // ///////////////////////////////////////////////////////////////////// router.GET().route("/test_caching").with(ApplicationController.class, "testCaching"); // ///////////////////////////////////////////////////////////////////// // Lifecycle support // ///////////////////////////////////////////////////////////////////// router.GET().route("/udpcount").with(UdpPingController.class, "getCount"); // ///////////////////////////////////////////////////////////////////// // Route filtering example: // ///////////////////////////////////////////////////////////////////// router.GET().route("/filter").with(FilterController.class, "filter"); router.GET().route("/teapot").with(FilterController.class, "teapot"); // ///////////////////////////////////////////////////////////////////// // Route filtering example: // ///////////////////////////////////////////////////////////////////// router.GET().route("/injection").with(InjectionExampleController.class, "injection"); // ///////////////////////////////////////////////////////////////////// // Async example: // ///////////////////////////////////////////////////////////////////// router.GET().route("/async").with(AsyncController.class, "asyncEcho"); // ///////////////////////////////////////////////////////////////////// // I18n: // ///////////////////////////////////////////////////////////////////// router.GET().route("/i18n").with(I18nController.class, "index"); router.GET().route("/i18n/{language}").with(I18nController.class, "indexWithLanguage"); // ///////////////////////////////////////////////////////////////////// // Upload showcase // ///////////////////////////////////////////////////////////////////// router.GET().route("/upload").with(UploadController.class, "upload"); router.POST().route("/uploadFinish").with(UploadController.class, "uploadFinish"); //this is a route that should only be accessible when NOT in production // this is tested in RoutesTest if (!ninjaProperties.isProd()) { router.GET().route("/_test/testPage").with(ApplicationController.class, "testPage"); } router.GET().route("/assets/.*").with(AssetsController.class, "serve"); } }