# Copyright (C) from 2022 The Play Framework Contributors <https://github.com/playframework>, 2011-2021 Lightbend Inc. <https://www.lightbend.com>

GET         /                               controllers.Application.index
POST        /post                           controllers.Application.post
GET         /with/:param                    controllers.Application.withParam(param)

GET         /instance                       @controllers.InstanceController.index

GET         /users/:userId                  controllers.Application.user(userId: models.UserId)
GET         /query-user                     controllers.Application.queryUser(userId: models.UserId)

GET         /escapes/$i<\d+>                controllers.Application.takeIntEscapes(i: Int)

GET         /take-bool                      controllers.Application.takeBool(`b=`: Boolean)
GET         /take-bool-2/:b                 controllers.Application.takeBool2(b: Boolean)

GET         /take-str                       controllers.Application.takeString(x: String)
GET         /take-str-opt                   controllers.Application.takeStringOption(x: Option[String])
GET         /take-str-jopt                  controllers.Application.takeStringOptional(x: java.util.Optional[String])
GET         /take-char                      controllers.Application.takeChar(x: Char)
GET         /take-char-opt                  controllers.Application.takeCharOption(x: Option[Char])
GET         /take-jchar                     controllers.Application.takeCharacter(x: Character)
GET         /take-jchar-jopt                controllers.Application.takeCharacterOptional(x: java.util.Optional[Character])
GET         /take-short                     controllers.Application.takeShort(x: Short)
GET         /take-short-opt                 controllers.Application.takeShortOption(x: Option[Short])
GET         /take-jshort                    controllers.Application.takeJavaShort(x: java.lang.Short)
GET         /take-jshort-jopt               controllers.Application.takeJavaShortOptional(x: java.util.Optional[java.lang.Short])
GET         /take-int                       controllers.Application.takeInt(x: Int)
GET         /take-int-opt                   controllers.Application.takeIntOption(x: Option[Int])
GET         /take-jint                      controllers.Application.takeInteger(x: java.lang.Integer)
GET         /take-jint-jopt                 controllers.Application.takeIntegerOptional(x: java.util.Optional[java.lang.Integer])
GET         /take-joptint                   controllers.Application.takeOptionalInt(x: java.util.OptionalInt)
GET         /take-joptlong                  controllers.Application.takeOptionalLong(x: java.util.OptionalLong)
GET         /take-joptdouble                controllers.Application.takeOptionalDouble(x: java.util.OptionalDouble)
GET         /take-slist-str                 controllers.Application.takeListString(x: List[String])
GET         /take-slist-str-opt             controllers.Application.takeListStringOption(x: Option[List[String]])
GET         /take-slist-char                controllers.Application.takeListChar(x: List[Char])
GET         /take-slist-char-opt            controllers.Application.takeListCharOption(x: Option[List[Char]])
GET         /take-jlist-jchar               controllers.Application.takeJavaListCharacter(x: java.util.List[Character])
GET         /take-jlist-jchar-jopt          controllers.Application.takeJavaListCharacterOptional(x: java.util.Optional[java.util.List[Character]])
GET         /take-jlist-str                 controllers.Application.takeJavaListString(x: java.util.List[String])
GET         /take-jlist-str-jopt            controllers.Application.takeJavaListStringOptional(x: java.util.Optional[java.util.List[String]])
GET         /take-slist-short               controllers.Application.takeListShort(x: List[Short])
GET         /take-slist-short-opt           controllers.Application.takeListShortOption(x: Option[List[Short]])
GET         /take-jlist-jshort              controllers.Application.takeJavaListShort(x: java.util.List[java.lang.Short])
GET         /take-jlist-jshort-jopt         controllers.Application.takeJavaListShortOptional(x: java.util.Optional[java.util.List[java.lang.Short]])
GET         /take-slist-int                 controllers.Application.takeListInt(x: List[Int])
GET         /take-slist-int-opt             controllers.Application.takeListIntOption(x: Option[List[Int]])
GET         /take-jlist-jint                controllers.Application.takeJavaListInteger(x: java.util.List[java.lang.Integer])
GET         /take-jlist-jint-jopt           controllers.Application.takeJavaListIntegerOptional(x: java.util.Optional[java.util.List[java.lang.Integer]])
####
#### Same again with defaults (/take-...-d):
####
GET         /take-str-d                     controllers.Application.takeStringWithDefault(x: String ?= "abc")
GET         /take-str-opt-d                 controllers.Application.takeStringOptionWithDefault(x: Option[String] ?= Option("abc"))
GET         /take-str-jopt-d                controllers.Application.takeStringOptionalWithDefault(x: java.util.Optional[String] ?= java.util.Optional.of("abc"))
GET         /take-char-d                    controllers.Application.takeCharWithDefault(x: Char ?= 'a')
GET         /take-char-opt-d                controllers.Application.takeCharOptionWithDefault(x: Option[Char] ?= Option('a'))
GET         /take-jchar-d                   controllers.Application.takeCharacterWithDefault(x: Character ?= 'a')
GET         /take-jchar-jopt-d              controllers.Application.takeCharacterOptionalWithDefault(x: java.util.Optional[Character] ?= java.util.Optional.of('a'))
GET         /take-short-d                   controllers.Application.takeShortWithDefault(x: Short ?= 123)
GET         /take-short-opt-d               controllers.Application.takeShortOptionWithDefault(x: Option[Short] ?= Option(123))
GET         /take-jshort-d                  controllers.Application.takeJavaShortWithDefault(x: java.lang.Short ?= 123.toShort)
GET         /take-jshort-jopt-d             controllers.Application.takeJavaShortOptionalWithDefault(x: java.util.Optional[java.lang.Short] ?= java.util.Optional.of(123.toShort))
GET         /take-int-d                     controllers.Application.takeIntWithDefault(x: Int ?= 123)
GET         /take-int-opt-d                 controllers.Application.takeIntOptionWithDefault(x: Option[Int] ?= Option(123))
GET         /take-jint-d                    controllers.Application.takeIntegerWithDefault(x: java.lang.Integer ?= 123)
GET         /take-jint-jopt-d               controllers.Application.takeIntegerOptionalWithDefault(x: java.util.Optional[java.lang.Integer] ?= java.util.Optional.of(123))
GET         /take-joptint-d                 controllers.Application.takeOptionalIntWithDefault(x: java.util.OptionalInt ?= java.util.OptionalInt.of(123))
GET         /take-joptlong-d                controllers.Application.takeOptionalLongWithDefault(x: java.util.OptionalLong ?= java.util.OptionalLong.of(123L))
GET         /take-joptdouble-d              controllers.Application.takeOptionalDoubleWithDefault(x: java.util.OptionalDouble ?= java.util.OptionalDouble.of(1.23))
GET         /take-slist-str-d               controllers.Application.takeListStringWithDefault(x: List[String] ?= List("abc", "def", "ghi"))
GET         /take-slist-str-opt-d           controllers.Application.takeListStringOptionWithDefault(x: Option[List[String]] ?= Option(List("abc", "def", "ghi")))
GET         /take-slist-char-d              controllers.Application.takeListCharWithDefault(x: List[Char] ?= List('a', 'b', 'c'))
GET         /take-slist-char-opt-d          controllers.Application.takeListCharOptionWithDefault(x: Option[List[Char]] ?= Option(List('a', 'b', 'c')))
GET         /take-jlist-jchar-d             controllers.Application.takeJavaListCharacterWithDefault(x: java.util.List[Character] ?= java.util.List.of('a', 'b', 'c'))
GET         /take-jlist-jchar-jopt-d        controllers.Application.takeJavaListCharacterOptionalWithDefault(x: java.util.Optional[java.util.List[Character]] ?= java.util.Optional.of(java.util.List.of('a', 'b', 'c')))
GET         /take-jlist-str-d               controllers.Application.takeJavaListStringWithDefault(x: java.util.List[String] ?= java.util.Arrays.asList("abc", "def", "ghi"))
GET         /take-jlist-str-jopt-d          controllers.Application.takeJavaListStringOptionalWithDefault(x: java.util.Optional[java.util.List[String]] ?= java.util.Optional.of(java.util.Arrays.asList("abc", "def", "ghi")))
GET         /take-slist-short-d             controllers.Application.takeListShortWithDefault(x: List[Short] ?= List(1, 2, 3))
GET         /take-slist-short-opt-d         controllers.Application.takeListShortOptionWithDefault(x: Option[List[Short]] ?= Option(List(1, 2, 3)))
GET         /take-jlist-jshort-d            controllers.Application.takeJavaListShortWithDefault(x: java.util.List[java.lang.Short] ?= java.util.List.of(1.toShort, 2.toShort, 3.toShort))
GET         /take-jlist-jshort-jopt-d       controllers.Application.takeJavaListShortOptionalWithDefault(x: java.util.Optional[java.util.List[java.lang.Short]] ?= java.util.Optional.of(java.util.Arrays.asList(1.toShort, 2.toShort, 3.toShort)))
GET         /take-slist-int-d               controllers.Application.takeListIntWithDefault(x: List[Int] ?= List(1, 2, 3))
GET         /take-slist-int-opt-d           controllers.Application.takeListIntOptionWithDefault(x: Option[List[Int]] ?= Option(List(1, 2, 3)))
GET         /take-jlist-jint-d              controllers.Application.takeJavaListIntegerWithDefault(x: java.util.List[java.lang.Integer] ?= java.util.Arrays.asList(1, 2, 3))
GET         /take-jlist-jint-jopt-d         controllers.Application.takeJavaListIntegerOptionalWithDefault(x: java.util.Optional[java.util.List[java.lang.Integer]] ?= java.util.Optional.of(java.util.Arrays.asList(1, 2, 3)))

