trouble packing maps in Scala with scala.Any value type

99 views
Skip to first unread message

Aaron Zinman

unread,
Nov 7, 2012, 5:30:56 PM11/7/12
to msg...@googlegroups.com
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
Reply all
Reply to author
Forward
0 new messages