Refactored Atmosphere support to be container agnostic + fixed a couple of NPEs

This commit is contained in:
Viktor Klang 2009-10-12 21:46:13 +02:00
parent 50820dbef5
commit 56dc6ea770

View file

@ -42,31 +42,34 @@ class AkkaServlet extends ServletContainer with Logging {
}
class AkkaCometServlet extends org.atmosphere.cpr.AtmosphereServlet {
override def init(sconf: ServletConfig) = {
override def loadConfiguration(sc : ServletConfig) : Unit = {
val servlet = new AkkaServlet with AtmosphereServletProcessor {
//Delegate to implement the behavior for AtmosphereHandler
private val handler = new AbstractReflectorAtmosphereHandler {
override def onRequest(event: AtmosphereResource[HttpServletRequest, HttpServletResponse]) : Unit = {
event.getRequest.setAttribute(ReflectorServletProcessor.ATMOSPHERE_RESOURCE, event)
event.getRequest.setAttribute(ReflectorServletProcessor.ATMOSPHERE_HANDLER, this)
service(event.getRequest, event.getResponse)
if(event ne null)
{
event.getRequest.setAttribute(ReflectorServletProcessor.ATMOSPHERE_RESOURCE, event)
event.getRequest.setAttribute(ReflectorServletProcessor.ATMOSPHERE_HANDLER, this)
service(event.getRequest, event.getResponse)
}
}
}
override def onStateChange(event : AtmosphereResourceEvent[HttpServletRequest, HttpServletResponse] ) {
handler onStateChange event
if(event ne null)
handler onStateChange event
}
override def onRequest(resource: AtmosphereResource[HttpServletRequest, HttpServletResponse]) {
handler onRequest resource
if(resource ne null)
handler onRequest resource
}
}
config = new AtmosphereConfig { ah = servlet }
atmosphereHandlers.put("/*", new AtmosphereHandlerWrapper(servlet, new JerseyBroadcaster))
setCometSupport(new GrizzlyCometSupport(config))
getCometSupport.init(sconf)
servlet.init(sconf)
}
override def loadAtmosphereDotXml(is: InputStream, urlc: URLClassLoader) = () //Hide it