From 45318b94c192eef3ac494338e4c8a6dd9fd77f3e Mon Sep 17 00:00:00 2001 From: Patrik Nordwall Date: Thu, 10 Sep 2015 11:11:15 +0200 Subject: [PATCH] =per #18439 Preserve original manifest for IdentityEventAdapter * when WriteMessages is sent directly to the journal for testing purposes we want to preserve the original manifest instead of letting IdentityEventAdapter clearing it out --- .../persistence/journal/WriteJournalBase.scala | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/akka-persistence/src/main/scala/akka/persistence/journal/WriteJournalBase.scala b/akka-persistence/src/main/scala/akka/persistence/journal/WriteJournalBase.scala index 8ae48406e0..e746ea6092 100644 --- a/akka-persistence/src/main/scala/akka/persistence/journal/WriteJournalBase.scala +++ b/akka-persistence/src/main/scala/akka/persistence/journal/WriteJournalBase.scala @@ -6,7 +6,6 @@ package akka.persistence.journal import akka.actor.Actor import akka.persistence.{ Persistence, PersistentEnvelope, PersistentRepr } - import scala.collection.immutable import akka.persistence.AtomicWrite @@ -33,11 +32,16 @@ private[akka] trait WriteJournalBase { private[akka] final def adaptToJournal(repr: PersistentRepr): PersistentRepr = { val payload = repr.payload val adapter = eventAdapters.get(payload.getClass) - val manifest = adapter.manifest(payload) - repr - .withPayload(adapter.toJournal(payload)) - .withManifest(manifest) + // IdentityEventAdapter returns "" as manifest and normally the incoming PersistentRepr + // doesn't have an assigned manifest, but when WriteMessages is sent directly to the + // journal for testing purposes we want to preserve the original manifest instead of + // letting IdentityEventAdapter clearing it out. + if (adapter == IdentityEventAdapter || adapter.isInstanceOf[NoopWriteEventAdapter]) + repr + else { + repr.withPayload(adapter.toJournal(payload)).withManifest(adapter.manifest(payload)) + } } }