diff --git a/akka-persistence-query/src/test/scala/akka/persistence/query/PersistenceQuerySpec.scala b/akka-persistence-query/src/test/scala/akka/persistence/query/PersistenceQuerySpec.scala index a7778c00bc..5e3aeff7d5 100644 --- a/akka-persistence-query/src/test/scala/akka/persistence/query/PersistenceQuerySpec.scala +++ b/akka-persistence-query/src/test/scala/akka/persistence/query/PersistenceQuerySpec.scala @@ -5,12 +5,11 @@ package akka.persistence.query import java.util.concurrent.atomic.AtomicInteger - import akka.actor.ActorSystem -import akka.persistence.journal.{ EventAdapter, EventSeq } +import akka.persistence.journal.EventSeq +import akka.persistence.journal.ReadEventAdapter import com.typesafe.config.ConfigFactory import org.scalatest.{ BeforeAndAfterAll, Matchers, WordSpecLike } - import scala.concurrent.Await import scala.concurrent.duration._ @@ -73,9 +72,6 @@ object ExampleQueryModels { case class NewModel(value: String) } -class PrefixStringWithPAdapter extends EventAdapter { +class PrefixStringWithPAdapter extends ReadEventAdapter { override def fromJournal(event: Any, manifest: String) = EventSeq.single("p-" + event) - - override def manifest(event: Any) = "" - override def toJournal(event: Any) = throw new Exception("toJournal should not be called by query side") -} \ No newline at end of file +} diff --git a/akka-persistence/src/main/scala/akka/persistence/journal/EventAdapters.scala b/akka-persistence/src/main/scala/akka/persistence/journal/EventAdapters.scala index 80628189c3..3d5183d160 100644 --- a/akka-persistence/src/main/scala/akka/persistence/journal/EventAdapters.scala +++ b/akka-persistence/src/main/scala/akka/persistence/journal/EventAdapters.scala @@ -16,8 +16,10 @@ import scala.collection.mutable.ArrayBuffer import scala.reflect.ClassTag import scala.util.Try -/** INTERNAL API */ -private[akka] class EventAdapters( +/** + * `EventAdapters` serves as a per-journal collection of bound event adapters. + */ +class EventAdapters( map: ConcurrentHashMap[Class[_], EventAdapter], bindings: immutable.Seq[(Class[_], EventAdapter)], log: LoggingAdapter) { @@ -62,7 +64,10 @@ private[akka] object EventAdapters { def apply(system: ExtendedActorSystem, config: Config): EventAdapters = { val adapters = configToMap(config, "event-adapters") val adapterBindings = configToListMap(config, "event-adapter-bindings") - apply(system, adapters, adapterBindings) + if (adapters.isEmpty && adapterBindings.isEmpty) + IdentityEventAdapters + else + apply(system, adapters, adapterBindings) } private def apply( @@ -165,4 +170,4 @@ private[akka] object EventAdapters { private[akka] case object IdentityEventAdapters extends EventAdapters(null, null, null) { override def get(clazz: Class[_]): EventAdapter = IdentityEventAdapter override def toString = Logging.simpleName(IdentityEventAdapters) -} \ No newline at end of file +} 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..20b6a60135 100644 --- a/akka-persistence/src/main/scala/akka/persistence/journal/WriteJournalBase.scala +++ b/akka-persistence/src/main/scala/akka/persistence/journal/WriteJournalBase.scala @@ -13,8 +13,8 @@ import akka.persistence.AtomicWrite private[akka] trait WriteJournalBase { this: Actor ⇒ - lazy val persistence = Persistence(context.system) - private def eventAdapters = persistence.adaptersFor(self) + val persistence = Persistence(context.system) + private val eventAdapters = persistence.adaptersFor(self) protected def preparePersistentBatch(rb: immutable.Seq[PersistentEnvelope]): immutable.Seq[AtomicWrite] = rb.collect { // collect instead of flatMap to avoid Some allocations