Skip to content

Instantly share code, notes, and snippets.

@tskardal
Created September 23, 2012 19:24
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 tskardal/3772747 to your computer and use it in GitHub Desktop.
Save tskardal/3772747 to your computer and use it in GitHub Desktop.
scala-salat: can't serialize class org.joda.time.DateTime (FIXED)
scalaVersion := "2.9.2"
libraryDependencies ++= Seq(
"net.databinder" %% "unfiltered-filter" % "0.6.4",
"com.novus" %% "salat" % "1.9.1",
"org.scalaj" %% "scalaj-time" % "0.6",
"javax.servlet" % "servlet-api" % "2.3" % "provided",
"org.eclipse.jetty" % "jetty-webapp" % "7.4.5.v20110725" % "container",
"org.clapper" %% "avsl" % "0.4"
)
package domain
import com.mongodb.casbah.Imports._
import com.novus.salat.global._
import com.novus.salat._
import org.bson.types.ObjectId
import com.mongodb.casbah.MongoConnection
import org.scala_tools.time.Imports._
import com.mongodb.casbah.commons.conversions.scala.{RegisterConversionHelpers, RegisterJodaTimeConversionHelpers}
case class User (name: String, registered: DateTime)
object UserDAO extends dao.SalatDAO[User, ObjectId](collection = MongoConnection()("salatjoda")("Users"))
object SalatTest extends App {
RegisterConversionHelpers() // Problem: was missing ()
RegisterJodaTimeConversionHelpers() // Problem: was missing ()
val user = User("Bob", DateTime.now)
UserDAO.insert(user)
}
[error] (run-main) java.lang.IllegalArgumentException: can't serialize class org.joda.time.DateTime
java.lang.IllegalArgumentException: can't serialize class org.joda.time.DateTime
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:270)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:174)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:120)
at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:27)
at com.mongodb.OutMessage.putObject(OutMessage.java:143)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:252)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:211)
at com.mongodb.casbah.MongoCollectionBase$class.insert(MongoCollection.scala:560)
at com.mongodb.casbah.MongoCollection.insert(MongoCollection.scala:897)
at com.mongodb.casbah.MongoCollectionBase$class.insert(MongoCollection.scala:546)
at com.mongodb.casbah.MongoCollection.insert(MongoCollection.scala:897)
at com.novus.salat.dao.SalatDAO.insert(SalatDAO.scala:265)
at com.novus.salat.dao.BaseDAOMethods$class.insert(DAO.scala:47)
at com.novus.salat.dao.SalatDAO.insert(SalatDAO.scala:40)
at domain.SalatTest$delayedInit$body.apply(SalatTest.scala:18)
at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:60)
at scala.App$$anonfun$main$1.apply(App.scala:60)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:76)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:30)
at scala.App$class.main(App.scala:60)
at domain.SalatTest$.main(SalatTest.scala:14)
at domain.SalatTest.main(SalatTest.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
@sejoharp
Copy link

Me too, thx.

@ChanderG
Copy link

Thanks.

@droidlabour
Copy link

Awesome

@gsluthra
Copy link

This commit here shows more details on how to integrate casbah with salat (and Joda datetime): gsluthra/fitnessz@ee33711

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment