Skip to content
This repository has been archived by the owner on Feb 20, 2019. It is now read-only.

Error when saving a Map of Int and a Composite #442

Open
staeff777 opened this issue Sep 16, 2016 · 0 comments
Open

Error when saving a Map of Int and a Composite #442

staeff777 opened this issue Sep 16, 2016 · 0 comments

Comments

@staeff777
Copy link

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
                       )
    }
  }
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant