diff --git a/akka-persistence-cassandra/pom.xml b/akka-persistence-cassandra/pom.xml
new file mode 100644
index 0000000000..25745d00fc
--- /dev/null
+++ b/akka-persistence-cassandra/pom.xml
@@ -0,0 +1,51 @@
+
+ 4.0.0
+
+ akka-persistence-cassandra
+ Akka Persistence Cassandra Module
+
+ jar
+
+
+ akka
+ se.scalablesolutions.akka
+ 0.6
+ ../pom.xml
+
+
+
+
+ akka-persistence-common
+ ${project.groupId}
+ ${project.version}
+
+
+
+
+ org.apache.cassandra
+ cassandra
+ 0.4.1
+
+
+ log4j
+ log4j
+ 1.2.13
+
+
+
+
+ org.scalatest
+ scalatest
+ 1.0
+ test
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
diff --git a/akka-persistence/src/main/scala/CassandraSession.scala b/akka-persistence-cassandra/src/main/scala/CassandraSession.scala
similarity index 100%
rename from akka-persistence/src/main/scala/CassandraSession.scala
rename to akka-persistence-cassandra/src/main/scala/CassandraSession.scala
diff --git a/akka-persistence-cassandra/src/main/scala/CassandraStorage.scala b/akka-persistence-cassandra/src/main/scala/CassandraStorage.scala
new file mode 100644
index 0000000000..5bb89c90c9
--- /dev/null
+++ b/akka-persistence-cassandra/src/main/scala/CassandraStorage.scala
@@ -0,0 +1,49 @@
+/**
+ * Copyright (C) 2009 Scalable Solutions.
+ */
+
+package se.scalablesolutions.akka.state
+
+import org.codehaus.aspectwerkz.proxy.Uuid
+
+object CassandraStorage extends Storage {
+ type ElementType = Array[Byte]
+
+ def newMap: PersistentMap[ElementType, ElementType] = newMap(Uuid.newUuid.toString)
+ def newVector: PersistentVector[ElementType] = newVector(Uuid.newUuid.toString)
+ def newRef: PersistentRef[ElementType] = newRef(Uuid.newUuid.toString)
+
+ def getMap(id: String): PersistentMap[ElementType, ElementType] = newMap(id)
+ def getVector(id: String): PersistentVector[ElementType] = newVector(id)
+ def getRef(id: String): PersistentRef[ElementType] = newRef(id)
+
+ def newMap(id: String): PersistentMap[ElementType, ElementType] = new CassandraPersistentMap(id)
+ def newVector(id: String): PersistentVector[ElementType] = new CassandraPersistentVector(id)
+ def newRef(id: String): PersistentRef[ElementType] = new CassandraPersistentRef(id)
+}
+
+/**
+ * Implements a persistent transactional map based on the Cassandra distributed P2P key-value storage.
+ *
+ * @author Jonas Bonér
+ */
+class CassandraPersistentMap(id: String) extends PersistentMap[Array[Byte], Array[Byte]] {
+ val uuid = id
+ val storage = CassandraStorageBackend
+}
+
+/**
+ * Implements a persistent transactional vector based on the Cassandra
+ * distributed P2P key-value storage.
+ *
+ * @author Jonas Bonér
+ */
+class CassandraPersistentVector(id: String) extends PersistentVector[Array[Byte]] {
+ val uuid = id
+ val storage = CassandraStorageBackend
+}
+
+class CassandraPersistentRef(id: String) extends PersistentRef[Array[Byte]] {
+ val uuid = id
+ val storage = CassandraStorageBackend
+}
diff --git a/akka-persistence/src/main/scala/CassandraStorageBackend.scala b/akka-persistence-cassandra/src/main/scala/CassandraStorageBackend.scala
similarity index 100%
rename from akka-persistence/src/main/scala/CassandraStorageBackend.scala
rename to akka-persistence-cassandra/src/main/scala/CassandraStorageBackend.scala
diff --git a/akka-persistence/src/test/scala/CassandraPersistentActorSpec.scala b/akka-persistence-cassandra/src/test/scala/CassandraPersistentActorSpec.scala
similarity index 100%
rename from akka-persistence/src/test/scala/CassandraPersistentActorSpec.scala
rename to akka-persistence-cassandra/src/test/scala/CassandraPersistentActorSpec.scala
diff --git a/akka-persistence/pom.xml b/akka-persistence-common/pom.xml
similarity index 72%
rename from akka-persistence/pom.xml
rename to akka-persistence-common/pom.xml
index 10f90035b9..d6c89cff02 100644
--- a/akka-persistence/pom.xml
+++ b/akka-persistence-common/pom.xml
@@ -2,8 +2,8 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
- akka-persistence
- Akka Persistence Module
+ akka-persistence-common
+ Akka Persistence Common Module
jar
@@ -26,19 +26,6 @@
${project.version}
-
-
- com.mongodb
- mongo
- 1.0
-
-
-
-
- org.apache.cassandra
- cassandra
- 0.4.1
-
com.facebook
thrift
@@ -49,11 +36,6 @@
commons-pool
1.5.1
-
- log4j
- log4j
- 1.2.13
-
diff --git a/akka-persistence/src/main/scala/Pool.scala b/akka-persistence-common/src/main/scala/Pool.scala
similarity index 100%
rename from akka-persistence/src/main/scala/Pool.scala
rename to akka-persistence-common/src/main/scala/Pool.scala
diff --git a/akka-persistence/src/main/scala/Storage.scala b/akka-persistence-common/src/main/scala/Storage.scala
similarity index 71%
rename from akka-persistence/src/main/scala/Storage.scala
rename to akka-persistence-common/src/main/scala/Storage.scala
index 5f30cc3319..172fc78dfe 100644
--- a/akka-persistence/src/main/scala/Storage.scala
+++ b/akka-persistence-common/src/main/scala/Storage.scala
@@ -58,37 +58,9 @@ trait Storage {
def newRef(id: String): PersistentRef[ElementType]
}
-object CassandraStorage extends Storage {
- type ElementType = Array[Byte]
- def newMap: PersistentMap[ElementType, ElementType] = newMap(Uuid.newUuid.toString)
- def newVector: PersistentVector[ElementType] = newVector(Uuid.newUuid.toString)
- def newRef: PersistentRef[ElementType] = newRef(Uuid.newUuid.toString)
- def getMap(id: String): PersistentMap[ElementType, ElementType] = newMap(id)
- def getVector(id: String): PersistentVector[ElementType] = newVector(id)
- def getRef(id: String): PersistentRef[ElementType] = newRef(id)
- def newMap(id: String): PersistentMap[ElementType, ElementType] = new CassandraPersistentMap(id)
- def newVector(id: String): PersistentVector[ElementType] = new CassandraPersistentVector(id)
- def newRef(id: String): PersistentRef[ElementType] = new CassandraPersistentRef(id)
-}
-
-object MongoStorage extends Storage {
- type ElementType = AnyRef
-
- def newMap: PersistentMap[ElementType, ElementType] = newMap(Uuid.newUuid.toString)
- def newVector: PersistentVector[ElementType] = newVector(Uuid.newUuid.toString)
- def newRef: PersistentRef[ElementType] = newRef(Uuid.newUuid.toString)
-
- def getMap(id: String): PersistentMap[ElementType, ElementType] = newMap(id)
- def getVector(id: String): PersistentVector[ElementType] = newVector(id)
- def getRef(id: String): PersistentRef[ElementType] = newRef(id)
-
- def newMap(id: String): PersistentMap[ElementType, ElementType] = new MongoPersistentMap(id)
- def newVector(id: String): PersistentVector[ElementType] = new MongoPersistentVector(id)
- def newRef(id: String): PersistentRef[ElementType] = new MongoPersistentRef(id)
-}
/**
* Implementation of PersistentMap for every concrete
@@ -190,26 +162,6 @@ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V]
}
}
-/**
- * Implements a persistent transactional map based on the Cassandra distributed P2P key-value storage.
- *
- * @author Jonas Bonér
- */
-class CassandraPersistentMap(id: String) extends PersistentMap[Array[Byte], Array[Byte]] {
- val uuid = id
- val storage = CassandraStorageBackend
-}
-
-/**
- * Implements a persistent transactional map based on the MongoDB document storage.
- *
- * @author Debasish Ghosh
- */
-class MongoPersistentMap(id: String) extends PersistentMap[AnyRef, AnyRef] {
- val uuid = id
- val storage = MongoStorageBackend
-}
-
/**
* Implements a template for a concrete persistent transactional vector based storage.
*
@@ -286,28 +238,6 @@ trait PersistentVector[T] extends RandomAccessSeq[T] with Transactional with Com
}
}
-/**
- * Implements a persistent transactional vector based on the Cassandra
- * distributed P2P key-value storage.
- *
- * @author Jonas Bonér
- */
-class CassandraPersistentVector(id: String) extends PersistentVector[Array[Byte]] {
- val uuid = id
- val storage = CassandraStorageBackend
-}
-
-/**
- * Implements a persistent transactional vector based on the MongoDB
- * document storage.
- *
- * @author Debaissh Ghosh
- */
-class MongoPersistentVector(id: String) extends PersistentVector[AnyRef] {
- val uuid = id
- val storage = MongoStorageBackend
-}
-
/**
* Implements a persistent reference with abstract storage.
*
@@ -343,13 +273,3 @@ trait PersistentRef[T] extends Transactional with Committable {
currentTransaction.get.get.register(uuid, this)
}
}
-
-class CassandraPersistentRef(id: String) extends PersistentRef[Array[Byte]] {
- val uuid = id
- val storage = CassandraStorageBackend
-}
-
-class MongoPersistentRef(id: String) extends PersistentRef[AnyRef] {
- val uuid = id
- val storage = MongoStorageBackend
-}
diff --git a/akka-persistence/src/main/scala/StorageBackend.scala b/akka-persistence-common/src/main/scala/StorageBackend.scala
similarity index 100%
rename from akka-persistence/src/main/scala/StorageBackend.scala
rename to akka-persistence-common/src/main/scala/StorageBackend.scala
diff --git a/akka-persistence-mongo/pom.xml b/akka-persistence-mongo/pom.xml
new file mode 100644
index 0000000000..656b7ba6cc
--- /dev/null
+++ b/akka-persistence-mongo/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+
+ akka-persistence-mongo
+ Akka Persistence Mongo Module
+
+ jar
+
+
+ akka
+ se.scalablesolutions.akka
+ 0.6
+ ../pom.xml
+
+
+
+
+ akka-persistence-common
+ ${project.groupId}
+ ${project.version}
+
+
+
+
+ com.mongodb
+ mongo
+ 1.0
+
+
+
+
+ org.scalatest
+ scalatest
+ 1.0
+ test
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
diff --git a/akka-persistence-mongo/src/main/scala/MongoStorage.scala b/akka-persistence-mongo/src/main/scala/MongoStorage.scala
new file mode 100644
index 0000000000..7c45542b22
--- /dev/null
+++ b/akka-persistence-mongo/src/main/scala/MongoStorage.scala
@@ -0,0 +1,49 @@
+/**
+ * Copyright (C) 2009 Scalable Solutions.
+ */
+
+package se.scalablesolutions.akka.state
+
+import org.codehaus.aspectwerkz.proxy.Uuid
+
+object MongoStorage extends Storage {
+ type ElementType = AnyRef
+
+ def newMap: PersistentMap[ElementType, ElementType] = newMap(Uuid.newUuid.toString)
+ def newVector: PersistentVector[ElementType] = newVector(Uuid.newUuid.toString)
+ def newRef: PersistentRef[ElementType] = newRef(Uuid.newUuid.toString)
+
+ def getMap(id: String): PersistentMap[ElementType, ElementType] = newMap(id)
+ def getVector(id: String): PersistentVector[ElementType] = newVector(id)
+ def getRef(id: String): PersistentRef[ElementType] = newRef(id)
+
+ def newMap(id: String): PersistentMap[ElementType, ElementType] = new MongoPersistentMap(id)
+ def newVector(id: String): PersistentVector[ElementType] = new MongoPersistentVector(id)
+ def newRef(id: String): PersistentRef[ElementType] = new MongoPersistentRef(id)
+}
+
+/**
+ * Implements a persistent transactional map based on the MongoDB document storage.
+ *
+ * @author Debasish Ghosh
+ */
+class MongoPersistentMap(id: String) extends PersistentMap[AnyRef, AnyRef] {
+ val uuid = id
+ val storage = MongoStorageBackend
+}
+
+/**
+ * Implements a persistent transactional vector based on the MongoDB
+ * document storage.
+ *
+ * @author Debaissh Ghosh
+ */
+class MongoPersistentVector(id: String) extends PersistentVector[AnyRef] {
+ val uuid = id
+ val storage = MongoStorageBackend
+}
+
+class MongoPersistentRef(id: String) extends PersistentRef[AnyRef] {
+ val uuid = id
+ val storage = MongoStorageBackend
+}
\ No newline at end of file
diff --git a/akka-persistence/src/main/scala/MongoStorageBackend.scala b/akka-persistence-mongo/src/main/scala/MongoStorageBackend.scala
similarity index 100%
rename from akka-persistence/src/main/scala/MongoStorageBackend.scala
rename to akka-persistence-mongo/src/main/scala/MongoStorageBackend.scala
diff --git a/akka-persistence/src/test/scala/MongoPersistentActorSpec.scala b/akka-persistence-mongo/src/test/scala/MongoPersistentActorSpec.scala
similarity index 96%
rename from akka-persistence/src/test/scala/MongoPersistentActorSpec.scala
rename to akka-persistence-mongo/src/test/scala/MongoPersistentActorSpec.scala
index 051cfbfa12..8681ebadb9 100644
--- a/akka-persistence/src/test/scala/MongoPersistentActorSpec.scala
+++ b/akka-persistence-mongo/src/test/scala/MongoPersistentActorSpec.scala
@@ -91,6 +91,14 @@ class BankAccountActor extends Actor {
}
}
+@serializable class PersistentFailerActor extends Actor {
+ makeTransactionRequired
+ def receive = {
+ case "Failure" =>
+ throw new RuntimeException("expected")
+ }
+}
+
class MongoPersistentActorSpec extends TestCase {
@Test
def testSuccessfulDebit = {
diff --git a/akka-persistence/src/test/scala/MongoStorageSpec.scala b/akka-persistence-mongo/src/test/scala/MongoStorageSpec.scala
similarity index 100%
rename from akka-persistence/src/test/scala/MongoStorageSpec.scala
rename to akka-persistence-mongo/src/test/scala/MongoStorageSpec.scala
diff --git a/akka-persistence/src/test/scala/AllTest.scala b/akka-persistence/src/test/scala/AllTest.scala
deleted file mode 100644
index 2e9bc78178..0000000000
--- a/akka-persistence/src/test/scala/AllTest.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-package se.scalablesolutions.akka
-
-import se.scalablesolutions.akka.state.{MongoStorageSpec, MongoPersistentActorSpec, CassandraPersistentActorSpec}
-import junit.framework.Test
-import junit.framework.TestCase
-import junit.framework.TestSuite
-
-object AllTest extends TestCase {
- def suite(): Test = {
- val suite = new TestSuite("All Scala tests")
- //suite.addTestSuite(classOf[CassandraPersistentActorSpec])
- //suite.addTestSuite(classOf[MongoPersistentActorSpec])
- //suite.addTestSuite(classOf[MongoStorageSpec])
- suite
- }
-
- def main(args: Array[String]) = junit.textui.TestRunner.run(suite)
-}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index d89166c09d..dca9af4e3e 100755
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,9 @@
akka-util-java
akka-util
akka-actors
- akka-persistence
+ akka-persistence-common
+ akka-persistence-cassandra
+ akka-persistence-mongo
akka-rest
akka-camel
akka-amqp