in src/main/scala/org/apache/pekko/persistence/dynamodb/snapshot/DynamoDBSnapshotRequests.scala [195:226]
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))
}
}