diff --git a/akka-fun-test-java/pom.xml b/akka-fun-test-java/pom.xml index 7d3aac2219..7b5e829220 100644 --- a/akka-fun-test-java/pom.xml +++ b/akka-fun-test-java/pom.xml @@ -29,25 +29,25 @@ com.sun.jersey jersey-server - 1.1.2-ea + 1.1.3-ea test com.sun.jersey jersey-json - 1.1.2-ea + 1.1.3-ea test com.sun.jersey jersey-client - 1.1.2-ea + 1.1.3-ea test com.sun.jersey jersey-atom - 1.1.2-ea + 1.1.3-ea test diff --git a/akka-kernel/pom.xml b/akka-kernel/pom.xml index 46c755e5c7..a3e55fec80 100644 --- a/akka-kernel/pom.xml +++ b/akka-kernel/pom.xml @@ -202,17 +202,17 @@ com.sun.jersey jersey-core - 1.1.2-ea + 1.1.3-ea com.sun.jersey jersey-server - 1.1.2-ea + 1.1.3-ea com.sun.jersey jersey-json - 1.1.2-ea + 1.1.3-ea javax.ws.rs @@ -222,7 +222,7 @@ com.sun.jersey.contribs jersey-scala - 1.1.2-ea-SNAPSHOT + 1.1.3-ea org.atmosphere diff --git a/akka-kernel/src/main/scala/AkkaServlet.scala b/akka-kernel/src/main/scala/AkkaServlet.scala index 3b24bd31e0..23cda8140d 100755 --- a/akka-kernel/src/main/scala/AkkaServlet.scala +++ b/akka-kernel/src/main/scala/AkkaServlet.scala @@ -14,10 +14,10 @@ import com.sun.jersey.spi.container.WebApplication import javax.servlet.{ServletConfig} import javax.servlet.http.{HttpServletRequest, HttpServletResponse} -import org.atmosphere.cpr.{AtmosphereServletProcessor, AtmosphereEvent} +import org.atmosphere.cpr.{AtmosphereServletProcessor, AtmosphereResource, AtmosphereResourceEvent} import org.atmosphere.cpr.AtmosphereServlet.AtmosphereHandlerWrapper import org.atmosphere.container.GrizzlyCometSupport -import org.atmosphere.handler.ReflectorServletProcessor +import org.atmosphere.handler.{ReflectorServletProcessor,AbstractReflectorAtmosphereHandler} import org.atmosphere.core.{JerseyBroadcaster} import java.net.URLClassLoader @@ -28,61 +28,46 @@ import scala.collection.jcl.Conversions._ /** * @author Jonas Bonér */ -class AkkaServlet extends ServletContainer with AtmosphereServletProcessor with Logging { +class AkkaServlet extends ServletContainer with Logging { - override def initiate(rc: ResourceConfig, wa: WebApplication) = { - akka.Kernel.boot // will boot if not already booted by 'main' - val configurators = ConfiguratorRepository.getConfigurators + override def initiate(rc: ResourceConfig, wa: WebApplication) = { + akka.Kernel.boot // will boot if not already booted by 'main' + val configurators = ConfiguratorRepository.getConfigurators - rc.getClasses.addAll(configurators.flatMap(_.getComponentInterfaces)) - rc.getProperties.put("com.sun.jersey.spi.container.ResourceFilters", akka.Config.config.getString("akka.rest.filters").getOrElse("")) + rc.getClasses.addAll(configurators.flatMap(_.getComponentInterfaces)) + rc.getProperties.put("com.sun.jersey.spi.container.ResourceFilters", akka.Config.config.getString("akka.rest.filters").getOrElse("")) - wa.initiate(rc, new ActorComponentProviderFactory(configurators)) - } - - // Borrowed from AbstractReflectorAtmosphereHandler - override def onMessage(event: AtmosphereEvent[HttpServletRequest, HttpServletResponse]): AtmosphereEvent[_, _] = { - - val response = event.getResponse - val data = if(event.getMessage ne null ) event.getMessage.toString else null - val isUsingStream = try { - response.getWriter - false - } catch { case e: IllegalStateException => true } - - if (isUsingStream) - { - if (data != null) - response.getOutputStream.write(data.getBytes) - response.getOutputStream.flush + wa.initiate(rc, new ActorComponentProviderFactory(configurators)) } - else - { - if (data != null) - response.getWriter.write(data) - response.getWriter.flush - } - - event - } - - override def onEvent(event: AtmosphereEvent[HttpServletRequest, HttpServletResponse]): AtmosphereEvent[_, _] = { - event.getRequest.setAttribute(ReflectorServletProcessor.ATMOSPHERE_EVENT, event) - event.getRequest.setAttribute(ReflectorServletProcessor.ATMOSPHERE_HANDLER, this) - service(event.getRequest, event.getResponse) - event - } } class AkkaCometServlet extends org.atmosphere.cpr.AtmosphereServlet { - override def init(sconf: ServletConfig) = { - val servlet = new AkkaServlet - config = new AtmosphereConfig { ah = servlet } - atmosphereHandlers.put("/*", new AtmosphereHandlerWrapper(servlet, new JerseyBroadcaster)) - setCometSupport(new GrizzlyCometSupport(config)) - getCometSupport.init(sconf) - servlet.init(sconf) - } + override def init(sconf: ServletConfig) = { + val servlet = new AkkaServlet with AtmosphereServletProcessor { - override def loadAtmosphereDotXml(is: InputStream, urlc: URLClassLoader) = () //Hide it + //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) + } + } + + override def onStateChange(event : AtmosphereResourceEvent[HttpServletRequest, HttpServletResponse] ) { + handler onStateChange event + } + + override def onRequest(resource: AtmosphereResource[HttpServletRequest, HttpServletResponse]) { + 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 } diff --git a/akka-rest/pom.xml b/akka-rest/pom.xml index c3c3c5a04c..d72a32ef33 100644 --- a/akka-rest/pom.xml +++ b/akka-rest/pom.xml @@ -37,17 +37,17 @@ com.sun.jersey jersey-core - 1.1.2-ea + 1.1.3-ea com.sun.jersey jersey-server - 1.1.2-ea + 1.1.3-ea com.sun.jersey jersey-json - 1.1.2-ea + 1.1.3-ea javax.ws.rs @@ -57,7 +57,7 @@ com.sun.jersey.contribs jersey-scala - 1.1.2-ea-SNAPSHOT + 1.1.3-ea org.atmosphere diff --git a/akka-security/pom.xml b/akka-security/pom.xml index 088d6fa85b..1a3e831dc9 100644 --- a/akka-security/pom.xml +++ b/akka-security/pom.xml @@ -48,7 +48,7 @@ com.sun.jersey jersey-server - 1.1.2-ea + 1.1.3-ea javax.ws.rs diff --git a/config/akka-reference.conf b/config/akka-reference.conf index cabe677c11..97eb216cad 100644 --- a/config/akka-reference.conf +++ b/config/akka-reference.conf @@ -44,7 +44,7 @@ service = on hostname = "localhost" port = 9998 - filters = "se.scalablesolutions.akka.security.AkkaSecurityFilterFactory;org.atmosphere.core.AtmosphereFilter" + filters = "se.scalablesolutions.akka.security.AkkaSecurityFilterFactory" authenticator = "sample.secure.SimpleAuthenticationService"