diff --git a/akka-persistence/akka-persistence-riak/src/main/scala/RiakStorage.scala b/akka-persistence/akka-persistence-riak/src/main/scala/RiakStorage.scala new file mode 100644 index 0000000000..446311f715 --- /dev/null +++ b/akka-persistence/akka-persistence-riak/src/main/scala/RiakStorage.scala @@ -0,0 +1,51 @@ +/** + * Copyright (C) 2009-2010 Scalable Solutions AB + */ + +package se.scalablesolutions.akka.persistence.riak + +import se.scalablesolutions.akka.actor.{newUuid} +import se.scalablesolutions.akka.stm._ +import se.scalablesolutions.akka.persistence.common._ + + +object RiakStorage extends Storage { + + type ElementType = Array[Byte] + def newMap: PersistentMap[ElementType, ElementType] = newMap(newUuid.toString) + def newVector: PersistentVector[ElementType] = newVector(newUuid.toString) + def newRef: PersistentRef[ElementType] = newRef(newUuid.toString) + override def newQueue: PersistentQueue[ElementType] = newQueue(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) + override def getQueue(id: String): PersistentQueue[ElementType] = newQueue(id) + + def newMap(id: String): PersistentMap[ElementType, ElementType] = new RiakPersistentMap(id) + def newVector(id: String): PersistentVector[ElementType] = new RiakPersistentVector(id) + def newRef(id: String): PersistentRef[ElementType] = new RiakPersistentRef(id) + override def newQueue(id:String): PersistentQueue[ElementType] = new RiakPersistentQueue(id) +} + + +class RiakPersistentMap(id: String) extends PersistentMapBinary { + val uuid = id + val storage = RiakStorageBackend +} + + +class RiakPersistentVector(id: String) extends PersistentVector[Array[Byte]] { + val uuid = id + val storage = RiakStorageBackend +} + +class RiakPersistentRef(id: String) extends PersistentRef[Array[Byte]] { + val uuid = id + val storage = RiakStorageBackend +} + +class RiakPersistentQueue(id: String) extends PersistentQueue[Array[Byte]] { + val uuid = id + val storage = RiakStorageBackend +} diff --git a/akka-persistence/akka-persistence-riak/src/main/scala/RiakStorageBackend.scala b/akka-persistence/akka-persistence-riak/src/main/scala/RiakStorageBackend.scala new file mode 100644 index 0000000000..534d9888eb --- /dev/null +++ b/akka-persistence/akka-persistence-riak/src/main/scala/RiakStorageBackend.scala @@ -0,0 +1,11 @@ +/** + * Copyright (C) 2009-2010 Scalable Solutions AB + */ + +package se.scalablesolutions.akka.persistence.riak + +import se.scalablesolutions.akka.actor.{newUuid} +import se.scalablesolutions.akka.stm._ +import se.scalablesolutions.akka.persistence.common._ + +class RiakStorageBackend \ No newline at end of file diff --git a/project/build/AkkaProject.scala b/project/build/AkkaProject.scala index 81688ccf82..44655aab6b 100644 --- a/project/build/AkkaProject.scala +++ b/project/build/AkkaProject.scala @@ -86,6 +86,7 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) { lazy val casbahModuleConfig = ModuleConfiguration("com.novus", CasbahRepo) lazy val timeModuleConfig = ModuleConfiguration("org.scala-tools", "time", CasbahSnapshotRepo) lazy val voldemortModuleConfig = ModuleConfiguration("voldemort", ClojarsRepo) + lazy val riakPBModuleConfig = ModuleConfiguration("org.clojars.mmcgrana", ClojarsRepo) lazy val embeddedRepo = EmbeddedRepo // This is the only exception, because the embedded repo is fast! // ------------------------------------------------------------------------------------------------------------------- @@ -248,6 +249,9 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) { lazy val vold_jetty = "org.mortbay.jetty" % "jetty" % "6.1.18" % "test" lazy val velocity = "org.apache.velocity" % "velocity" % "1.6.2" % "test" lazy val dbcp = "commons-dbcp" % "commons-dbcp" % "1.2.2" % "test" + + //Riak PB Client + lazy val riak_pb_client = "org.clojars.mmcgrana" % "riak-java-pb-client" % "0.1.0-SNAPSHOT" % "compile" } // ------------------------------------------------------------------------------------------------------------------- @@ -302,6 +306,9 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) { " dist/akka-persistence-redis_%s-%s.jar".format(buildScalaVersion, version) + " dist/akka-persistence-mongo_%s-%s.jar".format(buildScalaVersion, version) + " dist/akka-persistence-cassandra_%s-%s.jar".format(buildScalaVersion, version) + + " dist/akka-persistence-voldemort_%s-%s.jar".format(buildScalaVersion, version) + + " dist/akka-persistence-riak_%s-%s.jar".format(buildScalaVersion, version) + + " dist/akka-persistence-hbase_%s-%s.jar".format(buildScalaVersion, version) + " dist/akka-kernel_%s-%s.jar".format(buildScalaVersion, version) + " dist/akka-spring_%s-%s.jar".format(buildScalaVersion, version) + " dist/akka-jta_%s-%s.jar".format(buildScalaVersion, version) @@ -502,6 +509,8 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) { new AkkaHbaseProject(_), akka_persistence_common) lazy val akka_persistence_voldemort = project("akka-persistence-voldemort", "akka-persistence-voldemort", new AkkaVoldemortProject(_), akka_persistence_common) + lazy val akka_persistence_riak = project("akka-persistence-riak", "akka-persistence-riak", + new AkkaRiakProject(_), akka_persistence_common) } // ------------------------------------------------------------------------------------------------------------------- @@ -601,6 +610,18 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) { override def testOptions = createTestFilter({ s:String=> s.endsWith("Suite") || s.endsWith("Test")}) } +// akka-persistence-riak subproject + // ------------------------------------------------------------------------------------------------------------------- + + class AkkaRiakProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) { + val riak_pb = Dependencies.riak_pb_client + //testing + val scalatest = Dependencies.scalatest + + + override def testOptions = createTestFilter(_.endsWith("Test")) + } + // ------------------------------------------------------------------------------------------------------------------- // akka-kernel subproject