Skip to content

Instantly share code, notes, and snippets.

@opyate
Created June 21, 2012 19:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save opyate/2967885 to your computer and use it in GitHub Desktop.
Save opyate/2967885 to your computer and use it in GitHub Desktop.
'None' instance does not serialize well with Salat+Mongo
{
"_id": {
"$oid": "4fc5f4bde4b02e0b2013e343"
},
"poll": {
"_id": 7,
"name": "",
"created": 1338373308897,
"question": "Would this be better if you didn't have to click 'confirm your vote' as well as selecting an option?",
"option_a": "Absolutely, your keen UX sense is unparalleled",
"option_b": "Of course not, you're an idiot",
"expires": 1338373609407,
"short_url": "http://plrz.me/Lp8NnK",
"user": {
"_id": 12,
"email": "user@example.org",
"name": "Example user",
"mobile": "",
"created": 1338373145964,
"avatarURL": "https://secure.gravatar.com/avatar/47d1af0e885746e39195c8ff3234f47d?s=50&d=https://d37eplffuz3ep4.cloudfront.net/av67.png"
}
}
}
case class ResponsePoll(
id: Long,
name: String,
created: Option[Long],
question: String,
option_a: Option[String],
option_b: Option[String],
image_a: Option[String],
image_b: Option[String],
expires: Option[Long],
short_url: Option[String],
allow_anon: Option[Boolean],
has_voted: Option[Boolean],
user: Option[ResponseUser], /* owner */
userId: Option[Long], /* owner ID */
mongoObjectId: Option[String]
)
case class MegaPoll(poll: ResponsePoll /*, some other unimportant params */)
[error] application - MongoActor error=[java.lang.IllegalArgumentException: can't serialize class controllers.ResponseUser]
java.lang.IllegalArgumentException: can't serialize class controllers.ResponseUser
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:234) ~[mongo-java-driver-2.7.3.jar:na]
at org.bson.BasicBSONEncoder.putIterable(BasicBSONEncoder.java:259) ~[mongo-java-driver-2.7.3.jar:na]
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:198) ~[mongo-java-driver-2.7.3.jar:na]
at org.bson.BasicBSONEncoder.putIterable(BasicBSONEncoder.java:259) ~[mongo-java-driver-2.7.3.jar:na]
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:198) ~[mongo-java-driver-2.7.3.jar:na]
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:140) ~[mongo-java-driver-2.7.3.jar:na]
java.lang.IllegalArgumentException: can't serialize class controllers.ResponseUser
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:234)
at org.bson.BasicBSONEncoder.putIterable(BasicBSONEncoder.java:259)
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:198)
at org.bson.BasicBSONEncoder.putIterable(BasicBSONEncoder.java:259)
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:198)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:140)
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:190)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:140)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:86)
at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:27)
at com.mongodb.OutMessage.putObject(OutMessage.java:142)
at com.mongodb.DBApiLayer$MyCollection.update(DBApiLayer.java:346)
at com.mongodb.DBCollection.update(DBCollection.java:165)
at com.mongodb.casbah.MongoCollectionBase$class.update(MongoCollection.scala:701)
at com.mongodb.casbah.MongoCollection.update(MongoCollection.scala:920)
at com.novus.salat.dao.SalatDAO.update(SalatDAO.scala:383)
at util.mongo.MegaPoll$.update(Mongo.scala:37)
at util.mongo.MongoActor$$anonfun$receive$1$$anonfun$apply$2.apply(MongoActor.scala:54)
at util.mongo.MongoActor$$anonfun$receive$1$$anonfun$apply$2.apply(MongoActor.scala:43)
at scala.Option.map(Option.scala:133)
at util.mongo.MongoActor$$anonfun$receive$1.apply(MongoActor.scala:43)
at util.mongo.MongoActor$$anonfun$receive$1.apply(MongoActor.scala:17)
at akka.actor.Actor$class.apply(Actor.scala:311)
at util.mongo.MongoActor.apply(MongoActor.scala:15)
at akka.actor.ActorCell.invoke(ActorCell.scala:619)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:196)
at akka.dispatch.Mailbox.run(Mailbox.scala:178)
at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:505)
at akka.jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:259)
at akka.jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:974)
at akka.jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
at akka.jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment