Skip to content

Instantly share code, notes, and snippets.

@rjenkins
Created July 8, 2012 19:32
Show Gist options
  • Save rjenkins/3072458 to your computer and use it in GitHub Desktop.
Save rjenkins/3072458 to your computer and use it in GitHub Desktop.
RiakJSONEntityDAO
class RiakJSONEntityDAO[K, T <: PersistentEntity](storageDriver: RiakStorageDriver[K, T])(implicit mf: Manifest[T])
extends AbstractRiakEntityDAO[K, T](storageDriver: RiakStorageDriver[K,
T]) {
def fromDomain(t: T, vClock: VClock): IRiakObject = {
val dataAsString = generate(t)
val iRiakObject = RiakObjectBuilder.newBuilder(storageDriver.getBucket, t.getKey)
.withVClock(vClock)
.withContentType(Constants.CTYPE_JSON)
.withValue(dataAsString)
val riakIndexes = new RiakIndexes
stringIndexes.foreach({
index =>
val field = t.getClass.getDeclaredField(index)
field.setAccessible(true)
riakIndexes.add(index, field.get(t).asInstanceOf[String])
})
integerIndexes.foreach({
index =>
val field = t.getClass.getDeclaredField(index)
field.setAccessible(true)
riakIndexes.add(index, field.get(t).asInstanceOf[Int])
})
iRiakObject.withIndexes(riakIndexes)
iRiakObject.build()
}
def toDomain(riakObject: IRiakObject) = {
val data = riakObject.getValueAsString
parse(data)(mf)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment