This repository was archived by the owner on Feb 20, 2019. It is now read-only.

Description
When I want to unpickle a Map [Int, ImagePosition], where ImagePosition is a CompositePickler :
implicit object TrackedObjectModelPickler extends Pickler[TrackedObjectModel] {
override def pickle(value: TrackedObjectModel)(implicit state: PickleState): Unit = {
state.pickle(value.imagePositions)
}
override def unpickle(implicit state: UnpickleState): TrackedObjectModel = {
new TrackedObjectModel(
imagePositions = state.unpickle[Map[Int, ObjectPosition]]
)
}
}
I receive following error:
java.lang.IllegalStateException: Index 2163 is not defined in this CompositePickler
at boopickle.CompositePickler.unpickle(CompositePicklers.scala:39)
at boopickle.BasicPicklers$$anon$6.unpickle(Pickler.scala:444)
at boopickle.BasicPicklers$$anon$6.unpickle(Pickler.scala:410)
A workaround, saving the map as two seqs, works:
implicit object TrackedObjectModelPickler extends Pickler[TrackedObjectModel] {
override def pickle(value: TrackedObjectModel)(implicit state: PickleState): Unit = {
state.pickle(value.imagePositions.keys)
state.pickle(value.imagePositions.values)
}
override def unpickle(implicit state: UnpickleState): TrackedObjectModel = {
new TrackedObjectModel(
imagePositions = state.unpickle[Iterable[Int]].zip(state.unpickle[Iterable[ObjectPosition]]).toMap
)
}
}