typesafehub/play-plugins — pull request #78 by rewbs (2013-06-17 06:58:40+00:00)
Title: Fix logging in Redis cache, allow URI-based Redis configuration, expose Redis connection pool configuration

Current implementation logs a stacktrace like the one below when attempting to retrieve a key with no cached value (instead of cleanly returning None). Current implementation also logs the key at warn level on every Cache set.

```
[warn] application - could not deserialize key:nope ex:java.lang.NullPointerException
java.lang.NullPointerException
at com.typesafe.plugin.RedisPlugin$$anon$1.get(RedisPlugin.scala:105)
at play.api.cache.Cache$.get(Cache.scala:65)
at play.api.cache.Cache.get(Cache.scala)
at play.cache.Cache.get(Cache.java:16)
at controllers.Application$2.get(Application.java:44)
at controllers.Application$2.get(Application.java:39)
at com.atlassian.connect.play.java.controllers.AcController.index(AcController.java:29)
at controllers.Application.index(Application.java:19)
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$1$$anonfun$apply$1.apply(routes_routing.scala:73)
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$1$$anonfun$apply$1.apply(routes_routing.scala:73)
at play.core.Router$HandlerInvoker$$anon$6$$anon$2.invocation(Router.scala:164)
at play.core.Router$Routes$$anon$1.invocation(Router.scala:345)
at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:31)
at play.core.j.JavaAction$$anon$2.apply(JavaAction.scala:74)
at play.core.j.JavaAction$$anon$2.apply(JavaAction.scala:73)
at play.libs.F$Promise$PromiseActor.onReceive(F.java:420)
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:159)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425)
at akka.actor.ActorCell.invoke(ActorCell.scala:386)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230)
at akka.dispatch.Mailbox.run(Mailbox.scala:212)
at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:502)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
```

Also add support for URI-based connection configuration (useful for services like [RedisCloud on Heroku](https://devcenter.heroku.com/articles/rediscloud#using-redis-from-java)) and expose the connection pool configuration.