From 8525f18ee1b13a454b11593d577a89bef1b7f0b6 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Mon, 4 Oct 2010 19:27:44 +0200 Subject: [PATCH] Ensure that at most 1 CometSupport is created per servlet. and remove boiler --- .../src/main/scala/AkkaCometServlet.scala | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/akka-http/src/main/scala/AkkaCometServlet.scala b/akka-http/src/main/scala/AkkaCometServlet.scala index 4a3d61cc10..5a39fd4f8e 100644 --- a/akka-http/src/main/scala/AkkaCometServlet.scala +++ b/akka-http/src/main/scala/AkkaCometServlet.scala @@ -83,21 +83,21 @@ class AkkaServlet extends AtmosphereServlet with Logging { addAtmosphereHandler("/*", servlet, new AkkaBroadcaster) } - /** + /** * This method is overridden because Akka Kernel is bundles with Grizzly, so if we deploy the Kernel in another container, * we need to handle that. */ - override def createCometSupportResolver() : CometSupportResolver = { - import scala.collection.JavaConversions._ + lazy val akkaCometResolver: CometSupportResolver = { + import scala.collection.JavaConversions._ - new DefaultCometSupportResolver(config) { - type CS = CometSupport[_ <: AtmosphereResource[_,_]] + new DefaultCometSupportResolver(config) { + lazy val desiredCometSupport = + Option(config.getInitParameter("cometSupport")) filter testClassExists map newCometSupport - override def resolve(useNativeIfPossible : Boolean, useBlockingAsDefault : Boolean) : CS = { - val predef = config.getInitParameter("cometSupport") - if (testClassExists(predef)) newCometSupport(predef) - else super.resolve(useNativeIfPossible, useBlockingAsDefault) - } - } + override def resolve(useNativeIfPossible : Boolean, useBlockingAsDefault : Boolean) : CometSupport[_ <: AtmosphereResource[_,_]] = + desiredCometSupport.getOrElse(super.resolve(useNativeIfPossible, useBlockingAsDefault)) + } } + + override def createCometSupportResolver() = akkaCometResolver }