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
)
}
}