GET         /urlcoding/:d/*s                controllers.Application.urlcoding(d, s, q)

GET         /ident/:è27                     controllers.πø$7ß.ôü65$t(è27: Int)

GET         /hello                          controllers.Application.hello
GET         /hello2                         controllers.Application.hello

->          /module                         module.Routes

GET         /routes                         controllers.Application.route(abstract)
GET         /routes                         controllers.Application.route(case)
GET         /routes                         controllers.Application.route(catch)
GET         /routes                         controllers.Application.route(class)
GET         /routes                         controllers.Application.route(def)
GET         /routes                         controllers.Application.route(do)
GET         /routes                         controllers.Application.route(else)
GET         /routes                         controllers.Application.route(extends)
GET         /routes                         controllers.Application.route(false)
GET         /routes                         controllers.Application.route(final)
GET         /routes                         controllers.Application.route(finally)
GET         /routes                         controllers.Application.route(for)
GET         /routes                         controllers.Application.route(forSome)
GET         /routes                         controllers.Application.route(if)
GET         /routes                         controllers.Application.route(implicit)
GET         /routes                         controllers.Application.route(import)
GET         /routes                         controllers.Application.route(lazy)
GET         /routes                         controllers.Application.route(match)
GET         /routes                         controllers.Application.route(new)
GET         /routes                         controllers.Application.route(null)
GET         /routes                         controllers.Application.route(object)
GET         /routes                         controllers.Application.route(override)
GET         /routes                         controllers.Application.route(package)
GET         /routes                         controllers.Application.route(private)
GET         /routes                         controllers.Application.route(protected)
GET         /routes                         controllers.Application.route(return)
GET         /routes                         controllers.Application.route(sealed)
GET         /routes                         controllers.Application.route(super)
GET         /routes                         controllers.Application.route(this)
GET         /routes                         controllers.Application.route(throw)
GET         /routes                         controllers.Application.route(trait)
GET         /routes                         controllers.Application.route(try)
GET         /routes                         controllers.Application.route(true)
GET         /routes                         controllers.Application.route(type)
GET         /routes                         controllers.Application.route(val)
GET         /routes                         controllers.Application.route(var)
GET         /routes                         controllers.Application.route(while)
GET         /routes                         controllers.Application.javaRoute(request: Request, req)
GET         /routestest                     controllers.Application.routetest(with)
GET         /routestest                     controllers.Application.routetest(yield)

# Test for default values for scala keywords
GET         /routesdefault                  controllers.Application.routedefault(type ?= "x")

GET         /public/*file                   controllers.Assets.versioned(path="/public", file: controllers.Assets.Asset)

# Test for fixed values for scala keywords

GET         /fixed_value                    controllers.Application.fixedValue(type = "x")
GET         /fixed_value/:type              controllers.Application.fixedValue(type: String)

### Reverse
GET         /reverse/fixed                  controllers.Application.reverse(b: Boolean = true, jb: java.lang.Boolean = true, c: Char = 'a', jc: java.lang.Character = 'a', s: Short = 123, js: java.lang.Short = 123.toShort, i: Int = 123, ji: java.lang.Integer = 123, l: Long = 123, jl: java.lang.Long = 123L, f: Float = 1.23f, jf: java.lang.Float = 1.23f, d: Double = 1.23, jd: java.lang.Double = 1.23, uuid: java.util.UUID = java.util.UUID.fromString("a90e582b-3c5b-4d37-b5f4-7730d2c672dd"), oi: java.util.OptionalInt = java.util.OptionalInt.of(123), ol: java.util.OptionalLong = java.util.OptionalLong.of(123), od: java.util.OptionalDouble = java.util.OptionalDouble.of(1.23), str: String = "a", ostr: Option[String] = Option("a"), jostr: java.util.Optional[String] = java.util.Optional.of("a"))
GET         /reverse/non-fixed              controllers.Application.reverse(b: Boolean, jb: java.lang.Boolean, c: Char, jc: java.lang.Character, s: Short, js: java.lang.Short, i: Int, ji: java.lang.Integer, l: Long, jl: java.lang.Long, f: Float, jf: java.lang.Float, d: Double, jd: java.lang.Double, uuid: java.util.UUID, oi: java.util.OptionalInt, ol: java.util.OptionalLong, od: java.util.OptionalDouble, str: String, ostr: Option[String], jostr: java.util.Optional[String])

# This triggers a string interpolation warning, since there is an identifier called "routes" in scope, and it
# generates a non interpolated string containing $routes. As does this comment.
GET         /intwarn/:routes                controllers.Application.interpolatorWarning(routes)
