private def fromSnapshotItem()

in src/main/scala/org/apache/pekko/persistence/dynamodb/snapshot/DynamoDBSnapshotRequests.scala [183:214]


  private def fromSnapshotItem(persistenceId: String, item: Item): Future[SelectedSnapshot] = {
    val seqNr = item.get(SequenceNr).getN.toLong
    val timestamp = item.get(Timestamp).getN.toLong

    if (item.containsKey(PayloadData)) {

      val payloadData = item.get(PayloadData).getB
      val serId = item.get(SerializerId).getN.toInt
      val manifest = if (item.containsKey(SerializerManifest)) item.get(SerializerManifest).getS else ""

      val serialized = serialization.serializerByIdentity(serId) match {
        case aS: AsyncSerializer =>
          Serialization.withTransportInformation(context.system.asInstanceOf[ExtendedActorSystem]) { () =>
            aS.fromBinaryAsync(payloadData.array(), manifest)
          }
        case _ =>
          Future.successful(serialization.deserialize(payloadData.array(), serId, manifest).get)
      }

      serialized.map(data =>
        SelectedSnapshot(
          metadata = SnapshotMetadata(persistenceId, sequenceNr = seqNr, timestamp = timestamp),
          snapshot = data))

    } else {
      val payloadValue = item.get(Payload).getB
      Future.successful(
        SelectedSnapshot(
          metadata = SnapshotMetadata(persistenceId, sequenceNr = seqNr, timestamp = timestamp),
          snapshot = serialization.deserialize(payloadValue.array(), classOf[Snapshot]).get.data))
    }
  }