diff --git a/akka.ipr b/akka.ipr
index 64165ef396..850de50c34 100644
--- a/akka.ipr
+++ b/akka.ipr
@@ -1357,17 +1357,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -1577,37 +1566,92 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/akka.iws b/akka.iws
index 0d0368ea74..c7223bfe8c 100644
--- a/akka.iws
+++ b/akka.iws
@@ -6,27 +6,15 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
+
+
+
-
+
@@ -158,19 +146,37 @@
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -237,10 +243,10 @@
-
-
+
+
@@ -2109,13 +2115,6 @@
-
-
-
-
-
-
-
@@ -2144,13 +2143,6 @@
-
-
-
-
-
-
-
@@ -2158,16 +2150,30 @@
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fun-test-java/akka-fun-test-java.iml b/fun-test-java/akka-fun-test-java.iml
index 37b3a96896..5ed087eeb7 100644
--- a/fun-test-java/akka-fun-test-java.iml
+++ b/fun-test-java/akka-fun-test-java.iml
@@ -66,9 +66,9 @@
-
-
-
+
+
+
diff --git a/kernel/akka-kernel.iml b/kernel/akka-kernel.iml
index b038a3bfbd..6bdaaa9535 100644
--- a/kernel/akka-kernel.iml
+++ b/kernel/akka-kernel.iml
@@ -75,17 +75,17 @@
-
-
+
+
-
-
+
+
-
-
-
+
+
+
diff --git a/kernel/src/main/scala/Kernel.scala b/kernel/src/main/scala/Kernel.scala
index 78326d2dcf..ec8652a191 100644
--- a/kernel/src/main/scala/Kernel.scala
+++ b/kernel/src/main/scala/Kernel.scala
@@ -14,7 +14,7 @@ import java.net.URLClassLoader
import net.lag.configgy.{Config, Configgy, RuntimeEnvironment}
-import kernel.jersey.{AkkaServlet,AkkaCometServlet}
+import kernel.jersey.AkkaCometServlet
import kernel.nio.RemoteServer
import kernel.state.CassandraStorage
import kernel.util.Logging
diff --git a/kernel/src/main/scala/jersey/AkkaServlet.scala b/kernel/src/main/scala/jersey/AkkaServlet.scala
index de3c89dea5..2f8356e29e 100644
--- a/kernel/src/main/scala/jersey/AkkaServlet.scala
+++ b/kernel/src/main/scala/jersey/AkkaServlet.scala
@@ -16,6 +16,7 @@ import javax.servlet.{ServletConfig}
import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
import org.atmosphere.cpr.{AtmosphereServletProcessor, AtmosphereEvent}
+import org.atmosphere.cpr.AtmosphereServlet.AtmosphereHandlerWrapper
import org.atmosphere.container.GrizzlyCometSupport
import org.atmosphere.handler.ReflectorServletProcessor
import org.atmosphere.core.{JerseyBroadcaster}
@@ -29,29 +30,27 @@ import scala.collection.jcl.Conversions._
* @author Jonas Bonér
*/
class AkkaServlet extends ServletContainer with AtmosphereServletProcessor with Logging {
- override def initiate(rc: ResourceConfig, wa: WebApplication) = {
+ override def initiate(rc: ResourceConfig, wa: WebApplication) = {
Kernel.boot // will boot if not already booted by 'main'
val configurators = ConfiguratorRepository.getConfiguratorsFor(getServletContext)
rc.getClasses.addAll(configurators.flatMap(_.getComponentInterfaces))
log.info("Starting AkkaServlet with ResourceFilters: " + rc.getProperty("com.sun.jersey.spi.container.ResourceFilters"));
- rc.getProperties.put("com.sun.jersey.spi.container.ResourceFilters","org.atmosphere.core.AtmosphereFilter")
+ rc.getProperties.put("com.sun.jersey.spi.container.ResourceFilters", "org.atmosphere.core.AtmosphereFilter")
//rc.getFeatures.put("com.sun.jersey.config.feature.Redirect", true)
//rc.getFeatures.put("com.sun.jersey.config.feature.ImplicitViewables",true)
wa.initiate(rc, new ActorComponentProviderFactory(configurators))
}
- //Borrowed from AbstractReflectorAtmosphereHandler
+ // Borrowed from AbstractReflectorAtmosphereHandler
override def onMessage(event: AtmosphereEvent[HttpServletRequest, HttpServletResponse]): AtmosphereEvent[_, _] = {
if (event.getMessage ne null) {
- var isUsingStream = false
- try {
+ val isUsingStream = try {
event.getResponse.getWriter
- } catch {
- case e: IllegalStateException => isUsingStream = true
- }
+ false
+ } catch {case e: IllegalStateException => true}
val data = event.getMessage.toString
if (isUsingStream) {
@@ -61,49 +60,25 @@ class AkkaServlet extends ServletContainer with AtmosphereServletProcessor with
event.getResponse.getWriter.write(data)
event.getResponse.getWriter.flush
}
- } else log.info("Null event message :/ req[ " + event.getRequest + "] res[" + event.getResponse + "]")
+ } else log.info("Null event message :/ req[%s] res[%s]", event.getRequest, event.getResponse)
event
}
- //Borrowed from AbstractReflectorAtmosphereHandler
- override def onMessage(event: AtmosphereEvent[HttpServletRequest,HttpServletResponse]): AtmosphereEvent[_,_] = {
- var isUsingStream = false
- try {
- event.getResponse.getWriter
- } catch {
- case e: IllegalStateException => isUsingStream = true
- }
-
- val data = if (event.getMessage ne null) event.getMessage.toString else null
-
- if (isUsingStream){
- if (data != null) event.getResponse.getOutputStream.write(data.getBytes)
- event.getResponse.getOutputStream.flush
- } else {
- event.getResponse.getWriter.write(data)
- event.getResponse.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
- }
+ 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
- this.config = new AtmosphereConfig {ah = servlet}
-
+ config = new AtmosphereConfig { ah = servlet }
atmosphereHandlers.put("", new AtmosphereHandlerWrapper(servlet, new JerseyBroadcaster))
-
setCometSupport(new GrizzlyCometSupport(config))
getCometSupport.init(sconf)
-
servlet.init(sconf)
}
diff --git a/samples-java/akka-samples-java.iml b/samples-java/akka-samples-java.iml
index 3df2c03adb..2d10b95f15 100644
--- a/samples-java/akka-samples-java.iml
+++ b/samples-java/akka-samples-java.iml
@@ -59,17 +59,17 @@
-
-
+
+
-
-
+
+
-
-
-
+
+
+
diff --git a/samples-scala/akka-samples-scala.iml b/samples-scala/akka-samples-scala.iml
index 856bfc3490..c2e08e6b04 100644
--- a/samples-scala/akka-samples-scala.iml
+++ b/samples-scala/akka-samples-scala.iml
@@ -64,17 +64,17 @@
-
-
+
+
-
-
+
+
-
-
-
+
+
+
diff --git a/samples-scala/src/main/scala/SimpleService.scala b/samples-scala/src/main/scala/SimpleService.scala
index fbb8a4ba6a..79eaaad468 100644
--- a/samples-scala/src/main/scala/SimpleService.scala
+++ b/samples-scala/src/main/scala/SimpleService.scala
@@ -4,18 +4,17 @@
package sample.scala
-import javax.ws.rs.{GET, POST, Path, Produces, WebApplicationException, Consumes}
import se.scalablesolutions.akka.kernel.state.{TransactionalState, CassandraStorageConfig}
import se.scalablesolutions.akka.kernel.actor.{SupervisorFactory, Actor}
import se.scalablesolutions.akka.kernel.config.ScalaConfig._
+import se.scalablesolutions.akka.kernel.util.Logging
+
import javax.ws.rs.core.MultivaluedMap
+import javax.ws.rs.{GET, POST, Path, Produces, WebApplicationException, Consumes}
-
-import se.scalablesolutions.akka.kernel.util.{Logging}
import org.atmosphere.core.annotation.{Broadcast, BroadcastFilter => FilterBroadcast, Suspend}
-import org.atmosphere.util.{XSSHtmlFilter}
-import org.atmosphere.cpr.{BroadcastFilter}
-
+import org.atmosphere.util.XSSHtmlFilter
+import org.atmosphere.cpr.BroadcastFilter
class Boot {
object factory extends SupervisorFactory {
@@ -74,18 +73,11 @@ class Chat extends Actor with Logging {
case class Chat(val who: String, val what: String, val msg: String)
- @Suspend
- @GET
- @Produces(Array("text/html"))
- def suspend() = "\n"
-
@Suspend
@GET
@Produces(Array("text/html"))
@FilterBroadcast(Array(classOf[XSSHtmlFilter], classOf[JsonpFilter]))
- def suspend() =
+ def suspend =
override def receive: PartialFunction[Any, Unit] = {
case Chat(who, what, msg) => {
@@ -117,6 +109,9 @@ class JsonpFilter extends BroadcastFilter[String] with Logging {
message = m.substring(m.indexOf("__") + 2)
}
- ("\n")
+ ("\n")
}
}
\ No newline at end of file