Ensure that at most 1 CometSupport is created per servlet. and remove boiler

This commit is contained in:
Viktor Klang 2010-10-04 19:27:44 +02:00
parent 5091f0a187
commit 8525f18ee1

View file

@ -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
}