implemented updateVectorStorageEntryFor in akka-persistence-mongo (issue #165) and upgraded mongo-java-driver to 1.4

This commit is contained in:
Debasish Ghosh 2010-05-25 18:44:17 +05:30
parent 83e22cb42d
commit 3af5f5efd3
3 changed files with 35 additions and 3 deletions

View file

@ -268,8 +268,21 @@ private[akka] object MongoStorageBackend extends
}
}
def updateVectorStorageEntryFor(name: String, index: Int, elem: AnyRef) =
throw new UnsupportedOperationException("MongoStorageBackend::insertVectorStorageEntriesFor is not implemented")
def updateVectorStorageEntryFor(name: String, index: Int, elem: AnyRef) = {
val q = new BasicDBObject
q.put(KEY, name)
val dbobj =
coll.findOneNS(q) match {
case None =>
throw new NoSuchElementException(name + " not present")
case Some(dbo) => dbo
}
val currentList = dbobj.get(VALUE).asInstanceOf[JArrayList[AnyRef]]
currentList.set(index, serializer.out(elem))
coll.update(q,
new BasicDBObject().append(KEY, name).append(VALUE, currentList))
}
def getVectorStorageSizeFor(name: String): Int = {
nullSafeFindOne(name) match {

View file

@ -119,6 +119,25 @@ class MongoStorageSpec extends JUnitSuite {
} catch {case e: NoSuchElementException => {}}
}
@Test
def testVectorUpdateForTransactionId = {
import MongoStorageBackend._
changeSetV += "debasish" // string
changeSetV += List(1, 2, 3) // Scala List
changeSetV += List(100, 200)
insertVectorStorageEntriesFor("U-A1", changeSetV.toList)
assertEquals(3, getVectorStorageSizeFor("U-A1"))
updateVectorStorageEntryFor("U-A1", 0, "maulindu")
val JsString(str) = getVectorStorageEntryFor("U-A1", 0).asInstanceOf[JsString]
assertEquals("maulindu", str)
updateVectorStorageEntryFor("U-A1", 1, Map("1"->"dg", "2"->"mc"))
val JsObject(m) = getVectorStorageEntryFor("U-A1", 1).asInstanceOf[JsObject]
assertEquals(m.keySet.size, 2)
}
@Test
def testMapInsertForTransactionId = {
fillMap

View file

@ -226,7 +226,7 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) {
}
class AkkaMongoProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) {
val mongo = "org.mongodb" % "mongo-java-driver" % "1.1" % "compile"
val mongo = "org.mongodb" % "mongo-java-driver" % "1.4" % "compile"
override def testOptions = TestFilter((name: String) => name.endsWith("Test")) :: Nil
}