I'm having trouble with what seems like a simple setup in Scala.
@Message
case class MyMessage(var a:Int, var b:Long, var c:java.util.Map[String, Any]) {
def this() = this(-1, -1, null)
}
is what I'm trying to serialize/deserialize. If I simply do:
scala> pack(MyMessage(2, 3, new java.util.HashMap[String, Any]))
org.msgpack.MessageTypeException: java.lang.ClassNotFoundException: scala.Any
at org.msgpack.template.TemplateRegistry.buildAndRegister(TemplateRegistry.java:516)
at org.msgpack.template.TemplateRegistry.lookupAfterBuilding(TemplateRegistry.java:413)
at org.msgpack.template.TemplateRegistry.lookup(TemplateRegistry.java:246)
at org.msgpack.MessagePack.write(MessagePack.java:195)
at org.msgpack.ScalaMessagePackWrapper$class.pack(ScalaMessagePack.scala:71)
at org.msgpack.ScalaMessagePack$.pack(ScalaMessagePack.scala:42)
What I cannot understand is that serialization -> deserialization somehow works if it's not part of a class:
scala> unpack[java.util.HashMap[String, Any]]( pack(new java.util.HashMap[String, Any]) )
res14: java.util.HashMap[String,Any] = {}
I've tried not using case classes and doing this:
@Message
class MyMessage {
var a = -1
var b = -1
var c:java.util.Map[String, Any] = null
}
and it doesn't make a difference. What am I doing wrong?
Thanks,
Aaron