diff --git a/akka-amqp/pom.xml b/akka-amqp/pom.xml index d03ecad3e0..cacd9844bf 100644 --- a/akka-amqp/pom.xml +++ b/akka-amqp/pom.xml @@ -25,6 +25,11 @@ ${project.groupId} ${project.version} + com.rabbitmq rabbitmq-client diff --git a/akka-comet/src/main/scala/AkkaCometServlet.scala b/akka-comet/src/main/scala/AkkaServlet.scala similarity index 87% rename from akka-comet/src/main/scala/AkkaCometServlet.scala rename to akka-comet/src/main/scala/AkkaServlet.scala index 9b8fa06306..1dadd2fbf3 100755 --- a/akka-comet/src/main/scala/AkkaCometServlet.scala +++ b/akka-comet/src/main/scala/AkkaServlet.scala @@ -4,27 +4,26 @@ package se.scalablesolutions.akka.comet -import se.scalablesolutions.akka.rest.AkkaServlet import se.scalablesolutions.akka.util.Logging +import se.scalablesolutions.akka.rest.{AkkaServlet => RestServlet} import java.util.{List => JList} - -import javax.servlet.{ServletConfig} +import javax.servlet.ServletConfig import javax.servlet.http.{HttpServletRequest, HttpServletResponse} -import org.atmosphere.container.{GrizzlyCometSupport} + +import org.atmosphere.container.GrizzlyCometSupport import org.atmosphere.cpr.{AtmosphereServlet, AtmosphereServletProcessor, AtmosphereResource, AtmosphereResourceEvent,CometSupport,CometSupportResolver,DefaultCometSupportResolver} import org.atmosphere.handler.{ReflectorServletProcessor, AbstractReflectorAtmosphereHandler} import org.atmosphere.jersey.JerseyBroadcaster - /** * Akka's Comet servlet to be used when deploying actors exposed as Comet (and REST) services in a * standard servlet container, e.g. not using the Akka Kernel. *

* Used by the Akka Kernel to bootstrap REST and Comet. */ -class AkkaCometServlet extends org.atmosphere.cpr.AtmosphereServlet with Logging { - val servlet = new AkkaServlet with AtmosphereServletProcessor { +class AkkaServlet extends org.atmosphere.cpr.AtmosphereServlet with Logging { + val servlet = new RestServlet with AtmosphereServletProcessor { //Delegate to implement the behavior for AtmosphereHandler private val handler = new AbstractReflectorAtmosphereHandler { @@ -74,10 +73,8 @@ class AkkaCometServlet extends org.atmosphere.cpr.AtmosphereServlet with Logging override def resolve(useNativeIfPossible : Boolean, useBlockingAsDefault : Boolean) : CS = { val predef = config.getInitParameter("cometSupport") - if(testClassExists(predef)) - newCometSupport(predef) - else - super.resolve(useNativeIfPossible, useBlockingAsDefault) + if (testClassExists(predef)) newCometSupport(predef) + else super.resolve(useNativeIfPossible, useBlockingAsDefault) } } } diff --git a/akka-comet/src/main/scala/BootableCometActorService.scala b/akka-comet/src/main/scala/BootableCometActorService.scala index 67d85ea1cc..38e8a9c2c3 100644 --- a/akka-comet/src/main/scala/BootableCometActorService.scala +++ b/akka-comet/src/main/scala/BootableCometActorService.scala @@ -39,7 +39,7 @@ trait BootableCometActorService extends Bootable with Logging { val adapter = new ServletAdapter adapter.setHandleStaticResources(true) - adapter.setServletInstance(new AkkaCometServlet) + adapter.setServletInstance(new AkkaServlet) adapter.setContextPath(uri.getPath) //Using autodetection for now //adapter.addInitParameter("cometSupport", "org.atmosphere.container.GrizzlyCometSupport") diff --git a/akka-core/src/test/scala/RemoteActorTest.scala b/akka-core/src/test/scala/RemoteActorTest.scala index e79b5cdd72..6bb5d8e689 100644 --- a/akka-core/src/test/scala/RemoteActorTest.scala +++ b/akka-core/src/test/scala/RemoteActorTest.scala @@ -10,7 +10,7 @@ import se.scalablesolutions.akka.remote.{RemoteServer, RemoteClient} import se.scalablesolutions.akka.dispatch.Dispatchers object Global { - var oneWay = "nada" + var oneWay = "nada" var remoteReply = "nada" } class RemoteActorSpecActorUnidirectional extends Actor { @@ -31,22 +31,22 @@ class RemoteActorSpecActorBidirectional extends Actor { } } -case class Send(actor:Actor) +case class Send(actor: Actor) class RemoteActorSpecActorAsyncSender extends Actor { def receive = { - case Send(actor:Actor) => - actor ! "Hello" - case "World" => - Global.remoteReply = "replied" + case Send(actor: Actor) => + actor ! "Hello" + case "World" => + Global.remoteReply = "replied" } - def send(actor:Actor) { + def send(actor: Actor) { this ! Send(actor) } } -class RemoteActorTest extends JUnitSuite { +class RemoteActorTest extends JUnitSuite { import Actor.Sender.Self akka.Config.config @@ -54,17 +54,17 @@ class RemoteActorTest extends JUnitSuite { val HOSTNAME = "localhost" val PORT1 = 9990 val PORT2 = 9991 - var s1:RemoteServer = null - var s2:RemoteServer = null + var s1: RemoteServer = null + var s2: RemoteServer = null @Before def init() { - s1 = new RemoteServer() - s2 = new RemoteServer() + s1 = new RemoteServer() + s2 = new RemoteServer() - s1.start(HOSTNAME, PORT1) - s2.start(HOSTNAME, PORT2) - Thread.sleep(1000) + s1.start(HOSTNAME, PORT1) + s2.start(HOSTNAME, PORT2) + Thread.sleep(1000) } private val unit = TimeUnit.MILLISECONDS @@ -73,10 +73,10 @@ class RemoteActorTest extends JUnitSuite { // finished @After def finished() { - s1.shutdown - s2.shutdown - RemoteClient.shutdownAll - Thread.sleep(1000) + s1.shutdown + s2.shutdown + RemoteClient.shutdownAll + Thread.sleep(1000) } @Test @@ -85,7 +85,7 @@ class RemoteActorTest extends JUnitSuite { actor.makeRemote(HOSTNAME, PORT1) actor.start val result = actor ! "OneWay" - Thread.sleep(100) + Thread.sleep(1000) assert("received" === Global.oneWay) actor.stop } @@ -107,35 +107,35 @@ class RemoteActorTest extends JUnitSuite { actor.makeRemote(HOSTNAME, PORT2) actor.start - val sender = new RemoteActorSpecActorAsyncSender - sender.setContactAddress(HOSTNAME, PORT1) - sender.start - sender.send(actor) - Thread.sleep(500) + val sender = new RemoteActorSpecActorAsyncSender + sender.setContactAddress(HOSTNAME, PORT1) + sender.start + sender.send(actor) + Thread.sleep(1000) assert("replied" === Global.remoteReply) actor.stop } -/* - This test does not throw an exception since the - _contactAddress is always defined via the - global configuration if not set explicitly. - - @Test - def shouldSendRemoteReplyException = { - implicit val timeout = 500000000L - val actor = new RemoteActorSpecActorBidirectional - actor.makeRemote(HOSTNAME, PORT1) - actor.start + /* + This test does not throw an exception since the + _contactAddress is always defined via the + global configuration if not set explicitly. - val sender = new RemoteActorSpecActorAsyncSender - sender.start - sender.send(actor) - Thread.sleep(500) - assert("exception" === Global.remoteReply) - actor.stop - } -*/ + @Test + def shouldSendRemoteReplyException = { + implicit val timeout = 500000000L + val actor = new RemoteActorSpecActorBidirectional + actor.makeRemote(HOSTNAME, PORT1) + actor.start + + val sender = new RemoteActorSpecActorAsyncSender + sender.start + sender.send(actor) + Thread.sleep(500) + assert("exception" === Global.remoteReply) + actor.stop + } + */ @Test def shouldSendReceiveException = { implicit val timeout = 500000000L diff --git a/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java b/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java index de349fff9b..ae400d9382 100644 --- a/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java +++ b/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java @@ -76,9 +76,9 @@ public class InMemNestedStateTest extends TestCase { nested.setVectorState("init"); // set init state Thread.sleep(100); stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state", nested); // transactionrequired - Thread.sleep(1000); + Thread.sleep(100); assertEquals("new state", stateful.getVectorState()); - Thread.sleep(1000); + Thread.sleep(100); assertEquals("new state", nested.getVectorState()); } diff --git a/akka-kernel/src/main/scala/Kernel.scala b/akka-kernel/src/main/scala/Kernel.scala index 86f6226c5a..e555aa377b 100644 --- a/akka-kernel/src/main/scala/Kernel.scala +++ b/akka-kernel/src/main/scala/Kernel.scala @@ -5,11 +5,11 @@ package se.scalablesolutions.akka import se.scalablesolutions.akka.comet.BootableCometActorService -import se.scalablesolutions.akka.remote.{RemoteNode,BootableRemoteActorService} +import se.scalablesolutions.akka.remote.BootableRemoteActorService +import se.scalablesolutions.akka.actor.BootableActorLoaderService import se.scalablesolutions.akka.util.Logging -import se.scalablesolutions.akka.actor.{ActorRegistry,BootableActorLoaderService} -import javax.servlet.{ServletContextListener,ServletContextEvent} +import javax.servlet.{ServletContextListener, ServletContextEvent} object Main { def main(args: Array[String]) = Kernel.boot @@ -25,13 +25,15 @@ object Kernel extends Logging { @volatile private var hasBooted = false private val startTime = System.currentTimeMillis - - //Bundles is what modules are to be loaded with the Kernel, this uses Jonas' AOP style mixin pattern + + /** + * Bundles is what modules are to be loaded with the Kernel, this uses Jonas' AOP style mixin pattern. + */ object Bundles extends BootableActorLoaderService with BootableRemoteActorService with BootableCometActorService /** - * Boots up the Kernel. - */ + * Boots up the Kernel. + */ def boot: Unit = boot(true) /**