Hi,
I just deployed an application (
www.ninjaquery.com) on 2.0.1 and get requests from all over the world - one thing I am seeing in my logs is errors of this sort, when people come to the page with various special Accep-Language headers ("*", "en-US;q=bla", etc.) - example with "*":
-- 8< --
scala.MatchError: * (of class java.lang.String)
at play.api.i18n.Lang$.apply(Messages.scala:54)
at play.api.mvc.RequestHeader$$anonfun$acceptLanguages$1$$anonfun$apply$1.apply(Http.scala:56)
at play.api.mvc.RequestHeader$$anonfun$acceptLanguages$1$$anonfun$apply$1.apply(Http.scala:56)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:34)
at scala.collection.mutable.ArrayOps.foreach(ArrayOps.scala:38)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:194)
at scala.collection.mutable.ArrayOps.map(ArrayOps.scala:38)
at play.api.mvc.RequestHeader$$anonfun$acceptLanguages$1.apply(Http.scala:56)
at play.api.mvc.RequestHeader$$anonfun$acceptLanguages$1.apply(Http.scala:55)
at scala.Option.map(Option.scala:133)
at play.api.mvc.RequestHeader$class.acceptLanguages(Http.scala:55)
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$18$$anonfun$apply$20$$anon$1.acceptLanguages(PlayDefaultUpstreamHandler.scala:287)
at play.core.j.JavaHelpers$$anon$3.acceptLanguages(JavaHelpers.scala:112)
at play.mvc.Http$Context$Implicit.lang(Http.java:131)
at play.api.templates.PlayMagicForJava$.implicitJavaLang(Templates.scala:198)
at views.html.index$.apply(index.template.scala:32)
at views.html.index$.render(index.template.scala:90)
at views.html.index.render(index.template.scala)
at controllers.Application.index(Application.java:217)
at Routes$$anonfun$routes$1$$anonfun$apply$1$$anonfun$apply$2.apply(routes_routing.scala:85)
at Routes$$anonfun$routes$1$$anonfun$apply$1$$anonfun$apply$2.apply(routes_routing.scala:85)
at play.core.Router$HandlerInvoker$$anon$4$$anon$1.invocation(Router.scala:1086)
at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:33)
at play.GlobalSettings$1.call(GlobalSettings.java:57)
at play.core.j.JavaAction$class.apply(JavaAction.scala:74)
at play.core.Router$HandlerInvoker$$anon$4$$anon$1.apply(Router.scala:1085)
at play.core.ActionInvoker$$anonfun$receive$1$$anonfun$6.apply(Invoker.scala:126)
at play.core.ActionInvoker$$anonfun$receive$1$$anonfun$6.apply(Invoker.scala:126)
at play.utils.Threads$.withContextClassLoader(Threads.scala:17)
at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:125)
at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:115)
at akka.actor.Actor$class.apply(Actor.scala:311)
at play.core.ActionInvoker.apply(Invoker.scala:113)
at akka.actor.ActorCell.invoke(ActorCell.scala:619)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:196)
at akka.dispatch.Mailbox.run(Mailbox.scala:178)
at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:505)
at akka.jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:259)
at akka.jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:974)
at akka.jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
at akka.jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
-- 8< --
Whereas it doesn't seem to affect the website, the logs get swamped with this - is there a way to tell Play to automatically fall back to the default language when an unknown accept-header is sent without warning/logging about it?
Cheers,
Joscha