From 7fdb2c72e4973b2071e3734c5259e02b2c5ed3c4 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Mon, 25 Jun 2012 17:31:32 +0200 Subject: [PATCH] Making akka-mailbox* compile and tests green --- .../scala/akka/actor/mailbox/FileBasedMailbox.scala | 4 ++-- .../akka/actor/mailbox/filequeue/PersistentQueue.scala | 10 +++++++--- .../scala/akka/actor/mailbox/DurableMailboxSpec.scala | 2 ++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/akka-durable-mailboxes/akka-file-mailbox/src/main/scala/akka/actor/mailbox/FileBasedMailbox.scala b/akka-durable-mailboxes/akka-file-mailbox/src/main/scala/akka/actor/mailbox/FileBasedMailbox.scala index 8d2ce5b897..c4e1aac54c 100644 --- a/akka-durable-mailboxes/akka-file-mailbox/src/main/scala/akka/actor/mailbox/FileBasedMailbox.scala +++ b/akka-durable-mailboxes/akka-file-mailbox/src/main/scala/akka/actor/mailbox/FileBasedMailbox.scala @@ -17,9 +17,9 @@ import akka.actor.ExtendedActorSystem class FileBasedMailboxType(systemSettings: ActorSystem.Settings, config: Config) extends MailboxType { private val settings = new FileBasedMailboxSettings(systemSettings, config) - override def create(owner: Option[ActorRef], system: Option[ActorSystem]): MessageQueue = owner zip system headOption match { + override def create(owner: Option[ActorRef], system: Option[ActorSystem]): MessageQueue = (owner zip system).headOption match { case Some((o, s: ExtendedActorSystem)) ⇒ new FileBasedMessageQueue(o, s, settings) - case None ⇒ throw new ConfigurationException("creating a durable mailbox requires an owner (i.e. does not work with BalancingDispatcher)") + case _ ⇒ throw new ConfigurationException("creating a durable mailbox requires an owner (i.e. does not work with BalancingDispatcher)") } } diff --git a/akka-durable-mailboxes/akka-file-mailbox/src/main/scala/akka/actor/mailbox/filequeue/PersistentQueue.scala b/akka-durable-mailboxes/akka-file-mailbox/src/main/scala/akka/actor/mailbox/filequeue/PersistentQueue.scala index 1a5ddf4a8c..e21b7687cb 100644 --- a/akka-durable-mailboxes/akka-file-mailbox/src/main/scala/akka/actor/mailbox/filequeue/PersistentQueue.scala +++ b/akka-durable-mailboxes/akka-file-mailbox/src/main/scala/akka/actor/mailbox/filequeue/PersistentQueue.scala @@ -34,6 +34,10 @@ class OverlaySetting[T](base: ⇒ T) { def apply() = local.getOrElse(base) } +trait Prependable[T] { + def prepend(t: T): Unit +} + class PersistentQueue(persistencePath: String, val name: String, val settings: FileBasedMailboxSettings, log: LoggingAdapter) { private case object ItemArrived @@ -56,9 +60,9 @@ class PersistentQueue(persistencePath: String, val name: String, val settings: F // # of items in the queue (including those not in memory) private var queueLength: Long = 0 - private var queue = new mutable.Queue[QItem] { + private var queue: mutable.Queue[QItem] with Prependable[QItem] = new mutable.Queue[QItem] with Prependable[QItem] { // scala's Queue doesn't (yet?) have a way to put back. - def unget(item: QItem) = prependElem(item) + def prepend(item: QItem) = prependElem(item) } private var _memoryBytes: Long = 0 @@ -435,7 +439,7 @@ class PersistentQueue(persistencePath: String, val name: String, val settings: F openTransactions.remove(xid) map { item ⇒ queueLength += 1 queueSize += item.data.length - queue unget item + queue prepend item _memoryBytes += item.data.length } } diff --git a/akka-durable-mailboxes/akka-mailboxes-common/src/test/scala/akka/actor/mailbox/DurableMailboxSpec.scala b/akka-durable-mailboxes/akka-mailboxes-common/src/test/scala/akka/actor/mailbox/DurableMailboxSpec.scala index 8264bd0348..56982f0315 100644 --- a/akka-durable-mailboxes/akka-mailboxes-common/src/test/scala/akka/actor/mailbox/DurableMailboxSpec.scala +++ b/akka-durable-mailboxes/akka-mailboxes-common/src/test/scala/akka/actor/mailbox/DurableMailboxSpec.scala @@ -3,6 +3,8 @@ */ package akka.actor.mailbox +import language.postfixOps + import java.io.InputStream import java.util.concurrent.TimeoutException