1 /*
2  *  Make.org Core API
3  *  Copyright (C) 2021 Make.org
4  *
5  * This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Affero General Public License as
7  *  published by the Free Software Foundation, either version 3 of the
8  *  License, or (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Affero General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Affero General Public License
16  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  *
18  */
19 
20 package org.make.api.sessionhistory
21 
22 import akka.actor.typed.eventstream.EventStream
23 import akka.actor.typed.scaladsl.ActorContext
24 import akka.actor.typed.ActorRef
25 import akka.persistence.typed.scaladsl.{Effect, ReplyEffect}
26 import akka.util.Timeout
27 import grizzled.slf4j.Logging
28 import org.make.api.extensions.MakeSettings
29 import org.make.api.sessionhistory.SessionHistoryActor._
30 import org.make.api.sessionhistory.SessionHistoryResponse.Error.{ExpiredSession, LockAlreadyAcquired}
31 import org.make.api.sessionhistory.SessionHistoryResponse.{Envelope, LockAcquired, LockReleased}
32 import org.make.api.technical.ActorSystemHelper._
33 import org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef
34 import org.make.api.userhistory._
35 import org.make.core.history.HistoryActions._
36 import org.make.core.proposal.{ProposalId, QualificationKey}
37 import org.make.core.session.SessionId
38 import org.make.core.technical.IdGenerator
39 import org.make.core.user.UserId
40 import org.make.core.{DateHelper, MakeSerializable, RequestContext, SprayJsonFormatters}
41 import spray.json.DefaultJsonProtocol._
42 import spray.json.{DefaultJsonProtocol, RootJsonFormat}
43 
44 import scala.concurrent.ExecutionContext.Implicits.global
45 import java.time.ZonedDateTime
46 import scala.util.{Failure, Success}
47 
48 final case class SessionHistory(events: List[SessionHistoryEvent[_]]) extends MakeSerializable
49 
50 object SessionHistory {
51   implicit val persister: RootJsonFormat[SessionHistory] = DefaultJsonProtocol.jsonFormat1(SessionHistory.apply)
52 }
53 
54 sealed trait State extends MakeSerializable with Logging {
55   def lastEventDate: Option[ZonedDateTime]
56 
57   def handleCommand(
58     userHistoryCoordinator: ActorRef[UserHistoryCommand],
59     lockHandler: LockHandler,
60     settings: MakeSettings,
61     idGenerator: IdGenerator
62   )(
63     implicit context: ActorContext[SessionHistoryCommand],
64     timeout: Timeout
65   ): SessionHistoryCommand => Effect[SessionHistoryEvent[_], State]
66 
67   def handleEvent(settings: MakeSettings): SessionHistoryEvent[_] => State
68 
69   def retrieveOrExpireSession(
70     command: GetCurrentSession,
71     settings: MakeSettings,
72     lastEventDate: Option[ZonedDateTime]
73   ): ReplyEffect[SessionHistoryEvent[_], State] = {
74     val isSessionExpired: Boolean =
75       lastEventDate.exists(_.isBefore(DateHelper.now().minusNanos(settings.SessionCookie.lifetime.toNanos)))
76 
77     if (isSessionExpired) {
78       Effect
79         .persist(
80           SessionExpired(
81             sessionId = command.sessionId,
82             requestContext = RequestContext.empty,
83             action =
84               SessionAction(date = DateHelper.now(), actionType = "sessionExpired", arguments = command.newSessionId)
85           )
86         )
87         .thenReply(command.replyTo)(_ => Envelope(command.newSessionId))
88     } else {
89       Effect
90         .persist[SessionHistoryEvent[_], State](
91           SaveLastEventDate(
92             command.sessionId,
93             RequestContext.empty,
94             action = SessionAction(
95               date = DateHelper.now(),
96               actionType = "saveLastEventDate",
97               arguments = Some(DateHelper.now())
98             )
99           )
100         )
101         .thenReply(command.replyTo)(_ => Envelope(command.sessionId))
102     }
103   }
104 
105   def acquireLockForVotesIfPossible(
106     command: LockProposalForVote,
107     lockHandler: LockHandler
108   ): ReplyEffect[SessionHistoryEvent[_], State] = {
109     lockHandler.getOrExpire(command.proposalId) match {
110       case None =>
111         lockHandler.add(command.proposalId -> Vote)
112         Effect.reply(command.replyTo)(LockAcquired)
113       case Some(_) =>
114         Effect.reply(command.replyTo)(
115           LockAlreadyAcquired(
116             s"Trying to vote on a locked proposal ${command.proposalId.value} for session ${command.sessionId.value}"
117           )
118         )
119     }
120   }
121 
122   def acquireLockForQualificationIfPossible(
123     command: LockProposalForQualification,
124     lockHandler: LockHandler
125   ): ReplyEffect[SessionHistoryEvent[_], State] = {
126     lockHandler.getOrExpire(command.proposalId) match {
127       case None =>
128         lockHandler.add(command.proposalId -> ChangeQualifications(Seq(command.key)))
129         Effect.reply(command.replyTo)(LockAcquired)
130       case Some(Vote) =>
131         Effect.reply(command.replyTo)(
132           LockAlreadyAcquired(
133             s"Trying to qualify on a locked proposal ${command.proposalId.value} for session ${command.sessionId.value} (vote)"
134           )
135         )
136       case Some(ChangeQualifications(keys)) if keys.contains(command.key) =>
137         Effect.reply(command.replyTo)(
138           LockAlreadyAcquired(
139             s"Trying to qualify on a locked proposal ${command.proposalId.value} for session ${command.sessionId.value} (same qualification)"
140           )
141         )
142       case Some(ChangeQualifications(keys)) =>
143         lockHandler.add(command.proposalId -> ChangeQualifications(keys ++ Seq(command.key)))
144         Effect.reply(command.replyTo)(LockAcquired)
145     }
146   }
147 
148   def releaseProposalLock(
149     command: ReleaseProposalForVote,
150     lockHandler: LockHandler
151   ): ReplyEffect[SessionHistoryEvent[_], State] = {
152     lockHandler.release(command.proposalId)
153     Effect.reply(command.replyTo)(LockReleased)
154   }
155 
156   def releaseLockForQualification(
157     command: ReleaseProposalForQualification,
158     lockHandler: LockHandler
159   ): ReplyEffect[SessionHistoryEvent[_], State] = {
160     lockHandler.getOrExpire(command.proposalId) match {
161       case Some(ChangeQualifications(keys)) =>
162         val remainingLocks = keys.filter(_ != command.key)
163         if (remainingLocks.isEmpty) {
164           lockHandler.release(command.proposalId)
165         } else {
166           lockHandler.add(command.proposalId -> ChangeQualifications(remainingLocks))
167         }
168       case _ =>
169     }
170     Effect.reply(command.replyTo)(LockReleased)
171   }
172 
173   def onUserHistoryFailure[T](command: UserHistoryFailure[T]): ReplyEffect[SessionHistoryEvent[_], State] = {
174     logger.warn(s"Error while requesting user history: ${command.exception}")
175     Effect.reply(command.replyTo)(Envelope(command.response))
176   }
177 
178   def stopSessionHistoryActor(
179     command: StopSessionActor,
180     lastEventDate: Option[ZonedDateTime]
181   ): ReplyEffect[SessionHistoryEvent[_], State] = {
182     Effect
183       .persist[SessionHistoryEvent[_], State](
184         SaveLastEventDate(
185           command.id,
186           RequestContext.empty,
187           action = SessionAction(date = DateHelper.now(), actionType = "saveLastEventDate", arguments = lastEventDate)
188         )
189       )
190       .thenStop()
191       .thenReply(command.replyTo)(_ => Envelope(Ack))
192   }
193 }
194 
195 final case class Active(sessionHistory: SessionHistory, lastEventDate: Option[ZonedDateTime])
196     extends State
197     with Logging {
198   override def handleCommand(
199     userHistoryCoordinator: ActorRef[UserHistoryCommand],
200     lockHandler: LockHandler,
201     settings: MakeSettings,
202     idGenerator: IdGenerator
203   )(
204     implicit context: ActorContext[SessionHistoryCommand],
205     timeout: Timeout
206   ): SessionHistoryCommand => Effect[SessionHistoryEvent[_], State] = {
207     case command: GetCurrentSession                    => retrieveOrExpireSession(command, settings, lastEventDate)
208     case EventEnvelope(_, event, replyTo)              => Effect.persist(event).thenReply(replyTo)(_ => Envelope(Ack))
209     case command: SessionVoteValuesCommand             => onRetrieveVoteValues(sessionHistory, command)
210     case command: SessionVotedProposalsPaginateCommand => onRetrieveVotedProposals(sessionHistory, command)
211     case command: UserConnected                        => transformSession(sessionHistory, command, userHistoryCoordinator)
212     case command: LockProposalForVote                  => acquireLockForVotesIfPossible(command, lockHandler)
213     case command: LockProposalForQualification         => acquireLockForQualificationIfPossible(command, lockHandler)
214     case command: ReleaseProposalForVote               => releaseProposalLock(command, lockHandler)
215     case command: ReleaseProposalForQualification      => releaseLockForQualification(command, lockHandler)
216     // Unhandled
217     case _: SessionClosed         => Effect.unhandled
218     case _: UserHistorySuccess[_] => Effect.unhandled
219     case _: UserHistoryFailure[_] => Effect.unhandled
220     // Test
221     case GetState(_, replyTo)      => Effect.reply(replyTo)(Envelope(Active(sessionHistory, lastEventDate)))
222     case command: StopSessionActor => stopSessionHistoryActor(command, lastEventDate)
223   }
224 
225   override def handleEvent(settings: MakeSettings): SessionHistoryEvent[_] => State = {
226     case event: SaveLastEventDate =>
227       Active(
228         sessionHistory.copy(events = (event :: sessionHistory.events).take(settings.maxUserHistoryEvents)),
229         lastEventDate = event.action.arguments
230       )
231     case event: SessionTransforming =>
232       Transforming(
233         sessionHistory.copy(events = (event :: sessionHistory.events).take(settings.maxUserHistoryEvents)),
234         event.requestContext,
235         lastEventDate = Some(event.action.date)
236       )
237     case event: SessionExpired => Expired(event.action.arguments, lastEventDate)
238     case event: SessionHistoryEvent[_] =>
239       Active(
240         sessionHistory.copy(events = (event :: sessionHistory.events).take(settings.maxUserHistoryEvents)),
241         lastEventDate = Some(event.action.date)
242       )
243   }
244 
245   def onRetrieveVoteValues(
246     state: SessionHistory,
247     command: SessionVoteValuesCommand
248   ): ReplyEffect[SessionHistoryEvent[_], State] = {
249     val voteRelatedActions: Seq[VoteRelatedAction] = actions(state, command.proposalIds)
250     val voteAndQualifications: Map[ProposalId, VoteAndQualifications] = voteByProposalId(voteRelatedActions).map {
251       case (proposalId, voteAction) =>
252         proposalId -> VoteAndQualifications(
253           voteAction.key,
254           qualifications(voteRelatedActions).getOrElse(proposalId, Map.empty),
255           voteAction.date,
256           voteAction.trust
257         )
258     }
259     Effect.reply(command.replyTo)(Envelope(voteAndQualifications))
260   }
261 
262   @SuppressWarnings(Array("org.wartremover.warts.IterableOps"))
263   def voteByProposalId(actions: Seq[VoteRelatedAction]): Map[ProposalId, VoteAction] = {
264     actions.collect {
265       case voteAction: GenericVoteAction => voteAction
266     }.groupBy(_.proposalId)
267       .map {
268         case (proposalId, voteActions) =>
269           proposalId -> voteActions.maxBy(_.date.toString)
270       }
271       .collect {
272         case (k, value: VoteAction) => k -> value
273       }
274   }
275 
276   def onRetrieveVotedProposals(
277     state: SessionHistory,
278     command: SessionVotedProposalsPaginateCommand
279   ): ReplyEffect[SessionHistoryEvent[_], State] = {
280     val votedProposals: Seq[ProposalId] = voteByProposalId(voteActions(state)).toSeq.sortBy {
281       case (_, votesAndQualifications) => votesAndQualifications.date
282     }.collect {
283       case (proposalId, _) if command.proposalsIds.forall(_.contains(proposalId)) => proposalId
284     }.slice(command.offset.extractInt, command.offset.extractInt + command.limit.extractInt)
285 
286     Effect.reply(command.replyTo)(Envelope(votedProposals))
287   }
288 
289   def transformSession(
290     state: SessionHistory,
291     command: UserConnected,
292     userHistoryCoordinator: ActorRef[UserHistoryCommand]
293   )(
294     implicit context: ActorContext[SessionHistoryCommand],
295     timeout: Timeout
296   ): ReplyEffect[SessionHistoryEvent[_], State] = {
297     logger.info(
298       s"Transforming session ${command.id} to user ${command.userId.value} with events ${state.events.map(_.toString).mkString(", ")}"
299     )
300 
301     val events: Seq[LoggableHistoryEvent[_]] = state.events.collect {
302       case event: LoggableHistoryEvent[_] => event
303     }.sortBy(_.action.date.toString)
304 
305     context.pipeToSelf(
306       userHistoryCoordinator ?? (InjectSessionEvents(
307         command.userId,
308         events.map(_.toUserHistoryEvent(command.userId)),
309         _
310       ))
311     ) {
312       case Success(_)         => SessionClosed(command.id, command.userId, command.replyTo)
313       case Failure(exception) => UserHistoryFailure[LogResult](command.id, Failed, exception, command.replyTo)
314     }
315 
316     Effect
317       .persist(
318         SessionTransforming(
319           command.id,
320           command.requestContext,
321           SessionAction(DateHelper.now(), "transformingSession", command.userId)
322         )
323       )
324       .thenNoReply()
325   }
326 
327   private def actions(state: SessionHistory, proposalIds: Seq[ProposalId]): Seq[VoteRelatedAction] =
328     state.events.flatMap {
329       case LogSessionVoteEvent(_, _, SessionAction(date, _, SessionVote(proposalId, voteKey, trust)))
330           if proposalIds.contains(proposalId) =>
331         Some(VoteAction(proposalId, date, voteKey, trust))
332       case LogSessionUnvoteEvent(_, _, SessionAction(date, _, SessionUnvote(proposalId, voteKey, trust)))
333           if proposalIds.contains(proposalId) =>
334         Some(UnvoteAction(proposalId, date, voteKey, trust))
335       case LogSessionQualificationEvent(
336           _,
337           _,
338           SessionAction(date, _, SessionQualification(proposalId, qualificationKey, trust))
339           ) if proposalIds.contains(proposalId) =>
340         Some(QualificationAction(proposalId, date, qualificationKey, trust))
341       case LogSessionUnqualificationEvent(
342           _,
343           _,
344           SessionAction(date, _, SessionUnqualification(proposalId, qualificationKey, trust))
345           ) if proposalIds.contains(proposalId) =>
346         Some(UnqualificationAction(proposalId, date, qualificationKey, trust))
347       case _ => None
348     }
349 
350   @SuppressWarnings(Array("org.wartremover.warts.IterableOps"))
351   private def qualifications(actions: Seq[VoteRelatedAction]): Map[ProposalId, Map[QualificationKey, VoteTrust]] = {
352     actions.collect {
353       case qualificationAction: GenericQualificationAction => qualificationAction
354     }.groupBy { qualificationAction =>
355       qualificationAction.proposalId -> qualificationAction.key
356     }.map {
357       case (groupKey, qualificationAction) => groupKey -> qualificationAction.maxBy(_.date.toString)
358     }.collect {
359       case (k, v: QualificationAction) => k -> v
360     }.toList.map {
361       case ((proposalId, key), action) => proposalId -> (key -> action.trust)
362     }.groupBy {
363       case (proposalId, _) => proposalId
364     }.map {
365       case (proposalId, qualificationList) =>
366         proposalId -> qualificationList.map {
367           case (_, key) => key
368         }.toMap
369     }
370   }
371 
372   private def voteActions(state: SessionHistory): Seq[VoteRelatedAction] = state.events.flatMap {
373     case LogSessionVoteEvent(_, _, SessionAction(date, _, SessionVote(proposalId, voteKey, trust))) =>
374       Some(VoteAction(proposalId, date, voteKey, trust))
375     case LogSessionUnvoteEvent(_, _, SessionAction(date, _, SessionUnvote(proposalId, voteKey, trust))) =>
376       Some(UnvoteAction(proposalId, date, voteKey, trust))
377     case LogSessionQualificationEvent(
378         _,
379         _,
380         SessionAction(date, _, SessionQualification(proposalId, qualificationKey, trust))
381         ) =>
382       Some(QualificationAction(proposalId, date, qualificationKey, trust))
383     case LogSessionUnqualificationEvent(
384         _,
385         _,
386         SessionAction(date, _, SessionUnqualification(proposalId, qualificationKey, trust))
387         ) =>
388       Some(UnqualificationAction(proposalId, date, qualificationKey, trust))
389     case _ => None
390   }
391 }
392 
393 object Active extends SprayJsonFormatters {
394   implicit val jsonFormat: RootJsonFormat[Active] = DefaultJsonProtocol.jsonFormat2(Active.apply)
395 }
396 
397 final case class Transforming(
398   sessionHistory: SessionHistory,
399   requestContext: RequestContext,
400   lastEventDate: Option[ZonedDateTime]
401 ) extends State {
402   override def handleCommand(
403     userHistoryCoordinator: ActorRef[UserHistoryCommand],
404     lockHandler: LockHandler,
405     settings: MakeSettings,
406     idGenerator: IdGenerator
407   )(
408     implicit context: ActorContext[SessionHistoryCommand],
409     timeout: Timeout
410   ): SessionHistoryCommand => Effect[SessionHistoryEvent[_], State] = {
411     case _: EventEnvelope[_]                      => Effect.stash()
412     case command: LockProposalForVote             => acquireLockForVotesIfPossible(command, lockHandler)
413     case command: LockProposalForQualification    => acquireLockForQualificationIfPossible(command, lockHandler)
414     case command: ReleaseProposalForVote          => releaseProposalLock(command, lockHandler)
415     case command: ReleaseProposalForQualification => releaseLockForQualification(command, lockHandler)
416     // Internal
417     case command: SessionClosed         => onSessionClosed(command, requestContext, idGenerator)
418     case command: UserHistoryFailure[_] => onUserHistoryFailure(command)
419     // Unhandled
420     case _: GetCurrentSession                    => Effect.stash()
421     case _: SessionVoteValuesCommand             => Effect.stash()
422     case _: SessionVotedProposalsPaginateCommand => Effect.stash()
423     case _: UserConnected                        => Effect.unhandled
424     case _: UserHistorySuccess[_]                => Effect.unhandled
425     // Test
426     case GetState(_, replyTo) =>
427       Effect.reply(replyTo)(Envelope(Transforming(sessionHistory, requestContext, lastEventDate)))
428     case command: StopSessionActor => stopSessionHistoryActor(command, lastEventDate)
429   }
430 
431   override def handleEvent(settings: MakeSettings): SessionHistoryEvent[_] => State = {
432     case transformed: SessionTransformed =>
433       Closed(transformed.action.arguments, lastEventDate = Some(transformed.action.date))
434     case event: SaveLastEventDate =>
435       Transforming(
436         sessionHistory.copy(events = (event :: sessionHistory.events).take(settings.maxUserHistoryEvents)),
437         requestContext,
438         lastEventDate = event.action.arguments
439       )
440     case event: SessionHistoryEvent[_] =>
441       Transforming(
442         sessionHistory.copy(events = (event :: sessionHistory.events).take(settings.maxUserHistoryEvents)),
443         requestContext,
444         lastEventDate = Some(event.action.date)
445       )
446   }
447 
448   def onSessionClosed(command: SessionClosed, requestContext: RequestContext, idGenerator: IdGenerator)(
449     implicit context: ActorContext[SessionHistoryCommand]
450   ): ReplyEffect[SessionHistoryEvent[_], State] = {
451     Effect
452       .persist(
453         SessionTransformed(
454           sessionId = command.id,
455           requestContext = RequestContext.empty,
456           action = SessionAction(date = DateHelper.now(), actionType = "transformSession", arguments = command.userId)
457         )
458       )
459       .thenRun { _: State =>
460         context.system.eventStream ! EventStream.Publish(
461           UserConnectedEvent(
462             connectedUserId = Some(command.userId),
463             eventDate = DateHelper.now(),
464             userId = command.userId,
465             requestContext = requestContext,
466             eventId = Some(idGenerator.nextEventId())
467           )
468         )
469       }
470       .thenReply(command.replyTo)(_ => Envelope(Ack))
471       .thenUnstashAll()
472   }
473 }
474 
475 object Transforming extends SprayJsonFormatters {
476   implicit val jsonFormat: RootJsonFormat[Transforming] = DefaultJsonProtocol.jsonFormat3(Transforming.apply)
477 }
478 
479 final case class Closed(userId: UserId, lastEventDate: Option[ZonedDateTime]) extends State with Logging {
480   override def handleCommand(
481     userHistoryCoordinator: ActorRef[UserHistoryCommand],
482     lockHandler: LockHandler,
483     settings: MakeSettings,
484     idGenerator: IdGenerator
485   )(
486     implicit context: ActorContext[SessionHistoryCommand],
487     timeout: Timeout
488   ): SessionHistoryCommand => Effect[SessionHistoryEvent[_], State] = {
489     case command: GetCurrentSession => retrieveOrExpireSession(command, settings, lastEventDate)
490     case command @ EventEnvelope(_, _: LoggableHistoryEvent[_], _) =>
491       transferEventWhilstClosed(command, userId, userHistoryCoordinator)
492     case command: SessionVoteValuesCommand => onRetrieveUserVoteValues(command, userId, userHistoryCoordinator)
493     case command: SessionVotedProposalsPaginateCommand =>
494       onRetrieveUserVotedProposals(command, userId, userHistoryCoordinator)
495     case command: UserConnected                   => transformClosedSession(command, userId)
496     case command: LockProposalForVote             => acquireLockForVotesIfPossible(command, lockHandler)
497     case command: LockProposalForQualification    => acquireLockForQualificationIfPossible(command, lockHandler)
498     case command: ReleaseProposalForVote          => releaseProposalLock(command, lockHandler)
499     case command: ReleaseProposalForQualification => releaseLockForQualification(command, lockHandler)
500     // Internal
501     case UserHistorySuccess(_, response, replyTo) => Effect.reply(replyTo)(Envelope(response))
502     case command: UserHistoryFailure[_]           => onUserHistoryFailure(command)
503     // Unhandled
504     case _: SessionClosed => Effect.unhandled
505     // Test
506     case GetState(_, replyTo)      => Effect.reply(replyTo)(Envelope(Closed(userId, lastEventDate)))
507     case command: StopSessionActor => stopSessionHistoryActor(command, lastEventDate)
508   }
509 
510   override def handleEvent(settings: MakeSettings): SessionHistoryEvent[_] => State = {
511     case transformed: SessionTransformed =>
512       Closed(transformed.action.arguments, lastEventDate = Some(transformed.action.date))
513     case event: SaveLastEventDate =>
514       Closed(userId, lastEventDate = event.action.arguments)
515     case event: SessionExpired =>
516       Expired(event.action.arguments, lastEventDate)
517     case event: SessionHistoryEvent[_] =>
518       Closed(userId, lastEventDate = Some(event.action.date))
519   }
520 
521   def onRetrieveUserVoteValues(
522     command: SessionVoteValuesCommand,
523     userId: UserId,
524     userHistoryCoordinator: ActorRef[UserHistoryCommand]
525   )(
526     implicit context: ActorContext[SessionHistoryCommand],
527     timeout: Timeout
528   ): ReplyEffect[SessionHistoryEvent[_], State] = {
529     context.pipeToSelf(userHistoryCoordinator ?? (RequestVoteValues(userId, command.proposalIds, _))) {
530       case Success(value) =>
531         UserHistorySuccess[Map[ProposalId, VoteAndQualifications]](command.id, value.value, command.replyTo)
532       case Failure(exception) =>
533         UserHistoryFailure[Map[ProposalId, VoteAndQualifications]](command.id, Map.empty, exception, command.replyTo)
534     }
535     Effect.noReply
536   }
537 
538   def onRetrieveUserVotedProposals(
539     command: SessionVotedProposalsPaginateCommand,
540     userId: UserId,
541     userHistoryCoordinator: ActorRef[UserHistoryCommand]
542   )(
543     implicit context: ActorContext[SessionHistoryCommand],
544     timeout: Timeout
545   ): ReplyEffect[SessionHistoryEvent[_], State] = {
546     context.pipeToSelf(
547       userHistoryCoordinator ?? (RequestUserVotedProposalsPaginate(
548         userId = userId,
549         filterVotes = None,
550         filterQualifications = None,
551         proposalsIds = command.proposalsIds,
552         limit = command.limit,
553         offset = command.offset,
554         _
555       ))
556     ) {
557       case Success(value) => UserHistorySuccess[Seq[ProposalId]](command.id, value.value, command.replyTo)
558       case Failure(exception) =>
559         UserHistoryFailure[Seq[ProposalId]](command.id, Seq.empty, exception, command.replyTo)
560     }
561     Effect.noReply
562   }
563 
564   def transformClosedSession(command: UserConnected, userId: UserId): ReplyEffect[SessionHistoryEvent[_], State] = {
565     if (command.userId != userId) {
566       logger.warn(s"Session ${command.id} has moved from user ${userId.value} to user ${command.userId.value}")
567       Effect.persist(
568         SessionTransformed(
569           command.id,
570           command.requestContext,
571           SessionAction(DateHelper.now(), "sessionTransformed", command.userId)
572         )
573       )
574     }
575     Effect.reply(command.replyTo)(Envelope(Ack))
576   }
577 
578   def transferEventWhilstClosed(
579     command: EventEnvelope[LoggableHistoryEvent[_]],
580     userId: UserId,
581     userHistoryCoordinator: ActorRef[UserHistoryCommand]
582   )(
583     implicit context: ActorContext[SessionHistoryCommand],
584     timeout: Timeout
585   ): ReplyEffect[SessionHistoryEvent[_], State] = {
586     context.pipeToSelf(userHistoryCoordinator ?? { replyTo: ActorRef[UserHistoryResponse[Ack.type]] =>
587       UserHistoryTransactionalEnvelope(userId, command.event.toUserHistoryEvent(userId), replyTo)
588     }) {
589       case Success(UserHistoryResponse(log)) => UserHistorySuccess[LogResult](command.id, log, command.replyTo)
590       case Failure(exception)                => UserHistoryFailure[LogResult](command.id, Failed, exception, command.replyTo)
591     }
592     Effect.noReply
593   }
594 }
595 
596 object Closed extends SprayJsonFormatters {
597   implicit val jsonFormat: RootJsonFormat[Closed] = DefaultJsonProtocol.jsonFormat2(Closed.apply)
598 }
599 
600 final case class Expired(newSessionId: SessionId, lastEventDate: Option[ZonedDateTime]) extends State {
601   override def handleCommand(
602     userHistoryCoordinator: ActorRef[UserHistoryCommand],
603     lockHandler: LockHandler,
604     settings: MakeSettings,
605     idGenerator: IdGenerator
606   )(
607     implicit context: ActorContext[SessionHistoryCommand],
608     timeout: Timeout
609   ): SessionHistoryCommand => Effect[SessionHistoryEvent[_], State] = {
610     case command: GetCurrentSession           => retrieveOrExpireSession(command, settings, lastEventDate)
611     case command: SessionExpiredCommand[_, _] => Effect.reply(command.replyTo)(ExpiredSession(newSessionId))
612     // Unhandled
613     case _: SessionClosed         => Effect.unhandled
614     case _: UserHistorySuccess[_] => Effect.unhandled
615     case _: UserHistoryFailure[_] => Effect.unhandled
616     // Test
617     case GetState(_, replyTo)      => Effect.reply(replyTo)(Envelope(Expired(newSessionId, lastEventDate)))
618     case command: StopSessionActor => stopSessionHistoryActor(command, lastEventDate)
619   }
620 
621   override def handleEvent(settings: MakeSettings): SessionHistoryEvent[_] => State = { _: SessionHistoryEvent[_] =>
622     Expired(newSessionId, lastEventDate)
623   }
624 }
625 
626 object Expired extends SprayJsonFormatters {
627   implicit val jsonFormat: RootJsonFormat[Expired] = DefaultJsonProtocol.jsonFormat2(Expired.apply)
628 }
Line Stmt Id Pos Tree Symbol Tests Code
51 11492 2231 - 2231 ApplyToImplicitArgs spray.json.CollectionFormats.listFormat org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest spray.json.DefaultJsonProtocol.listFormat[org.make.api.sessionhistory.SessionHistoryEvent[_]](sessionhistory.this.SessionHistoryEvent.format)
51 13618 2231 - 2231 Select org.make.api.sessionhistory.SessionHistoryEvent.format org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest sessionhistory.this.SessionHistoryEvent.format
51 16785 2232 - 2252 Apply org.make.api.sessionhistory.SessionHistory.apply org.scalatest.testsuite SessionHistory.apply(events)
51 17501 2200 - 2253 ApplyToImplicitArgs spray.json.ProductFormatsInstances.jsonFormat1 org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest spray.json.DefaultJsonProtocol.jsonFormat1[List[org.make.api.sessionhistory.SessionHistoryEvent[_]], org.make.api.sessionhistory.SessionHistory](((events: List[org.make.api.sessionhistory.SessionHistoryEvent[_]]) => SessionHistory.apply(events)))(spray.json.DefaultJsonProtocol.listFormat[org.make.api.sessionhistory.SessionHistoryEvent[_]](sessionhistory.this.SessionHistoryEvent.format), (ClassTag.apply[org.make.api.sessionhistory.SessionHistory](classOf[org.make.api.sessionhistory.SessionHistory]): scala.reflect.ClassTag[org.make.api.sessionhistory.SessionHistory]))
75 18063 3003 - 3083 Apply java.time.chrono.ChronoZonedDateTime.isBefore x$1.isBefore(org.make.core.DateHelper.now().minusNanos(settings.SessionCookie.lifetime.toNanos))
75 13714 3042 - 3081 Select scala.concurrent.duration.Duration.toNanos settings.SessionCookie.lifetime.toNanos
75 14463 2982 - 3084 Apply scala.Option.exists lastEventDate.exists(((x$1: java.time.ZonedDateTime) => x$1.isBefore(org.make.core.DateHelper.now().minusNanos(settings.SessionCookie.lifetime.toNanos))))
75 10240 3014 - 3082 Apply java.time.ZonedDateTime.minusNanos org.make.core.DateHelper.now().minusNanos(settings.SessionCookie.lifetime.toNanos)
80 10257 3155 - 3415 Apply org.make.api.sessionhistory.SessionExpired.apply SessionExpired.apply(command.sessionId, org.make.core.RequestContext.empty, SessionAction.apply[org.make.core.session.SessionId](org.make.core.DateHelper.now(), "sessionExpired", command.newSessionId))
81 10720 3195 - 3212 Select org.make.api.sessionhistory.GetCurrentSession.sessionId command.sessionId
82 16804 3243 - 3263 Select org.make.core.RequestContext.empty org.make.core.RequestContext.empty
84 13726 3300 - 3403 Apply org.make.api.sessionhistory.SessionAction.apply SessionAction.apply[org.make.core.session.SessionId](org.make.core.DateHelper.now(), "sessionExpired", command.newSessionId)
84 13250 3321 - 3337 Apply org.make.core.DefaultDateHelper.now org.make.core.DateHelper.now()
84 17400 3382 - 3402 Select org.make.api.sessionhistory.GetCurrentSession.newSessionId command.newSessionId
84 11508 3352 - 3368 Literal <nosymbol> "sessionExpired"
87 11220 3467 - 3497 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.core.session.SessionId](command.newSessionId)
87 16540 3445 - 3460 Select org.make.api.sessionhistory.GetCurrentSession.replyTo command.replyTo
87 13596 3120 - 3498 Block akka.persistence.typed.scaladsl.EffectBuilder.thenReply akka.persistence.typed.scaladsl.Effect.persist[org.make.api.sessionhistory.SessionExpired, org.make.api.sessionhistory.State](SessionExpired.apply(command.sessionId, org.make.core.RequestContext.empty, SessionAction.apply[org.make.core.session.SessionId](org.make.core.DateHelper.now(), "sessionExpired", command.newSessionId))).thenReply[org.make.api.sessionhistory.SessionHistoryResponse.Envelope[org.make.core.session.SessionId]](command.replyTo)(((x$2: org.make.api.sessionhistory.State) => org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.core.session.SessionId](command.newSessionId)))
87 16694 3120 - 3498 Apply akka.persistence.typed.scaladsl.EffectBuilder.thenReply akka.persistence.typed.scaladsl.Effect.persist[org.make.api.sessionhistory.SessionExpired, org.make.api.sessionhistory.State](SessionExpired.apply(command.sessionId, org.make.core.RequestContext.empty, SessionAction.apply[org.make.core.session.SessionId](org.make.core.DateHelper.now(), "sessionExpired", command.newSessionId))).thenReply[org.make.api.sessionhistory.SessionHistoryResponse.Envelope[org.make.core.session.SessionId]](command.replyTo)(((x$2: org.make.api.sessionhistory.State) => org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.core.session.SessionId](command.newSessionId)))
87 14480 3476 - 3496 Select org.make.api.sessionhistory.GetCurrentSession.newSessionId command.newSessionId
91 16704 3584 - 3865 Apply org.make.api.sessionhistory.SaveLastEventDate.apply SaveLastEventDate.apply(command.sessionId, org.make.core.RequestContext.empty, SessionAction.apply[Option[java.time.ZonedDateTime]](org.make.core.DateHelper.now(), "saveLastEventDate", scala.Some.apply[java.time.ZonedDateTime](org.make.core.DateHelper.now())))
92 11693 3615 - 3632 Select org.make.api.sessionhistory.GetCurrentSession.sessionId command.sessionId
93 17416 3646 - 3666 Select org.make.core.RequestContext.empty org.make.core.RequestContext.empty
94 11238 3689 - 3853 Apply org.make.api.sessionhistory.SessionAction.apply SessionAction.apply[Option[java.time.ZonedDateTime]](org.make.core.DateHelper.now(), "saveLastEventDate", scala.Some.apply[java.time.ZonedDateTime](org.make.core.DateHelper.now()))
95 13737 3725 - 3741 Apply org.make.core.DefaultDateHelper.now org.make.core.DateHelper.now()
96 10128 3770 - 3789 Literal <nosymbol> "saveLastEventDate"
97 14668 3817 - 3839 Apply scala.Some.apply scala.Some.apply[java.time.ZonedDateTime](org.make.core.DateHelper.now())
97 16557 3822 - 3838 Apply org.make.core.DefaultDateHelper.now org.make.core.DateHelper.now()
101 13493 3895 - 3910 Select org.make.api.sessionhistory.GetCurrentSession.replyTo command.replyTo
101 14240 3518 - 3945 Apply akka.persistence.typed.scaladsl.EffectBuilder.thenReply akka.persistence.typed.scaladsl.Effect.persist[org.make.api.sessionhistory.SessionHistoryEvent[_], org.make.api.sessionhistory.State](SaveLastEventDate.apply(command.sessionId, org.make.core.RequestContext.empty, SessionAction.apply[Option[java.time.ZonedDateTime]](org.make.core.DateHelper.now(), "saveLastEventDate", scala.Some.apply[java.time.ZonedDateTime](org.make.core.DateHelper.now())))).thenReply[org.make.api.sessionhistory.SessionHistoryResponse.Envelope[org.make.core.session.SessionId]](command.replyTo)(((x$3: org.make.api.sessionhistory.State) => org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.core.session.SessionId](command.sessionId)))
101 9992 3926 - 3943 Select org.make.api.sessionhistory.GetCurrentSession.sessionId command.sessionId
101 17498 3917 - 3944 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.core.session.SessionId](command.sessionId)
101 10527 3518 - 3945 Block akka.persistence.typed.scaladsl.EffectBuilder.thenReply akka.persistence.typed.scaladsl.Effect.persist[org.make.api.sessionhistory.SessionHistoryEvent[_], org.make.api.sessionhistory.State](SaveLastEventDate.apply(command.sessionId, org.make.core.RequestContext.empty, SessionAction.apply[Option[java.time.ZonedDateTime]](org.make.core.DateHelper.now(), "saveLastEventDate", scala.Some.apply[java.time.ZonedDateTime](org.make.core.DateHelper.now())))).thenReply[org.make.api.sessionhistory.SessionHistoryResponse.Envelope[org.make.core.session.SessionId]](command.replyTo)(((x$3: org.make.api.sessionhistory.State) => org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.core.session.SessionId](command.sessionId)))
109 16442 4137 - 4155 Select org.make.api.sessionhistory.LockProposalForVote.proposalId command.proposalId
109 14689 4113 - 4156 Apply org.make.api.sessionhistory.SessionHistoryActor.LockHandler.getOrExpire lockHandler.getOrExpire(command.proposalId)
111 13505 4208 - 4234 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](command.proposalId).->[org.make.api.sessionhistory.SessionHistoryActor.Vote.type](org.make.api.sessionhistory.SessionHistoryActor.Vote)
111 9867 4192 - 4235 Apply org.make.api.sessionhistory.SessionHistoryActor.LockHandler.add lockHandler.add(scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](command.proposalId).->[org.make.api.sessionhistory.SessionHistoryActor.Vote.type](org.make.api.sessionhistory.SessionHistoryActor.Vote))
111 10937 4208 - 4226 Select org.make.api.sessionhistory.LockProposalForVote.proposalId command.proposalId
111 17199 4230 - 4234 Select org.make.api.sessionhistory.SessionHistoryActor.Vote org.make.api.sessionhistory.SessionHistoryActor.Vote
112 13954 4274 - 4286 Select org.make.api.sessionhistory.SessionHistoryResponse.LockAcquired org.make.api.sessionhistory.SessionHistoryResponse.LockAcquired
112 17394 4257 - 4272 Select org.make.api.sessionhistory.LockProposalForVote.replyTo command.replyTo
112 10423 4244 - 4287 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.LockAcquired)
114 10828 4318 - 4519 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Error.LockAlreadyAcquired.apply(("Trying to vote on a locked proposal ".+(command.proposalId.value).+(" for session ").+(command.sessionId.value): String)))
114 16458 4331 - 4346 Select org.make.api.sessionhistory.LockProposalForVote.replyTo command.replyTo
115 14472 4359 - 4509 Apply org.make.api.sessionhistory.SessionHistoryResponse.Error.LockAlreadyAcquired.apply org.make.api.sessionhistory.SessionHistoryResponse.Error.LockAlreadyAcquired.apply(("Trying to vote on a locked proposal ".+(command.proposalId.value).+(" for session ").+(command.sessionId.value): String))
126 16687 4728 - 4746 Select org.make.api.sessionhistory.LockProposalForQualification.proposalId command.proposalId
126 13411 4704 - 4747 Apply org.make.api.sessionhistory.SessionHistoryActor.LockHandler.getOrExpire lockHandler.getOrExpire(command.proposalId)
128 10122 4821 - 4859 Apply org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply(scala.`package`.Seq.apply[org.make.core.proposal.QualificationKey](command.key))
128 17410 4846 - 4857 Select org.make.api.sessionhistory.LockProposalForQualification.key command.key
128 9883 4799 - 4817 Select org.make.api.sessionhistory.LockProposalForQualification.proposalId command.proposalId
128 13842 4842 - 4858 Apply scala.collection.SeqFactory.Delegate.apply scala.`package`.Seq.apply[org.make.core.proposal.QualificationKey](command.key)
128 12648 4783 - 4860 Apply org.make.api.sessionhistory.SessionHistoryActor.LockHandler.add lockHandler.add(scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](command.proposalId).->[org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications](org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply(scala.`package`.Seq.apply[org.make.core.proposal.QualificationKey](command.key))))
128 16359 4799 - 4859 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](command.proposalId).->[org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications](org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply(scala.`package`.Seq.apply[org.make.core.proposal.QualificationKey](command.key)))
129 17183 4899 - 4911 Select org.make.api.sessionhistory.SessionHistoryResponse.LockAcquired org.make.api.sessionhistory.SessionHistoryResponse.LockAcquired
129 13133 4869 - 4912 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.LockAcquired)
129 10841 4882 - 4897 Select org.make.api.sessionhistory.LockProposalForQualification.replyTo command.replyTo
131 14232 4946 - 5157 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Error.LockAlreadyAcquired.apply(("Trying to qualify on a locked proposal ".+(command.proposalId.value).+(" for session ").+(command.sessionId.value).+(" (vote)"): String)))
131 9678 4959 - 4974 Select org.make.api.sessionhistory.LockProposalForQualification.replyTo command.replyTo
132 17319 4987 - 5147 Apply org.make.api.sessionhistory.SessionHistoryResponse.Error.LockAlreadyAcquired.apply org.make.api.sessionhistory.SessionHistoryResponse.Error.LockAlreadyAcquired.apply(("Trying to qualify on a locked proposal ".+(command.proposalId.value).+(" for session ").+(command.sessionId.value).+(" (vote)"): String))
136 10620 5219 - 5230 Select org.make.api.sessionhistory.LockProposalForQualification.key command.key
136 16113 5205 - 5231 Apply scala.collection.SeqOps.contains keys.contains[org.make.core.proposal.QualificationKey](command.key)
137 12663 5256 - 5271 Select org.make.api.sessionhistory.LockProposalForQualification.replyTo command.replyTo
137 17193 5243 - 5468 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Error.LockAlreadyAcquired.apply(("Trying to qualify on a locked proposal ".+(command.proposalId.value).+(" for session ").+(command.sessionId.value).+(" (same qualification)"): String)))
138 10748 5284 - 5458 Apply org.make.api.sessionhistory.SessionHistoryResponse.Error.LockAlreadyAcquired.apply org.make.api.sessionhistory.SessionHistoryResponse.Error.LockAlreadyAcquired.apply(("Trying to qualify on a locked proposal ".+(command.proposalId.value).+(" for session ").+(command.sessionId.value).+(" (same qualification)"): String))
143 12868 5524 - 5609 Apply org.make.api.sessionhistory.SessionHistoryActor.LockHandler.add lockHandler.add(scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](command.proposalId).->[org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications](org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply(keys.++[org.make.core.proposal.QualificationKey](scala.`package`.Seq.apply[org.make.core.proposal.QualificationKey](command.key)))))
143 14121 5583 - 5607 Apply scala.collection.IterableOps.++ keys.++[org.make.core.proposal.QualificationKey](scala.`package`.Seq.apply[org.make.core.proposal.QualificationKey](command.key))
143 9859 5595 - 5606 Select org.make.api.sessionhistory.LockProposalForQualification.key command.key
143 17332 5591 - 5607 Apply scala.collection.SeqFactory.Delegate.apply scala.`package`.Seq.apply[org.make.core.proposal.QualificationKey](command.key)
143 10635 5562 - 5608 Apply org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply(keys.++[org.make.core.proposal.QualificationKey](scala.`package`.Seq.apply[org.make.core.proposal.QualificationKey](command.key)))
143 13153 5540 - 5558 Select org.make.api.sessionhistory.LockProposalForQualification.proposalId command.proposalId
143 16451 5540 - 5608 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](command.proposalId).->[org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications](org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply(keys.++[org.make.core.proposal.QualificationKey](scala.`package`.Seq.apply[org.make.core.proposal.QualificationKey](command.key))))
144 13633 5618 - 5661 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.LockAcquired)
144 11123 5631 - 5646 Select org.make.api.sessionhistory.LockProposalForQualification.replyTo command.replyTo
144 17100 5648 - 5660 Select org.make.api.sessionhistory.SessionHistoryResponse.LockAcquired org.make.api.sessionhistory.SessionHistoryResponse.LockAcquired
152 15870 5822 - 5861 Apply org.make.api.sessionhistory.SessionHistoryActor.LockHandler.release lockHandler.release(command.proposalId)
152 9876 5842 - 5860 Select org.make.api.sessionhistory.ReleaseProposalForVote.proposalId command.proposalId
153 14136 5879 - 5894 Select org.make.api.sessionhistory.ReleaseProposalForVote.replyTo command.replyTo
153 16355 5866 - 5909 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.LockReleased)
153 10648 5896 - 5908 Select org.make.api.sessionhistory.SessionHistoryResponse.LockReleased org.make.api.sessionhistory.SessionHistoryResponse.LockReleased
160 10729 6081 - 6124 Apply org.make.api.sessionhistory.SessionHistoryActor.LockHandler.getOrExpire lockHandler.getOrExpire(command.proposalId)
160 12885 6105 - 6123 Select org.make.api.sessionhistory.ReleaseProposalForQualification.proposalId command.proposalId
162 13420 6221 - 6237 Apply java.lang.Object.!= x$4.!=(command.key)
162 9774 6209 - 6238 Apply scala.collection.IterableOps.filter keys.filter(((x$4: org.make.core.proposal.QualificationKey) => x$4.!=(command.key)))
162 17115 6226 - 6237 Select org.make.api.sessionhistory.ReleaseProposalForQualification.key command.key
163 15886 6251 - 6273 Select scala.collection.SeqOps.isEmpty remainingLocks.isEmpty
164 10559 6287 - 6326 Apply org.make.api.sessionhistory.SessionHistoryActor.LockHandler.release lockHandler.release(command.proposalId)
164 13854 6307 - 6325 Select org.make.api.sessionhistory.ReleaseProposalForQualification.proposalId command.proposalId
164 16365 6287 - 6326 Block org.make.api.sessionhistory.SessionHistoryActor.LockHandler.release lockHandler.release(command.proposalId)
166 9048 6392 - 6428 Apply org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply(remainingLocks)
166 13315 6354 - 6429 Apply org.make.api.sessionhistory.SessionHistoryActor.LockHandler.add lockHandler.add(scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](command.proposalId).->[org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications](org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply(remainingLocks)))
166 9786 6354 - 6429 Block org.make.api.sessionhistory.SessionHistoryActor.LockHandler.add lockHandler.add(scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](command.proposalId).->[org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications](org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply(remainingLocks)))
166 12767 6370 - 6388 Select org.make.api.sessionhistory.ReleaseProposalForQualification.proposalId command.proposalId
166 16846 6370 - 6428 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](command.proposalId).->[org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications](org.make.api.sessionhistory.SessionHistoryActor.ChangeQualifications.apply(remainingLocks))
168 15522 6453 - 6455 Literal <nosymbol> ()
170 13750 6479 - 6494 Select org.make.api.sessionhistory.ReleaseProposalForQualification.replyTo command.replyTo
170 10630 6496 - 6508 Select org.make.api.sessionhistory.SessionHistoryResponse.LockReleased org.make.api.sessionhistory.SessionHistoryResponse.LockReleased
170 16279 6466 - 6509 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.LockReleased)
174 12781 6629 - 6702 Apply grizzled.slf4j.Logger.warn State.this.logger.warn(("Error while requesting user history: ".+(command.exception): String))
175 13627 6737 - 6763 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[T](command.response)
175 9063 6720 - 6735 Select org.make.api.sessionhistory.UserHistoryFailure.replyTo command.replyTo
175 9693 6707 - 6764 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse.Envelope[T], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[T](command.response))
175 16723 6746 - 6762 Select org.make.api.sessionhistory.UserHistoryFailure.response command.response
184 8954 6991 - 7192 Apply org.make.api.sessionhistory.SaveLastEventDate.apply SaveLastEventDate.apply(command.id, org.make.core.RequestContext.empty, SessionAction.apply[Option[java.time.ZonedDateTime]](org.make.core.DateHelper.now(), "saveLastEventDate", lastEventDate))
185 15539 7020 - 7030 Select org.make.api.sessionhistory.SessionHistoryCommand.id command.id
186 13765 7042 - 7062 Select org.make.core.RequestContext.empty org.make.core.RequestContext.empty
187 10538 7104 - 7120 Apply org.make.core.DefaultDateHelper.now org.make.core.DateHelper.now()
187 16590 7135 - 7154 Literal <nosymbol> "saveLastEventDate"
187 13048 7083 - 7182 Apply org.make.api.sessionhistory.SessionAction.apply SessionAction.apply[Option[java.time.ZonedDateTime]](org.make.core.DateHelper.now(), "saveLastEventDate", lastEventDate)
191 10029 6929 - 7272 Apply akka.persistence.typed.scaladsl.EffectBuilder.thenReply akka.persistence.typed.scaladsl.Effect.persist[org.make.api.sessionhistory.SessionHistoryEvent[_], org.make.api.sessionhistory.State](SaveLastEventDate.apply(command.id, org.make.core.RequestContext.empty, SessionAction.apply[Option[java.time.ZonedDateTime]](org.make.core.DateHelper.now(), "saveLastEventDate", lastEventDate))).thenStop().thenReply[org.make.api.sessionhistory.SessionHistoryResponse.Envelope[org.make.api.sessionhistory.LogResult]](command.replyTo)(((x$5: org.make.api.sessionhistory.State) => org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.LogResult](Ack)))
191 13521 7258 - 7271 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.LogResult](Ack)
191 17106 7236 - 7251 Select org.make.api.sessionhistory.StopSessionActor.replyTo command.replyTo
207 15555 7844 - 7857 Select org.make.api.sessionhistory.Active.lastEventDate Active.this.lastEventDate
207 11968 7801 - 7858 Apply org.make.api.sessionhistory.State.retrieveOrExpireSession Active.this.retrieveOrExpireSession(command, settings, Active.this.lastEventDate)
208 10550 7963 - 7976 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Ack.type](Ack)
208 16474 7917 - 7977 Apply akka.persistence.typed.scaladsl.EffectBuilder.thenReply akka.persistence.typed.scaladsl.Effect.persist[org.make.api.sessionhistory.LoggableHistoryEvent[_$1], org.make.api.sessionhistory.State](event).thenReply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.LogResult]](replyTo)(((x$6: org.make.api.sessionhistory.State) => org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Ack.type](Ack)))
209 8968 8036 - 8081 Apply org.make.api.sessionhistory.Active.onRetrieveVoteValues Active.this.onRetrieveVoteValues(Active.this.sessionHistory, command)
209 12761 8057 - 8071 Select org.make.api.sessionhistory.Active.sessionHistory Active.this.sessionHistory
210 13535 8140 - 8189 Apply org.make.api.sessionhistory.Active.onRetrieveVotedProposals Active.this.onRetrieveVotedProposals(Active.this.sessionHistory, command)
210 17005 8165 - 8179 Select org.make.api.sessionhistory.Active.sessionHistory Active.this.sessionHistory
211 9781 8248 - 8313 ApplyToImplicitArgs org.make.api.sessionhistory.Active.transformSession Active.this.transformSession(Active.this.sessionHistory, command, userHistoryCoordinator)(context, timeout)
212 15755 8372 - 8423 Apply org.make.api.sessionhistory.State.acquireLockForVotesIfPossible Active.this.acquireLockForVotesIfPossible(command, lockHandler)
213 12365 8482 - 8541 Apply org.make.api.sessionhistory.State.acquireLockForQualificationIfPossible Active.this.acquireLockForQualificationIfPossible(command, lockHandler)
214 10454 8600 - 8641 Apply org.make.api.sessionhistory.State.releaseProposalLock Active.this.releaseProposalLock(command, lockHandler)
215 16486 8700 - 8749 Apply org.make.api.sessionhistory.State.releaseLockForQualification Active.this.releaseLockForQualification(command, lockHandler)
217 12775 8804 - 8820 TypeApply akka.persistence.typed.scaladsl.Effect.unhandled akka.persistence.typed.scaladsl.Effect.unhandled[Nothing, org.make.api.sessionhistory.State]
218 9193 8858 - 8874 TypeApply akka.persistence.typed.scaladsl.Effect.unhandled akka.persistence.typed.scaladsl.Effect.unhandled[Nothing, org.make.api.sessionhistory.State]
219 17016 8912 - 8928 TypeApply akka.persistence.typed.scaladsl.Effect.unhandled akka.persistence.typed.scaladsl.Effect.unhandled[Nothing, org.make.api.sessionhistory.State]
221 11947 9001 - 9048 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Active](Active.apply(Active.this.sessionHistory, Active.this.lastEventDate))
221 13436 9017 - 9031 Select org.make.api.sessionhistory.Active.sessionHistory Active.this.sessionHistory
221 10465 8979 - 9049 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.State], Nothing, org.make.api.sessionhistory.State](replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Active](Active.apply(Active.this.sessionHistory, Active.this.lastEventDate)))
221 9690 9033 - 9046 Select org.make.api.sessionhistory.Active.lastEventDate Active.this.lastEventDate
221 15773 9010 - 9047 Apply org.make.api.sessionhistory.Active.apply Active.apply(Active.this.sessionHistory, Active.this.lastEventDate)
222 12673 9088 - 9135 Apply org.make.api.sessionhistory.State.stopSessionHistoryActor Active.this.stopSessionHistoryActor(command, Active.this.lastEventDate)
222 16288 9121 - 9134 Select org.make.api.sessionhistory.Active.lastEventDate Active.this.lastEventDate
227 11964 9272 - 9442 Apply org.make.api.sessionhistory.Active.apply Active.apply(Active.this.sessionHistory.copy({ final <synthetic> <artifact> val rassoc$1: org.make.api.sessionhistory.SaveLastEventDate = event; Active.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$1) }.take(settings.maxUserHistoryEvents)), event.action.arguments)
228 13453 9318 - 9385 Apply scala.collection.immutable.List.take { final <synthetic> <artifact> val rassoc$1: org.make.api.sessionhistory.SaveLastEventDate = event; Active.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$1) }.take(settings.maxUserHistoryEvents)
228 14948 9355 - 9384 Select org.make.api.extensions.MakeSettings.maxUserHistoryEvents settings.maxUserHistoryEvents
228 9215 9324 - 9348 Apply scala.collection.immutable.List.:: Active.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$1)
228 9698 9288 - 9386 Apply org.make.api.sessionhistory.SessionHistory.copy Active.this.sessionHistory.copy({ final <synthetic> <artifact> val rassoc$1: org.make.api.sessionhistory.SaveLastEventDate = event; Active.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$1) }.take(settings.maxUserHistoryEvents))
229 15658 9412 - 9434 Select org.make.api.sessionhistory.SessionAction.arguments event.action.arguments
232 15674 9488 - 9695 Apply org.make.api.sessionhistory.Transforming.apply Transforming.apply(Active.this.sessionHistory.copy({ final <synthetic> <artifact> val rassoc$2: org.make.api.sessionhistory.SessionTransforming = event; Active.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$2) }.take(settings.maxUserHistoryEvents)), event.requestContext, scala.Some.apply[java.time.ZonedDateTime](event.action.date))
233 9458 9510 - 9608 Apply org.make.api.sessionhistory.SessionHistory.copy Active.this.sessionHistory.copy({ final <synthetic> <artifact> val rassoc$2: org.make.api.sessionhistory.SessionTransforming = event; Active.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$2) }.take(settings.maxUserHistoryEvents))
233 10185 9546 - 9570 Apply scala.collection.immutable.List.:: Active.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$2)
233 16183 9577 - 9606 Select org.make.api.extensions.MakeSettings.maxUserHistoryEvents settings.maxUserHistoryEvents
233 12684 9540 - 9607 Apply scala.collection.immutable.List.take { final <synthetic> <artifact> val rassoc$2: org.make.api.sessionhistory.SessionTransforming = event; Active.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$2) }.take(settings.maxUserHistoryEvents)
234 14969 9618 - 9638 Select org.make.api.sessionhistory.SessionTransforming.requestContext event.requestContext
235 13530 9669 - 9686 Select org.make.api.sessionhistory.SessionAction.date event.action.date
235 9606 9664 - 9687 Apply scala.Some.apply scala.Some.apply[java.time.ZonedDateTime](event.action.date)
237 16483 9730 - 9776 Apply org.make.api.sessionhistory.Expired.apply Expired.apply(event.action.arguments, Active.this.lastEventDate)
237 17941 9762 - 9775 Select org.make.api.sessionhistory.Active.lastEventDate Active.this.lastEventDate
237 12459 9738 - 9760 Select org.make.api.sessionhistory.SessionAction.arguments event.action.arguments
239 11873 9825 - 9996 Apply org.make.api.sessionhistory.Active.apply Active.apply(Active.this.sessionHistory.copy({ final <synthetic> <artifact> val rassoc$3: org.make.api.sessionhistory.SessionHistoryEvent[_$14] = event; Active.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$3) }.take(settings.maxUserHistoryEvents)), scala.Some.apply[java.time.ZonedDateTime](event.action.date))
240 12592 9877 - 9901 Apply scala.collection.immutable.List.:: Active.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$3)
240 13429 9841 - 9939 Apply org.make.api.sessionhistory.SessionHistory.copy Active.this.sessionHistory.copy({ final <synthetic> <artifact> val rassoc$3: org.make.api.sessionhistory.SessionHistoryEvent[_$14] = event; Active.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$3) }.take(settings.maxUserHistoryEvents))
240 8868 9908 - 9937 Select org.make.api.extensions.MakeSettings.maxUserHistoryEvents settings.maxUserHistoryEvents
240 14983 9871 - 9938 Apply scala.collection.immutable.List.take { final <synthetic> <artifact> val rassoc$3: org.make.api.sessionhistory.SessionHistoryEvent[_$14] = event; Active.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$3) }.take(settings.maxUserHistoryEvents)
241 9915 9970 - 9987 Select org.make.api.sessionhistory.SessionAction.date event.action.date
241 15935 9965 - 9988 Apply scala.Some.apply scala.Some.apply[java.time.ZonedDateTime](event.action.date)
249 16379 10200 - 10235 Apply org.make.api.sessionhistory.Active.actions Active.this.actions(state, command.proposalIds)
249 18303 10215 - 10234 Select org.make.api.sessionhistory.SessionVoteValuesCommand.proposalIds command.proposalIds
250 18207 10308 - 10609 Apply scala.collection.MapOps.map Active.this.voteByProposalId(voteRelatedActions).map[org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAndQualifications](((x0$1: (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)) => x0$1 match { case (_1: org.make.core.proposal.ProposalId, _2: org.make.core.history.HistoryActions.VoteAction): (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)((proposalId @ _), (voteAction @ _)) => scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](proposalId).->[org.make.core.history.HistoryActions.VoteAndQualifications](org.make.core.history.HistoryActions.VoteAndQualifications.apply(voteAction.key, Active.this.qualifications(voteRelatedActions).getOrElse[Map[org.make.core.proposal.QualificationKey,org.make.core.history.HistoryActions.VoteTrust]](proposalId, scala.Predef.Map.empty[org.make.core.proposal.QualificationKey, Nothing]), voteAction.date, voteAction.trust)) }))
252 15651 10412 - 10603 Apply org.make.core.history.HistoryActions.VoteAndQualifications.apply org.make.core.history.HistoryActions.VoteAndQualifications.apply(voteAction.key, Active.this.qualifications(voteRelatedActions).getOrElse[Map[org.make.core.proposal.QualificationKey,org.make.core.history.HistoryActions.VoteTrust]](proposalId, scala.Predef.Map.empty[org.make.core.proposal.QualificationKey, Nothing]), voteAction.date, voteAction.trust)
252 12232 10398 - 10603 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](proposalId).->[org.make.core.history.HistoryActions.VoteAndQualifications](org.make.core.history.HistoryActions.VoteAndQualifications.apply(voteAction.key, Active.this.qualifications(voteRelatedActions).getOrElse[Map[org.make.core.proposal.QualificationKey,org.make.core.history.HistoryActions.VoteTrust]](proposalId, scala.Predef.Map.empty[org.make.core.proposal.QualificationKey, Nothing]), voteAction.date, voteAction.trust))
253 12923 10445 - 10459 Select org.make.core.history.HistoryActions.VoteAction.key voteAction.key
254 14869 10471 - 10538 Apply scala.collection.MapOps.getOrElse Active.this.qualifications(voteRelatedActions).getOrElse[Map[org.make.core.proposal.QualificationKey,org.make.core.history.HistoryActions.VoteTrust]](proposalId, scala.Predef.Map.empty[org.make.core.proposal.QualificationKey, Nothing])
254 9064 10528 - 10537 TypeApply scala.collection.immutable.Map.empty scala.Predef.Map.empty[org.make.core.proposal.QualificationKey, Nothing]
255 13445 10550 - 10565 Select org.make.core.history.HistoryActions.VoteAction.date voteAction.date
256 9800 10577 - 10593 Select org.make.core.history.HistoryActions.VoteAction.trust voteAction.trust
259 9081 10614 - 10676 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]](voteAndQualifications))
259 12574 10644 - 10675 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]](voteAndQualifications)
259 16395 10627 - 10642 Select org.make.api.sessionhistory.SessionVoteValuesCommand.replyTo command.replyTo
264 14959 10855 - 10855 Apply org.make.api.sessionhistory.Active.$anonfun.<init> new $anonfun()
266 11643 10926 - 10938 Select org.make.core.history.HistoryActions.VoteRelatedAction.proposalId x$7.proposalId
269 17934 11005 - 11053 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](proposalId).->[org.make.core.history.HistoryActions.GenericVoteAction](voteActions.maxBy[String](((x$8: org.make.core.history.HistoryActions.GenericVoteAction) => x$8.date.toString()))(math.this.Ordering.String))
269 12101 11019 - 11053 ApplyToImplicitArgs scala.collection.IterableOnceOps.maxBy voteActions.maxBy[String](((x$8: org.make.core.history.HistoryActions.GenericVoteAction) => x$8.date.toString()))(math.this.Ordering.String)
269 15668 11036 - 11036 Select scala.math.Ordering.String math.this.Ordering.String
269 9815 11037 - 11052 Apply java.time.ZonedDateTime.toString x$8.date.toString()
271 12585 11077 - 11077 Apply org.make.api.sessionhistory.Active.$anonfun.<init> new $anonfun()
271 9097 10839 - 11136 Apply scala.collection.MapOps.collect actions.collect[org.make.core.history.HistoryActions.GenericVoteAction](({ @SerialVersionUID(value = 0) final <synthetic> class $anonfun extends scala.runtime.AbstractPartialFunction[org.make.core.history.HistoryActions.VoteRelatedAction,org.make.core.history.HistoryActions.GenericVoteAction] with java.io.Serializable { def <init>(): <$anon: org.make.core.history.HistoryActions.VoteRelatedAction => org.make.core.history.HistoryActions.GenericVoteAction> = { $anonfun.super.<init>(); () }; final override def applyOrElse[A1 <: org.make.core.history.HistoryActions.VoteRelatedAction, B1 >: org.make.core.history.HistoryActions.GenericVoteAction](x1: A1, default: A1 => B1): B1 = ((x1.asInstanceOf[org.make.core.history.HistoryActions.VoteRelatedAction]: org.make.core.history.HistoryActions.VoteRelatedAction): org.make.core.history.HistoryActions.VoteRelatedAction @unchecked) match { case (voteAction @ (_: org.make.core.history.HistoryActions.GenericVoteAction)) => voteAction case (defaultCase$ @ _) => default.apply(x1) }; final def isDefinedAt(x1: org.make.core.history.HistoryActions.VoteRelatedAction): Boolean = ((x1.asInstanceOf[org.make.core.history.HistoryActions.VoteRelatedAction]: org.make.core.history.HistoryActions.VoteRelatedAction): org.make.core.history.HistoryActions.VoteRelatedAction @unchecked) match { case (voteAction @ (_: org.make.core.history.HistoryActions.GenericVoteAction)) => true case (defaultCase$ @ _) => false } }; new $anonfun() }: PartialFunction[org.make.core.history.HistoryActions.VoteRelatedAction,org.make.core.history.HistoryActions.GenericVoteAction])).groupBy[org.make.core.proposal.ProposalId](((x$7: org.make.core.history.HistoryActions.GenericVoteAction) => x$7.proposalId)).map[org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction](((x0$1: (org.make.core.proposal.ProposalId, Seq[org.make.core.history.HistoryActions.GenericVoteAction])) => x0$1 match { case (_1: org.make.core.proposal.ProposalId, _2: Seq[org.make.core.history.HistoryActions.GenericVoteAction]): (org.make.core.proposal.ProposalId, Seq[org.make.core.history.HistoryActions.GenericVoteAction])((proposalId @ _), (voteActions @ _)) => scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](proposalId).->[org.make.core.history.HistoryActions.GenericVoteAction](voteActions.maxBy[String](((x$8: org.make.core.history.HistoryActions.GenericVoteAction) => x$8.date.toString()))(math.this.Ordering.String)) })).collect[org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction](({ @SerialVersionUID(value = 0) final <synthetic> class $anonfun extends scala.runtime.AbstractPartialFunction[(org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction),(org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)] with java.io.Serializable { def <init>(): <$anon: ((org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction)) => (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)> = { $anonfun.super.<init>(); () }; final override def applyOrElse[A1 <: (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction), B1 >: (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)](x2: A1, default: A1 => B1): B1 = ((x2.asInstanceOf[(org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction)]: (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction)): (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction) @unchecked) match { case (_1: org.make.core.proposal.ProposalId, _2: org.make.core.history.HistoryActions.GenericVoteAction): (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction)((k @ _), (value @ (_: org.make.core.history.HistoryActions.VoteAction))) => scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](k).->[org.make.core.history.HistoryActions.VoteAction](value) case (defaultCase$ @ _) => default.apply(x2) }; final def isDefinedAt(x2: (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction)): Boolean = ((x2.asInstanceOf[(org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction)]: (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction)): (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction) @unchecked) match { case (_1: org.make.core.proposal.ProposalId, _2: org.make.core.history.HistoryActions.GenericVoteAction): (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction)((k @ _), (value @ (_: org.make.core.history.HistoryActions.VoteAction))) => true case (defaultCase$ @ _) => false } }; new $anonfun() }: PartialFunction[(org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.GenericVoteAction),(org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)]))
272 16304 11118 - 11128 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](k).->[org.make.core.history.HistoryActions.VoteAction](value)
280 9486 11395 - 11395 TypeApply scala.Predef.$conforms scala.Predef.$conforms[java.time.ZonedDateTime]
280 15564 11395 - 11395 ApplyToImplicitArgs scala.math.LowPriorityOrderingImplicits.ordered math.this.Ordering.ordered[java.time.ZonedDateTime](scala.Predef.$conforms[java.time.ZonedDateTime])
280 15440 11362 - 11380 Apply org.make.api.sessionhistory.Active.voteActions Active.this.voteActions(state)
281 11388 11439 - 11466 Select org.make.core.history.HistoryActions.VoteAction.date votesAndQualifications.date
282 14372 11481 - 11481 Apply org.make.api.sessionhistory.Active.$anonfun.<init> new $anonfun()
283 11869 11541 - 11563 Apply scala.collection.SeqOps.contains x$9.contains[org.make.core.proposal.ProposalId](proposalId)
283 18409 11513 - 11564 Apply scala.Option.forall command.proposalsIds.forall(((x$9: Seq[org.make.core.proposal.ProposalId]) => x$9.contains[org.make.core.proposal.ProposalId](proposalId)))
284 12601 11591 - 11616 Select org.make.core.technical.Pagination.extractInt command.offset.extractInt
284 11859 11345 - 11671 Apply scala.collection.IterableOps.slice Active.this.voteByProposalId(Active.this.voteActions(state)).toSeq.sortBy[java.time.ZonedDateTime](((x0$1: (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)) => x0$1 match { case (_1: org.make.core.proposal.ProposalId, _2: org.make.core.history.HistoryActions.VoteAction): (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)(_, (votesAndQualifications @ _)) => votesAndQualifications.date }))(math.this.Ordering.ordered[java.time.ZonedDateTime](scala.Predef.$conforms[java.time.ZonedDateTime])).collect[org.make.core.proposal.ProposalId](({ @SerialVersionUID(value = 0) final <synthetic> class $anonfun extends scala.runtime.AbstractPartialFunction[(org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction),org.make.core.proposal.ProposalId] with java.io.Serializable { def <init>(): <$anon: ((org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)) => org.make.core.proposal.ProposalId> = { $anonfun.super.<init>(); () }; final override def applyOrElse[A1 <: (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction), B1 >: org.make.core.proposal.ProposalId](x1: A1, default: A1 => B1): B1 = ((x1.asInstanceOf[(org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)]: (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)): (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction) @unchecked) match { case (_1: org.make.core.proposal.ProposalId, _2: org.make.core.history.HistoryActions.VoteAction): (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)((proposalId @ _), _) if command.proposalsIds.forall(((x$9: Seq[org.make.core.proposal.ProposalId]) => x$9.contains[org.make.core.proposal.ProposalId](proposalId))) => proposalId case (defaultCase$ @ _) => default.apply(x1) }; final def isDefinedAt(x1: (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)): Boolean = ((x1.asInstanceOf[(org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)]: (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)): (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction) @unchecked) match { case (_1: org.make.core.proposal.ProposalId, _2: org.make.core.history.HistoryActions.VoteAction): (org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction)((proposalId @ _), _) if command.proposalsIds.forall(((x$9: Seq[org.make.core.proposal.ProposalId]) => x$9.contains[org.make.core.proposal.ProposalId](proposalId))) => true case (defaultCase$ @ _) => false } }; new $anonfun() }: PartialFunction[(org.make.core.proposal.ProposalId, org.make.core.history.HistoryActions.VoteAction),org.make.core.proposal.ProposalId])).slice(command.offset.extractInt, command.offset.extractInt.+(command.limit.extractInt))
284 8979 11646 - 11670 Select org.make.core.technical.Pagination.extractInt command.limit.extractInt
284 14864 11618 - 11670 Apply scala.Int.+ command.offset.extractInt.+(command.limit.extractInt)
286 12383 11677 - 11732 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,Seq[org.make.core.proposal.ProposalId]], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[Seq[org.make.core.proposal.ProposalId]](votedProposals))
286 15577 11707 - 11731 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[Seq[org.make.core.proposal.ProposalId]](votedProposals)
286 9793 11690 - 11705 Select org.make.api.sessionhistory.SessionVotedProposalsPaginateCommand.replyTo command.replyTo
297 17831 12015 - 12168 Apply grizzled.slf4j.Logger.info Active.this.logger.info(("Transforming session ".+(command.id).+(" to user ").+(command.userId.value).+(" with events ").+(state.events.map[String](((x$10: org.make.api.sessionhistory.SessionHistoryEvent[_]) => x$10.toString())).mkString(", ")): String))
301 14593 12238 - 12238 Apply org.make.api.sessionhistory.Active.$anonfun.<init> new $anonfun()
303 12795 12304 - 12326 Apply java.time.ZonedDateTime.toString x$11.action.date.toString()
303 8996 12303 - 12303 Select scala.math.Ordering.String math.this.Ordering.String
303 15363 12217 - 12327 ApplyToImplicitArgs scala.collection.SeqOps.sortBy state.events.collect[org.make.api.sessionhistory.LoggableHistoryEvent[_]](({ @SerialVersionUID(value = 0) final <synthetic> class $anonfun extends scala.runtime.AbstractPartialFunction[org.make.api.sessionhistory.SessionHistoryEvent[_],org.make.api.sessionhistory.LoggableHistoryEvent[_]] with java.io.Serializable { def <init>(): <$anon: org.make.api.sessionhistory.SessionHistoryEvent[_] => org.make.api.sessionhistory.LoggableHistoryEvent[_]> = { $anonfun.super.<init>(); () }; final override def applyOrElse[A1 <: org.make.api.sessionhistory.SessionHistoryEvent[_], B1 >: org.make.api.sessionhistory.LoggableHistoryEvent[_]](x1: A1, default: A1 => B1): B1 = ((x1.asInstanceOf[org.make.api.sessionhistory.SessionHistoryEvent[_]]: org.make.api.sessionhistory.SessionHistoryEvent[_]): org.make.api.sessionhistory.SessionHistoryEvent[_$1] @unchecked) match { case (event @ (_: org.make.api.sessionhistory.LoggableHistoryEvent[_])) => event case (defaultCase$ @ _) => default.apply(x1) }; final def isDefinedAt(x1: org.make.api.sessionhistory.SessionHistoryEvent[_]): Boolean = ((x1.asInstanceOf[org.make.api.sessionhistory.SessionHistoryEvent[_]]: org.make.api.sessionhistory.SessionHistoryEvent[_]): org.make.api.sessionhistory.SessionHistoryEvent[_$1] @unchecked) match { case (event @ (_: org.make.api.sessionhistory.LoggableHistoryEvent[_])) => true case (defaultCase$ @ _) => false } }; new $anonfun() }: PartialFunction[org.make.api.sessionhistory.SessionHistoryEvent[_],org.make.api.sessionhistory.LoggableHistoryEvent[_]])).sortBy[String](((x$11: org.make.api.sessionhistory.LoggableHistoryEvent[_]) => x$11.action.date.toString()))(math.this.Ordering.String)
306 8962 12359 - 12507 ApplyToImplicitArgs org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef.?? org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef[org.make.api.userhistory.UserHistoryCommand](userHistoryCoordinator).??[org.make.api.userhistory.UserHistoryResponse[org.make.api.userhistory.UserHistoryResponse.SessionEventsInjected.type]](((x$13: akka.actor.typed.ActorRef[org.make.api.userhistory.UserHistoryResponse[org.make.api.userhistory.UserHistoryResponse.SessionEventsInjected.type]]) => org.make.api.userhistory.InjectSessionEvents.apply(command.userId, events.map[org.make.api.userhistory.TransactionalUserHistoryEvent[_]](((x$12: org.make.api.sessionhistory.LoggableHistoryEvent[_]) => x$12.toUserHistoryEvent(command.userId))), x$13)))(scala.concurrent.ExecutionContext.Implicits.global, org.make.api.technical.ActorSystemHelper.contextToSystem(context), timeout)
306 18315 12386 - 12506 Apply org.make.api.userhistory.InjectSessionEvents.apply org.make.api.userhistory.InjectSessionEvents.apply(command.userId, events.map[org.make.api.userhistory.TransactionalUserHistoryEvent[_]](((x$12: org.make.api.sessionhistory.LoggableHistoryEvent[_]) => x$12.toUserHistoryEvent(command.userId))), x$13)
306 12812 12382 - 12382 ApplyToImplicitArgs org.make.api.technical.ActorSystemHelper.contextToSystem org.make.api.technical.ActorSystemHelper.contextToSystem(context)
306 14612 12382 - 12382 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
307 11276 12415 - 12429 Select org.make.api.sessionhistory.UserConnected.userId command.userId
308 9811 12471 - 12485 Select org.make.api.sessionhistory.UserConnected.userId command.userId
308 15791 12450 - 12486 Apply org.make.api.sessionhistory.LoggableHistoryEvent.toUserHistoryEvent x$12.toUserHistoryEvent(command.userId)
308 12393 12439 - 12487 Apply scala.collection.IterableOps.map events.map[org.make.api.userhistory.TransactionalUserHistoryEvent[_]](((x$12: org.make.api.sessionhistory.LoggableHistoryEvent[_]) => x$12.toUserHistoryEvent(command.userId)))
311 12700 12333 - 12724 Apply akka.actor.typed.scaladsl.ActorContext.pipeToSelf context.pipeToSelf[org.make.api.userhistory.UserHistoryResponse[org.make.api.userhistory.UserHistoryResponse.SessionEventsInjected.type]](org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef[org.make.api.userhistory.UserHistoryCommand](userHistoryCoordinator).??[org.make.api.userhistory.UserHistoryResponse[org.make.api.userhistory.UserHistoryResponse.SessionEventsInjected.type]](((x$13: akka.actor.typed.ActorRef[org.make.api.userhistory.UserHistoryResponse[org.make.api.userhistory.UserHistoryResponse.SessionEventsInjected.type]]) => org.make.api.userhistory.InjectSessionEvents.apply(command.userId, events.map[org.make.api.userhistory.TransactionalUserHistoryEvent[_]](((x$12: org.make.api.sessionhistory.LoggableHistoryEvent[_]) => x$12.toUserHistoryEvent(command.userId))), x$13)))(scala.concurrent.ExecutionContext.Implicits.global, org.make.api.technical.ActorSystemHelper.contextToSystem(context), timeout))(((x0$1: scala.util.Try[org.make.api.userhistory.UserHistoryResponse[org.make.api.userhistory.UserHistoryResponse.SessionEventsInjected.type]]) => x0$1 match { case (value: org.make.api.userhistory.UserHistoryResponse[org.make.api.userhistory.UserHistoryResponse.SessionEventsInjected.type]): scala.util.Success[org.make.api.userhistory.UserHistoryResponse[org.make.api.userhistory.UserHistoryResponse.SessionEventsInjected.type]](_) => SessionClosed.apply(command.id, command.userId, command.replyTo) case (exception: Throwable): scala.util.Failure[org.make.api.userhistory.UserHistoryResponse[org.make.api.userhistory.UserHistoryResponse.SessionEventsInjected.type]]((exception @ _)) => UserHistoryFailure.apply[org.make.api.sessionhistory.LogResult](command.id, Failed, exception, command.replyTo) }))
312 15374 12563 - 12573 Select org.make.api.sessionhistory.SessionHistoryCommand.id command.id
312 17553 12591 - 12606 Select org.make.api.sessionhistory.UserConnected.replyTo command.replyTo
312 11652 12575 - 12589 Select org.make.api.sessionhistory.UserConnected.userId command.userId
312 15814 12549 - 12607 Apply org.make.api.sessionhistory.SessionClosed.apply SessionClosed.apply(command.id, command.userId, command.replyTo)
313 14626 12641 - 12718 Apply org.make.api.sessionhistory.UserHistoryFailure.apply UserHistoryFailure.apply[org.make.api.sessionhistory.LogResult](command.id, Failed, exception, command.replyTo)
313 11979 12671 - 12681 Select org.make.api.sessionhistory.SessionHistoryCommand.id command.id
313 18329 12702 - 12717 Select org.make.api.sessionhistory.UserConnected.replyTo command.replyTo
324 8975 12730 - 12957 Apply akka.persistence.typed.scaladsl.EffectBuilder.thenNoReply akka.persistence.typed.scaladsl.Effect.persist[org.make.api.sessionhistory.SessionTransforming, org.make.api.sessionhistory.State](SessionTransforming.apply(command.id, command.requestContext, SessionAction.apply[org.make.core.user.UserId](org.make.core.DateHelper.now(), "transformingSession", command.userId))).thenNoReply()
328 12010 13068 - 14123 Apply scala.collection.immutable.List.flatMap state.events.flatMap[org.make.core.history.HistoryActions.VoteRelatedAction](((x0$1: org.make.api.sessionhistory.SessionHistoryEvent[_]) => x0$1 match { case (sessionId: org.make.core.session.SessionId, requestContext: org.make.core.RequestContext, action: org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionVote]): org.make.api.sessionhistory.LogSessionVoteEvent(_, _, (date: java.time.ZonedDateTime, actionType: String, arguments: org.make.api.sessionhistory.SessionVote): org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionVote]((date @ _), _, (proposalId: org.make.core.proposal.ProposalId, voteKey: org.make.core.proposal.VoteKey, trust: org.make.core.history.HistoryActions.VoteTrust): org.make.api.sessionhistory.SessionVote((proposalId @ _), (voteKey @ _), (trust @ _)))) if proposalIds.contains[org.make.core.proposal.ProposalId](proposalId) => scala.Some.apply[org.make.core.history.HistoryActions.VoteAction](org.make.core.history.HistoryActions.VoteAction.apply(proposalId, date, voteKey, trust)) case (sessionId: org.make.core.session.SessionId, requestContext: org.make.core.RequestContext, action: org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionUnvote]): org.make.api.sessionhistory.LogSessionUnvoteEvent(_, _, (date: java.time.ZonedDateTime, actionType: String, arguments: org.make.api.sessionhistory.SessionUnvote): org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionUnvote]((date @ _), _, (proposalId: org.make.core.proposal.ProposalId, voteKey: org.make.core.proposal.VoteKey, trust: org.make.core.history.HistoryActions.VoteTrust): org.make.api.sessionhistory.SessionUnvote((proposalId @ _), (voteKey @ _), (trust @ _)))) if proposalIds.contains[org.make.core.proposal.ProposalId](proposalId) => scala.Some.apply[org.make.core.history.HistoryActions.UnvoteAction](org.make.core.history.HistoryActions.UnvoteAction.apply(proposalId, date, voteKey, trust)) case (sessionId: org.make.core.session.SessionId, requestContext: org.make.core.RequestContext, action: org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionQualification]): org.make.api.sessionhistory.LogSessionQualificationEvent(_, _, (date: java.time.ZonedDateTime, actionType: String, arguments: org.make.api.sessionhistory.SessionQualification): org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionQualification]((date @ _), _, (proposalId: org.make.core.proposal.ProposalId, qualificationKey: org.make.core.proposal.QualificationKey, trust: org.make.core.history.HistoryActions.VoteTrust): org.make.api.sessionhistory.SessionQualification((proposalId @ _), (qualificationKey @ _), (trust @ _)))) if proposalIds.contains[org.make.core.proposal.ProposalId](proposalId) => scala.Some.apply[org.make.core.history.HistoryActions.QualificationAction](org.make.core.history.HistoryActions.QualificationAction.apply(proposalId, date, qualificationKey, trust)) case (sessionId: org.make.core.session.SessionId, requestContext: org.make.core.RequestContext, action: org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionUnqualification]): org.make.api.sessionhistory.LogSessionUnqualificationEvent(_, _, (date: java.time.ZonedDateTime, actionType: String, arguments: org.make.api.sessionhistory.SessionUnqualification): org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionUnqualification]((date @ _), _, (proposalId: org.make.core.proposal.ProposalId, qualificationKey: org.make.core.proposal.QualificationKey, trust: org.make.core.history.HistoryActions.VoteTrust): org.make.api.sessionhistory.SessionUnqualification((proposalId @ _), (qualificationKey @ _), (trust @ _)))) if proposalIds.contains[org.make.core.proposal.ProposalId](proposalId) => scala.Some.apply[org.make.core.history.HistoryActions.UnqualificationAction](org.make.core.history.HistoryActions.UnqualificationAction.apply(proposalId, date, qualificationKey, trust)) case _ => scala.None }))
330 14984 13206 - 13238 Apply scala.collection.SeqOps.contains proposalIds.contains[org.make.core.proposal.ProposalId](proposalId)
331 17568 13250 - 13300 Apply scala.Some.apply scala.Some.apply[org.make.core.history.HistoryActions.VoteAction](org.make.core.history.HistoryActions.VoteAction.apply(proposalId, date, voteKey, trust))
331 11559 13255 - 13299 Apply org.make.core.history.HistoryActions.VoteAction.apply org.make.core.history.HistoryActions.VoteAction.apply(proposalId, date, voteKey, trust)
333 15463 13420 - 13452 Apply scala.collection.SeqOps.contains proposalIds.contains[org.make.core.proposal.ProposalId](proposalId)
334 17822 13464 - 13516 Apply scala.Some.apply scala.Some.apply[org.make.core.history.HistoryActions.UnvoteAction](org.make.core.history.HistoryActions.UnvoteAction.apply(proposalId, date, voteKey, trust))
334 11993 13469 - 13515 Apply org.make.core.history.HistoryActions.UnvoteAction.apply org.make.core.history.HistoryActions.UnvoteAction.apply(proposalId, date, voteKey, trust)
339 14522 13691 - 13723 Apply scala.collection.SeqOps.contains proposalIds.contains[org.make.core.proposal.ProposalId](proposalId)
340 8878 13735 - 13803 Apply scala.Some.apply scala.Some.apply[org.make.core.history.HistoryActions.QualificationAction](org.make.core.history.HistoryActions.QualificationAction.apply(proposalId, date, qualificationKey, trust))
340 12717 13740 - 13802 Apply org.make.core.history.HistoryActions.QualificationAction.apply org.make.core.history.HistoryActions.QualificationAction.apply(proposalId, date, qualificationKey, trust)
345 15004 13982 - 14014 Apply scala.collection.SeqOps.contains proposalIds.contains[org.make.core.proposal.ProposalId](proposalId)
346 11268 14031 - 14095 Apply org.make.core.history.HistoryActions.UnqualificationAction.apply org.make.core.history.HistoryActions.UnqualificationAction.apply(proposalId, date, qualificationKey, trust)
346 17462 14026 - 14096 Apply scala.Some.apply scala.Some.apply[org.make.core.history.HistoryActions.UnqualificationAction](org.make.core.history.HistoryActions.UnqualificationAction.apply(proposalId, date, qualificationKey, trust))
347 15473 14113 - 14117 Select scala.None scala.None
352 18311 14326 - 14326 Apply org.make.api.sessionhistory.Active.$anonfun.<init> new $anonfun()
355 10679 14489 - 14512 Select org.make.core.history.HistoryActions.GenericQualificationAction.key qualificationAction.key
355 14266 14455 - 14485 Select org.make.core.history.HistoryActions.VoteRelatedAction.proposalId qualificationAction.proposalId
355 8891 14455 - 14512 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](qualificationAction.proposalId).->[org.make.core.proposal.QualificationKey](qualificationAction.key)
357 15966 14571 - 14625 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[(org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey)](groupKey).->[org.make.core.history.HistoryActions.GenericQualificationAction](qualificationAction.maxBy[String](((x$14: org.make.core.history.HistoryActions.GenericQualificationAction) => x$14.date.toString()))(math.this.Ordering.String))
357 15368 14609 - 14624 Apply java.time.ZonedDateTime.toString x$14.date.toString()
357 11752 14608 - 14608 Select scala.math.Ordering.String math.this.Ordering.String
357 17229 14583 - 14625 ApplyToImplicitArgs scala.collection.IterableOnceOps.maxBy qualificationAction.maxBy[String](((x$14: org.make.core.history.HistoryActions.GenericQualificationAction) => x$14.date.toString()))(math.this.Ordering.String)
358 18323 14640 - 14640 Apply org.make.api.sessionhistory.Active.$anonfun.<init> new $anonfun()
359 11904 14684 - 14690 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[(org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey)](k).->[org.make.core.history.HistoryActions.QualificationAction](v)
361 8905 14752 - 14787 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](proposalId).->[(org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)](scala.Predef.ArrowAssoc[org.make.core.proposal.QualificationKey](key).->[org.make.core.history.HistoryActions.VoteTrust](action.trust))
361 10992 14767 - 14786 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.proposal.QualificationKey](key).->[org.make.core.history.HistoryActions.VoteTrust](action.trust)
361 14739 14774 - 14786 Select org.make.core.history.HistoryActions.QualificationAction.trust action.trust
364 14013 14310 - 15001 Apply scala.collection.MapOps.map actions.collect[org.make.core.history.HistoryActions.GenericQualificationAction](({ @SerialVersionUID(value = 0) final <synthetic> class $anonfun extends scala.runtime.AbstractPartialFunction[org.make.core.history.HistoryActions.VoteRelatedAction,org.make.core.history.HistoryActions.GenericQualificationAction] with java.io.Serializable { def <init>(): <$anon: org.make.core.history.HistoryActions.VoteRelatedAction => org.make.core.history.HistoryActions.GenericQualificationAction> = { $anonfun.super.<init>(); () }; final override def applyOrElse[A1 <: org.make.core.history.HistoryActions.VoteRelatedAction, B1 >: org.make.core.history.HistoryActions.GenericQualificationAction](x1: A1, default: A1 => B1): B1 = ((x1.asInstanceOf[org.make.core.history.HistoryActions.VoteRelatedAction]: org.make.core.history.HistoryActions.VoteRelatedAction): org.make.core.history.HistoryActions.VoteRelatedAction @unchecked) match { case (qualificationAction @ (_: org.make.core.history.HistoryActions.GenericQualificationAction)) => qualificationAction case (defaultCase$ @ _) => default.apply(x1) }; final def isDefinedAt(x1: org.make.core.history.HistoryActions.VoteRelatedAction): Boolean = ((x1.asInstanceOf[org.make.core.history.HistoryActions.VoteRelatedAction]: org.make.core.history.HistoryActions.VoteRelatedAction): org.make.core.history.HistoryActions.VoteRelatedAction @unchecked) match { case (qualificationAction @ (_: org.make.core.history.HistoryActions.GenericQualificationAction)) => true case (defaultCase$ @ _) => false } }; new $anonfun() }: PartialFunction[org.make.core.history.HistoryActions.VoteRelatedAction,org.make.core.history.HistoryActions.GenericQualificationAction])).groupBy[(org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey)](((qualificationAction: org.make.core.history.HistoryActions.GenericQualificationAction) => scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](qualificationAction.proposalId).->[org.make.core.proposal.QualificationKey](qualificationAction.key))).map[(org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction](((x0$1: ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), Seq[org.make.core.history.HistoryActions.GenericQualificationAction])) => x0$1 match { case (_1: (org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), _2: Seq[org.make.core.history.HistoryActions.GenericQualificationAction]): ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), Seq[org.make.core.history.HistoryActions.GenericQualificationAction])((groupKey @ _), (qualificationAction @ _)) => scala.Predef.ArrowAssoc[(org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey)](groupKey).->[org.make.core.history.HistoryActions.GenericQualificationAction](qualificationAction.maxBy[String](((x$14: org.make.core.history.HistoryActions.GenericQualificationAction) => x$14.date.toString()))(math.this.Ordering.String)) })).collect[(org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.QualificationAction](({ @SerialVersionUID(value = 0) final <synthetic> class $anonfun extends scala.runtime.AbstractPartialFunction[((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction),((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.QualificationAction)] with java.io.Serializable { def <init>(): <$anon: (((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction)) => ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.QualificationAction)> = { $anonfun.super.<init>(); () }; final override def applyOrElse[A1 <: ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction), B1 >: ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.QualificationAction)](x2: A1, default: A1 => B1): B1 = ((x2.asInstanceOf[((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction)]: ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction)): ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction) @unchecked) match { case (_1: (org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), _2: org.make.core.history.HistoryActions.GenericQualificationAction): ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction)((k @ _), (v @ (_: org.make.core.history.HistoryActions.QualificationAction))) => scala.Predef.ArrowAssoc[(org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey)](k).->[org.make.core.history.HistoryActions.QualificationAction](v) case (defaultCase$ @ _) => default.apply(x2) }; final def isDefinedAt(x2: ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction)): Boolean = ((x2.asInstanceOf[((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction)]: ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction)): ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction) @unchecked) match { case (_1: (org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), _2: org.make.core.history.HistoryActions.GenericQualificationAction): ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction)((k @ _), (v @ (_: org.make.core.history.HistoryActions.QualificationAction))) => true case (defaultCase$ @ _) => false } }; new $anonfun() }: PartialFunction[((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.GenericQualificationAction),((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.QualificationAction)])).toList.map[(org.make.core.proposal.ProposalId, (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust))](((x0$2: ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.QualificationAction)) => x0$2 match { case (_1: (org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), _2: org.make.core.history.HistoryActions.QualificationAction): ((org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey), org.make.core.history.HistoryActions.QualificationAction)((_1: org.make.core.proposal.ProposalId, _2: org.make.core.proposal.QualificationKey): (org.make.core.proposal.ProposalId, org.make.core.proposal.QualificationKey)((proposalId @ _), (key @ _)), (action @ _)) => scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](proposalId).->[(org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)](scala.Predef.ArrowAssoc[org.make.core.proposal.QualificationKey](key).->[org.make.core.history.HistoryActions.VoteTrust](action.trust)) })).groupBy[org.make.core.proposal.ProposalId](((x0$3: (org.make.core.proposal.ProposalId, (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust))) => x0$3 match { case (_1: org.make.core.proposal.ProposalId, _2: (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)): (org.make.core.proposal.ProposalId, (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust))((proposalId @ _), _) => proposalId })).map[org.make.core.proposal.ProposalId, Map[org.make.core.proposal.QualificationKey,org.make.core.history.HistoryActions.VoteTrust]](((x0$4: (org.make.core.proposal.ProposalId, List[(org.make.core.proposal.ProposalId, (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust))])) => x0$4 match { case (_1: org.make.core.proposal.ProposalId, _2: List[(org.make.core.proposal.ProposalId, (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust))]): (org.make.core.proposal.ProposalId, List[(org.make.core.proposal.ProposalId, (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust))])((proposalId @ _), (qualificationList @ _)) => scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](proposalId).->[scala.collection.immutable.Map[org.make.core.proposal.QualificationKey,org.make.core.history.HistoryActions.VoteTrust]](qualificationList.map[(org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)](((x0$5: (org.make.core.proposal.ProposalId, (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust))) => x0$5 match { case (_1: org.make.core.proposal.ProposalId, _2: (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)): (org.make.core.proposal.ProposalId, (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust))(_, (key @ _)) => key })).toMap[org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust](scala.this.<:<.refl[(org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)])) }))
366 17436 14911 - 14995 Apply scala.Predef.ArrowAssoc.-> scala.Predef.ArrowAssoc[org.make.core.proposal.ProposalId](proposalId).->[scala.collection.immutable.Map[org.make.core.proposal.QualificationKey,org.make.core.history.HistoryActions.VoteTrust]](qualificationList.map[(org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)](((x0$5: (org.make.core.proposal.ProposalId, (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust))) => x0$5 match { case (_1: org.make.core.proposal.ProposalId, _2: (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)): (org.make.core.proposal.ProposalId, (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust))(_, (key @ _)) => key })).toMap[org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust](scala.this.<:<.refl[(org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)]))
368 15278 14990 - 14990 TypeApply scala.<:<.refl scala.this.<:<.refl[(org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)]
368 11769 14925 - 14995 ApplyToImplicitArgs scala.collection.IterableOnceOps.toMap qualificationList.map[(org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)](((x0$5: (org.make.core.proposal.ProposalId, (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust))) => x0$5 match { case (_1: org.make.core.proposal.ProposalId, _2: (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)): (org.make.core.proposal.ProposalId, (org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust))(_, (key @ _)) => key })).toMap[org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust](scala.this.<:<.refl[(org.make.core.proposal.QualificationKey, org.make.core.history.HistoryActions.VoteTrust)])
372 11882 15082 - 15937 Apply scala.collection.immutable.List.flatMap state.events.flatMap[org.make.core.history.HistoryActions.VoteRelatedAction](((x0$1: org.make.api.sessionhistory.SessionHistoryEvent[_]) => x0$1 match { case (sessionId: org.make.core.session.SessionId, requestContext: org.make.core.RequestContext, action: org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionVote]): org.make.api.sessionhistory.LogSessionVoteEvent(_, _, (date: java.time.ZonedDateTime, actionType: String, arguments: org.make.api.sessionhistory.SessionVote): org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionVote]((date @ _), _, (proposalId: org.make.core.proposal.ProposalId, voteKey: org.make.core.proposal.VoteKey, trust: org.make.core.history.HistoryActions.VoteTrust): org.make.api.sessionhistory.SessionVote((proposalId @ _), (voteKey @ _), (trust @ _)))) => scala.Some.apply[org.make.core.history.HistoryActions.VoteAction](org.make.core.history.HistoryActions.VoteAction.apply(proposalId, date, voteKey, trust)) case (sessionId: org.make.core.session.SessionId, requestContext: org.make.core.RequestContext, action: org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionUnvote]): org.make.api.sessionhistory.LogSessionUnvoteEvent(_, _, (date: java.time.ZonedDateTime, actionType: String, arguments: org.make.api.sessionhistory.SessionUnvote): org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionUnvote]((date @ _), _, (proposalId: org.make.core.proposal.ProposalId, voteKey: org.make.core.proposal.VoteKey, trust: org.make.core.history.HistoryActions.VoteTrust): org.make.api.sessionhistory.SessionUnvote((proposalId @ _), (voteKey @ _), (trust @ _)))) => scala.Some.apply[org.make.core.history.HistoryActions.UnvoteAction](org.make.core.history.HistoryActions.UnvoteAction.apply(proposalId, date, voteKey, trust)) case (sessionId: org.make.core.session.SessionId, requestContext: org.make.core.RequestContext, action: org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionQualification]): org.make.api.sessionhistory.LogSessionQualificationEvent(_, _, (date: java.time.ZonedDateTime, actionType: String, arguments: org.make.api.sessionhistory.SessionQualification): org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionQualification]((date @ _), _, (proposalId: org.make.core.proposal.ProposalId, qualificationKey: org.make.core.proposal.QualificationKey, trust: org.make.core.history.HistoryActions.VoteTrust): org.make.api.sessionhistory.SessionQualification((proposalId @ _), (qualificationKey @ _), (trust @ _)))) => scala.Some.apply[org.make.core.history.HistoryActions.QualificationAction](org.make.core.history.HistoryActions.QualificationAction.apply(proposalId, date, qualificationKey, trust)) case (sessionId: org.make.core.session.SessionId, requestContext: org.make.core.RequestContext, action: org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionUnqualification]): org.make.api.sessionhistory.LogSessionUnqualificationEvent(_, _, (date: java.time.ZonedDateTime, actionType: String, arguments: org.make.api.sessionhistory.SessionUnqualification): org.make.api.sessionhistory.SessionAction[org.make.api.sessionhistory.SessionUnqualification]((date @ _), _, (proposalId: org.make.core.proposal.ProposalId, qualificationKey: org.make.core.proposal.QualificationKey, trust: org.make.core.history.HistoryActions.VoteTrust): org.make.api.sessionhistory.SessionUnqualification((proposalId @ _), (qualificationKey @ _), (trust @ _)))) => scala.Some.apply[org.make.core.history.HistoryActions.UnqualificationAction](org.make.core.history.HistoryActions.UnqualificationAction.apply(proposalId, date, qualificationKey, trust)) case _ => scala.None }))
374 18236 15214 - 15264 Apply scala.Some.apply scala.Some.apply[org.make.core.history.HistoryActions.VoteAction](org.make.core.history.HistoryActions.VoteAction.apply(proposalId, date, voteKey, trust))
374 11921 15219 - 15263 Apply org.make.core.history.HistoryActions.VoteAction.apply org.make.core.history.HistoryActions.VoteAction.apply(proposalId, date, voteKey, trust)
376 10874 15378 - 15430 Apply scala.Some.apply scala.Some.apply[org.make.core.history.HistoryActions.UnvoteAction](org.make.core.history.HistoryActions.UnvoteAction.apply(proposalId, date, voteKey, trust))
376 14759 15383 - 15429 Apply org.make.core.history.HistoryActions.UnvoteAction.apply org.make.core.history.HistoryActions.UnvoteAction.apply(proposalId, date, voteKey, trust)
382 9118 15606 - 15668 Apply org.make.core.history.HistoryActions.QualificationAction.apply org.make.core.history.HistoryActions.QualificationAction.apply(proposalId, date, qualificationKey, trust)
382 15290 15601 - 15669 Apply scala.Some.apply scala.Some.apply[org.make.core.history.HistoryActions.QualificationAction](org.make.core.history.HistoryActions.QualificationAction.apply(proposalId, date, qualificationKey, trust))
388 17455 15844 - 15914 Apply scala.Some.apply scala.Some.apply[org.make.core.history.HistoryActions.UnqualificationAction](org.make.core.history.HistoryActions.UnqualificationAction.apply(proposalId, date, qualificationKey, trust))
388 11669 15849 - 15913 Apply org.make.core.history.HistoryActions.UnqualificationAction.apply org.make.core.history.HistoryActions.UnqualificationAction.apply(proposalId, date, qualificationKey, trust)
389 14029 15929 - 15933 Select scala.None scala.None
394 9141 16068 - 16068 ApplyToImplicitArgs spray.json.StandardFormats.optionFormat org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest spray.json.DefaultJsonProtocol.optionFormat[java.time.ZonedDateTime](Active.this.zonedDateTimeFormatter)
394 14422 16068 - 16068 Select org.make.api.sessionhistory.SessionHistory.persister org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest sessionhistory.this.SessionHistory.persister
394 10890 16068 - 16068 Select org.make.core.SprayJsonFormatters.zonedDateTimeFormatter org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest Active.this.zonedDateTimeFormatter
394 14879 16037 - 16082 ApplyToImplicitArgs spray.json.ProductFormatsInstances.jsonFormat2 org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest spray.json.DefaultJsonProtocol.jsonFormat2[org.make.api.sessionhistory.SessionHistory, Option[java.time.ZonedDateTime], org.make.api.sessionhistory.Active](((sessionHistory: org.make.api.sessionhistory.SessionHistory, lastEventDate: Option[java.time.ZonedDateTime]) => Active.apply(sessionHistory, lastEventDate)))(sessionhistory.this.SessionHistory.persister, spray.json.DefaultJsonProtocol.optionFormat[java.time.ZonedDateTime](Active.this.zonedDateTimeFormatter), (ClassTag.apply[org.make.api.sessionhistory.Active](classOf[org.make.api.sessionhistory.Active]): scala.reflect.ClassTag[org.make.api.sessionhistory.Active]))
394 18252 16069 - 16081 Apply org.make.api.sessionhistory.Active.apply org.scalatest.testsuite Active.apply(sessionHistory, lastEventDate)
411 11682 16627 - 16641 Apply akka.persistence.typed.scaladsl.Effect.stash akka.persistence.typed.scaladsl.Effect.stash[Nothing, org.make.api.sessionhistory.State]()
412 17469 16695 - 16746 Apply org.make.api.sessionhistory.State.acquireLockForVotesIfPossible Transforming.this.acquireLockForVotesIfPossible(command, lockHandler)
413 13909 16800 - 16859 Apply org.make.api.sessionhistory.State.acquireLockForQualificationIfPossible Transforming.this.acquireLockForQualificationIfPossible(command, lockHandler)
414 11898 16913 - 16954 Apply org.make.api.sessionhistory.State.releaseProposalLock Transforming.this.releaseProposalLock(command, lockHandler)
415 17846 17008 - 17057 Apply org.make.api.sessionhistory.State.releaseLockForQualification Transforming.this.releaseLockForQualification(command, lockHandler)
417 14435 17117 - 17170 ApplyToImplicitArgs org.make.api.sessionhistory.Transforming.onSessionClosed Transforming.this.onSessionClosed(command, Transforming.this.requestContext, idGenerator)(context)
418 10905 17214 - 17243 Apply org.make.api.sessionhistory.State.onUserHistoryFailure Transforming.this.onUserHistoryFailure[_](command)
420 16648 17313 - 17327 Apply akka.persistence.typed.scaladsl.Effect.stash akka.persistence.typed.scaladsl.Effect.stash[Nothing, org.make.api.sessionhistory.State]()
421 14896 17380 - 17394 Apply akka.persistence.typed.scaladsl.Effect.stash akka.persistence.typed.scaladsl.Effect.stash[Nothing, org.make.api.sessionhistory.State]()
422 11653 17447 - 17461 Apply akka.persistence.typed.scaladsl.Effect.stash akka.persistence.typed.scaladsl.Effect.stash[Nothing, org.make.api.sessionhistory.State]()
423 17375 17514 - 17530 TypeApply akka.persistence.typed.scaladsl.Effect.unhandled akka.persistence.typed.scaladsl.Effect.unhandled[Nothing, org.make.api.sessionhistory.State]
424 13921 17583 - 17599 TypeApply akka.persistence.typed.scaladsl.Effect.unhandled akka.persistence.typed.scaladsl.Effect.unhandled[Nothing, org.make.api.sessionhistory.State]
427 17862 17711 - 17725 Select org.make.api.sessionhistory.Transforming.requestContext Transforming.this.requestContext
427 14751 17727 - 17740 Select org.make.api.sessionhistory.Transforming.lastEventDate Transforming.this.lastEventDate
427 10803 17682 - 17741 Apply org.make.api.sessionhistory.Transforming.apply Transforming.apply(Transforming.this.sessionHistory, Transforming.this.requestContext, Transforming.this.lastEventDate)
427 12403 17695 - 17709 Select org.make.api.sessionhistory.Transforming.sessionHistory Transforming.this.sessionHistory
427 15384 17651 - 17743 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.State], Nothing, org.make.api.sessionhistory.State](replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Transforming](Transforming.apply(Transforming.this.sessionHistory, Transforming.this.requestContext, Transforming.this.lastEventDate)))
427 16664 17673 - 17742 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Transforming](Transforming.apply(Transforming.this.sessionHistory, Transforming.this.requestContext, Transforming.this.lastEventDate))
428 17713 17782 - 17829 Apply org.make.api.sessionhistory.State.stopSessionHistoryActor Transforming.this.stopSessionHistoryActor(command, Transforming.this.lastEventDate)
428 11663 17815 - 17828 Select org.make.api.sessionhistory.Transforming.lastEventDate Transforming.this.lastEventDate
433 14190 17980 - 18008 Select org.make.api.sessionhistory.SessionAction.arguments transformed.action.arguments
433 14638 17973 - 18056 Apply org.make.api.sessionhistory.Closed.apply Closed.apply(transformed.action.arguments, scala.Some.apply[java.time.ZonedDateTime](transformed.action.date))
433 18244 18026 - 18055 Apply scala.Some.apply scala.Some.apply[java.time.ZonedDateTime](transformed.action.date)
433 12414 18031 - 18054 Select org.make.api.sessionhistory.SessionAction.date transformed.action.date
435 10596 18100 - 18300 Apply org.make.api.sessionhistory.Transforming.apply Transforming.apply(Transforming.this.sessionHistory.copy({ final <synthetic> <artifact> val rassoc$4: org.make.api.sessionhistory.SaveLastEventDate = event; Transforming.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$4) }.take(settings.maxUserHistoryEvents)), Transforming.this.requestContext, event.action.arguments)
436 15400 18152 - 18219 Apply scala.collection.immutable.List.take { final <synthetic> <artifact> val rassoc$4: org.make.api.sessionhistory.SaveLastEventDate = event; Transforming.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$4) }.take(settings.maxUserHistoryEvents)
436 11676 18122 - 18220 Apply org.make.api.sessionhistory.SessionHistory.copy Transforming.this.sessionHistory.copy({ final <synthetic> <artifact> val rassoc$4: org.make.api.sessionhistory.SaveLastEventDate = event; Transforming.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$4) }.take(settings.maxUserHistoryEvents))
436 17157 18189 - 18218 Select org.make.api.extensions.MakeSettings.maxUserHistoryEvents settings.maxUserHistoryEvents
436 11164 18158 - 18182 Apply scala.collection.immutable.List.:: Transforming.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$4)
437 17580 18230 - 18244 Select org.make.api.sessionhistory.Transforming.requestContext Transforming.this.requestContext
438 13901 18270 - 18292 Select org.make.api.sessionhistory.SessionAction.arguments event.action.arguments
441 13791 18349 - 18550 Apply org.make.api.sessionhistory.Transforming.apply Transforming.apply(Transforming.this.sessionHistory.copy({ final <synthetic> <artifact> val rassoc$5: org.make.api.sessionhistory.SessionHistoryEvent[_$20] = event; Transforming.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$5) }.take(settings.maxUserHistoryEvents)), Transforming.this.requestContext, scala.Some.apply[java.time.ZonedDateTime](event.action.date))
442 10789 18401 - 18468 Apply scala.collection.immutable.List.take { final <synthetic> <artifact> val rassoc$5: org.make.api.sessionhistory.SessionHistoryEvent[_$20] = event; Transforming.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$5) }.take(settings.maxUserHistoryEvents)
442 18145 18407 - 18431 Apply scala.collection.immutable.List.:: Transforming.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$5)
442 16895 18371 - 18469 Apply org.make.api.sessionhistory.SessionHistory.copy Transforming.this.sessionHistory.copy({ final <synthetic> <artifact> val rassoc$5: org.make.api.sessionhistory.SessionHistoryEvent[_$20] = event; Transforming.this.sessionHistory.events.::[org.make.api.sessionhistory.SessionHistoryEvent[_]](rassoc$5) }.take(settings.maxUserHistoryEvents))
442 14651 18438 - 18467 Select org.make.api.extensions.MakeSettings.maxUserHistoryEvents settings.maxUserHistoryEvents
443 15417 18479 - 18493 Select org.make.api.sessionhistory.Transforming.requestContext Transforming.this.requestContext
444 11584 18524 - 18541 Select org.make.api.sessionhistory.SessionAction.date event.action.date
444 17598 18519 - 18542 Apply scala.Some.apply scala.Some.apply[java.time.ZonedDateTime](event.action.date)
471 10347 18775 - 19500 Apply akka.persistence.typed.scaladsl.ReplyEffect.thenUnstashAll akka.persistence.typed.scaladsl.Effect.persist[org.make.api.sessionhistory.SessionTransformed, org.make.api.sessionhistory.State](SessionTransformed.apply(command.id, org.make.core.RequestContext.empty, SessionAction.apply[org.make.core.user.UserId](org.make.core.DateHelper.now(), "transformSession", command.userId))).thenRun(((x$15: org.make.api.sessionhistory.State) => typed.this.ActorRef.ActorRefOps[akka.actor.typed.eventstream.EventStream.Command](context.system.eventStream).!(akka.actor.typed.eventstream.EventStream.Publish.apply[org.make.api.userhistory.UserConnectedEvent]({ <artifact> val x$1: Some[org.make.core.user.UserId] @scala.reflect.internal.annotations.uncheckedBounds = scala.Some.apply[org.make.core.user.UserId](command.userId); <artifact> val x$2: java.time.ZonedDateTime = org.make.core.DateHelper.now(); <artifact> val x$3: org.make.core.user.UserId = command.userId; <artifact> val x$4: org.make.core.RequestContext = requestContext; <artifact> val x$5: Some[org.make.core.EventId] @scala.reflect.internal.annotations.uncheckedBounds = scala.Some.apply[org.make.core.EventId](idGenerator.nextEventId()); <artifact> val x$6: org.make.core.reference.Country = org.make.api.userhistory.UserConnectedEvent.apply$default$4; org.make.api.userhistory.UserConnectedEvent.apply(x$1, x$2, x$3, x$6, x$4, x$5) })))).thenReply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.LogResult]](command.replyTo)(((x$16: org.make.api.sessionhistory.State) => org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Ack.type](Ack))).thenUnstashAll()
476 11597 19616 - 19667 ApplyToImplicitArgs spray.json.ProductFormatsInstances.jsonFormat3 org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest spray.json.DefaultJsonProtocol.jsonFormat3[org.make.api.sessionhistory.SessionHistory, org.make.core.RequestContext, Option[java.time.ZonedDateTime], org.make.api.sessionhistory.Transforming](((sessionHistory: org.make.api.sessionhistory.SessionHistory, requestContext: org.make.core.RequestContext, lastEventDate: Option[java.time.ZonedDateTime]) => Transforming.apply(sessionHistory, requestContext, lastEventDate)))(sessionhistory.this.SessionHistory.persister, core.this.RequestContext.requestContextFormatter, spray.json.DefaultJsonProtocol.optionFormat[java.time.ZonedDateTime](Transforming.this.zonedDateTimeFormatter), (ClassTag.apply[org.make.api.sessionhistory.Transforming](classOf[org.make.api.sessionhistory.Transforming]): scala.reflect.ClassTag[org.make.api.sessionhistory.Transforming]))
476 16772 19647 - 19647 Select org.make.core.SprayJsonFormatters.zonedDateTimeFormatter org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest Transforming.this.zonedDateTimeFormatter
476 10797 19647 - 19647 Select org.make.core.RequestContext.requestContextFormatter org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest core.this.RequestContext.requestContextFormatter
476 13081 19647 - 19647 ApplyToImplicitArgs spray.json.StandardFormats.optionFormat org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest spray.json.DefaultJsonProtocol.optionFormat[java.time.ZonedDateTime](Transforming.this.zonedDateTimeFormatter)
476 18159 19648 - 19666 Apply org.make.api.sessionhistory.Transforming.apply org.scalatest.testsuite Transforming.apply(sessionHistory, requestContext, lastEventDate)
476 14549 19647 - 19647 Select org.make.api.sessionhistory.SessionHistory.persister org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest sessionhistory.this.SessionHistory.persister
489 17279 20192 - 20205 Select org.make.api.sessionhistory.Closed.lastEventDate Closed.this.lastEventDate
489 13803 20149 - 20206 Apply org.make.api.sessionhistory.State.retrieveOrExpireSession Closed.this.retrieveOrExpireSession(command, settings, Closed.this.lastEventDate)
491 10365 20283 - 20349 ApplyToImplicitArgs org.make.api.sessionhistory.Closed.transferEventWhilstClosed Closed.this.transferEventWhilstClosed(command, Closed.this.userId, userHistoryCoordinator)(context, timeout)
492 18339 20396 - 20461 ApplyToImplicitArgs org.make.api.sessionhistory.Closed.onRetrieveUserVoteValues Closed.this.onRetrieveUserVoteValues(command, Closed.this.userId, userHistoryCoordinator)(context, timeout)
494 14565 20526 - 20595 ApplyToImplicitArgs org.make.api.sessionhistory.Closed.onRetrieveUserVotedProposals Closed.this.onRetrieveUserVotedProposals(command, Closed.this.userId, userHistoryCoordinator)(context, timeout)
495 10711 20681 - 20687 Select org.make.api.sessionhistory.Closed.userId Closed.this.userId
495 16790 20649 - 20688 Apply org.make.api.sessionhistory.Closed.transformClosedSession Closed.this.transformClosedSession(command, Closed.this.userId)
496 13096 20742 - 20793 Apply org.make.api.sessionhistory.State.acquireLockForVotesIfPossible Closed.this.acquireLockForVotesIfPossible(command, lockHandler)
497 11786 20847 - 20906 Apply org.make.api.sessionhistory.State.acquireLockForQualificationIfPossible Closed.this.acquireLockForQualificationIfPossible(command, lockHandler)
498 17292 20960 - 21001 Apply org.make.api.sessionhistory.State.releaseProposalLock Closed.this.releaseProposalLock(command, lockHandler)
499 13819 21055 - 21104 Apply org.make.api.sessionhistory.State.releaseLockForQualification Closed.this.releaseLockForQualification(command, lockHandler)
501 10591 21196 - 21214 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[Any](response)
501 18360 21174 - 21215 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse.Envelope[Any], Nothing, org.make.api.sessionhistory.State](replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[Any](response))
502 14530 21269 - 21298 Apply org.make.api.sessionhistory.State.onUserHistoryFailure Closed.this.onUserHistoryFailure[_](command)
504 10723 21345 - 21361 TypeApply akka.persistence.typed.scaladsl.Effect.unhandled akka.persistence.typed.scaladsl.Effect.unhandled[Nothing, org.make.api.sessionhistory.State]
506 11806 21443 - 21472 Apply org.make.api.sessionhistory.Closed.apply Closed.apply(Closed.this.userId, Closed.this.lastEventDate)
506 13729 21412 - 21474 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.State], Nothing, org.make.api.sessionhistory.State](replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Closed](Closed.apply(Closed.this.userId, Closed.this.lastEventDate)))
506 17470 21434 - 21473 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Closed](Closed.apply(Closed.this.userId, Closed.this.lastEventDate))
506 16809 21450 - 21456 Select org.make.api.sessionhistory.Closed.userId Closed.this.userId
506 13582 21458 - 21471 Select org.make.api.sessionhistory.Closed.lastEventDate Closed.this.lastEventDate
507 16543 21513 - 21560 Apply org.make.api.sessionhistory.State.stopSessionHistoryActor Closed.this.stopSessionHistoryActor(command, Closed.this.lastEventDate)
507 10605 21546 - 21559 Select org.make.api.sessionhistory.Closed.lastEventDate Closed.this.lastEventDate
512 11047 21762 - 21785 Select org.make.api.sessionhistory.SessionAction.date transformed.action.date
512 17069 21757 - 21786 Apply scala.Some.apply scala.Some.apply[java.time.ZonedDateTime](transformed.action.date)
512 14545 21711 - 21739 Select org.make.api.sessionhistory.SessionAction.arguments transformed.action.arguments
512 13598 21704 - 21787 Apply org.make.api.sessionhistory.Closed.apply Closed.apply(transformed.action.arguments, scala.Some.apply[java.time.ZonedDateTime](transformed.action.date))
514 14070 21831 - 21885 Apply org.make.api.sessionhistory.Closed.apply Closed.apply(Closed.this.userId, event.action.arguments)
514 11470 21838 - 21844 Select org.make.api.sessionhistory.Closed.userId Closed.this.userId
514 17486 21862 - 21884 Select org.make.api.sessionhistory.SessionAction.arguments event.action.arguments
516 10514 21934 - 21956 Select org.make.api.sessionhistory.SessionAction.arguments event.action.arguments
516 14448 21926 - 21972 Apply org.make.api.sessionhistory.Expired.apply Expired.apply(event.action.arguments, Closed.this.lastEventDate)
516 16559 21958 - 21971 Select org.make.api.sessionhistory.Closed.lastEventDate Closed.this.lastEventDate
518 16780 22057 - 22074 Select org.make.api.sessionhistory.SessionAction.date event.action.date
518 10920 22028 - 22034 Select org.make.api.sessionhistory.Closed.userId Closed.this.userId
518 13495 22052 - 22075 Apply scala.Some.apply scala.Some.apply[java.time.ZonedDateTime](event.action.date)
518 11487 22021 - 22076 Apply org.make.api.sessionhistory.Closed.apply Closed.apply(Closed.this.userId, scala.Some.apply[java.time.ZonedDateTime](event.action.date))
529 16226 22413 - 22413 ApplyToImplicitArgs org.make.api.technical.ActorSystemHelper.contextToSystem org.make.api.technical.ActorSystemHelper.contextToSystem(context)
529 14476 22371 - 22765 Apply akka.actor.typed.scaladsl.ActorContext.pipeToSelf context.pipeToSelf[org.make.api.userhistory.UserHistoryResponse[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]]](org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef[org.make.api.userhistory.UserHistoryCommand](userHistoryCoordinator).??[org.make.api.userhistory.UserHistoryResponse[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]]](((x$17: akka.actor.typed.ActorRef[org.make.api.userhistory.UserHistoryResponse[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]]]) => org.make.api.userhistory.RequestVoteValues.apply(userId, command.proposalIds, x$17)))(scala.concurrent.ExecutionContext.Implicits.global, org.make.api.technical.ActorSystemHelper.contextToSystem(context), timeout))(((x0$1: scala.util.Try[org.make.api.userhistory.UserHistoryResponse[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]]]) => x0$1 match { case (value: org.make.api.userhistory.UserHistoryResponse[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]]): scala.util.Success[org.make.api.userhistory.UserHistoryResponse[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]]]((value @ _)) => UserHistorySuccess.apply[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]](command.id, value.value, command.replyTo) case (exception: Throwable): scala.util.Failure[org.make.api.userhistory.UserHistoryResponse[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]]]((exception @ _)) => UserHistoryFailure.apply[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]](command.id, scala.Predef.Map.empty[org.make.core.proposal.ProposalId, Nothing], exception, command.replyTo) }))
529 10235 22413 - 22413 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
529 13710 22417 - 22466 Apply org.make.api.userhistory.RequestVoteValues.apply org.make.api.userhistory.RequestVoteValues.apply(userId, command.proposalIds, x$17)
529 17499 22443 - 22462 Select org.make.api.sessionhistory.SessionVoteValuesCommand.proposalIds command.proposalIds
529 14460 22390 - 22467 ApplyToImplicitArgs org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef.?? org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef[org.make.api.userhistory.UserHistoryCommand](userHistoryCoordinator).??[org.make.api.userhistory.UserHistoryResponse[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]]](((x$17: akka.actor.typed.ActorRef[org.make.api.userhistory.UserHistoryResponse[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]]]) => org.make.api.userhistory.RequestVoteValues.apply(userId, command.proposalIds, x$17)))(scala.concurrent.ExecutionContext.Implicits.global, org.make.api.technical.ActorSystemHelper.contextToSystem(context), timeout)
531 13245 22592 - 22607 Select org.make.api.sessionhistory.SessionVoteValuesCommand.replyTo command.replyTo
531 10939 22567 - 22577 Select org.make.api.sessionhistory.SessionHistoryCommand.id command.id
531 16679 22579 - 22590 Select org.make.api.userhistory.UserHistoryResponse.value value.value
531 9761 22508 - 22608 Apply org.make.api.sessionhistory.UserHistorySuccess.apply UserHistorySuccess.apply[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]](command.id, value.value, command.replyTo)
533 10113 22743 - 22758 Select org.make.api.sessionhistory.SessionVoteValuesCommand.replyTo command.replyTo
533 17397 22709 - 22719 Select org.make.api.sessionhistory.SessionHistoryCommand.id command.id
533 13721 22721 - 22730 TypeApply scala.collection.immutable.Map.empty scala.Predef.Map.empty[org.make.core.proposal.ProposalId, Nothing]
533 16535 22650 - 22759 Apply org.make.api.sessionhistory.UserHistoryFailure.apply UserHistoryFailure.apply[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]](command.id, scala.Predef.Map.empty[org.make.core.proposal.ProposalId, Nothing], exception, command.replyTo)
535 11217 22770 - 22784 TypeApply akka.persistence.typed.scaladsl.Effect.noReply akka.persistence.typed.scaladsl.Effect.noReply[Nothing, org.make.api.sessionhistory.State]
547 12976 23144 - 23144 ApplyToImplicitArgs org.make.api.technical.ActorSystemHelper.contextToSystem org.make.api.technical.ActorSystemHelper.contextToSystem(context)
547 11231 23121 - 23400 ApplyToImplicitArgs org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef.?? org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef[org.make.api.userhistory.UserHistoryCommand](userHistoryCoordinator).??[org.make.api.userhistory.UserHistoryResponse[Seq[org.make.core.proposal.ProposalId]]](((x$18: akka.actor.typed.ActorRef[org.make.api.userhistory.UserHistoryResponse[Seq[org.make.core.proposal.ProposalId]]]) => org.make.api.userhistory.RequestUserVotedProposalsPaginate.apply(userId, scala.None, scala.None, command.proposalsIds, command.limit, command.offset, x$18)))(scala.concurrent.ExecutionContext.Implicits.global, org.make.api.technical.ActorSystemHelper.contextToSystem(context), timeout)
547 10124 23148 - 23399 Apply org.make.api.userhistory.RequestUserVotedProposalsPaginate.apply org.make.api.userhistory.RequestUserVotedProposalsPaginate.apply(userId, scala.None, scala.None, command.proposalsIds, command.limit, command.offset, x$18)
547 16553 23144 - 23144 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
549 16691 23230 - 23234 Select scala.None scala.None
550 13116 23267 - 23271 Select scala.None scala.None
551 9971 23296 - 23316 Select org.make.api.sessionhistory.SessionVotedProposalsPaginateCommand.proposalsIds command.proposalsIds
552 17413 23334 - 23347 Select org.make.api.sessionhistory.SessionVotedProposalsPaginateCommand.limit command.limit
553 14222 23366 - 23380 Select org.make.api.sessionhistory.SessionVotedProposalsPaginateCommand.offset command.offset
556 10809 23095 - 23649 Apply akka.actor.typed.scaladsl.ActorContext.pipeToSelf context.pipeToSelf[org.make.api.userhistory.UserHistoryResponse[Seq[org.make.core.proposal.ProposalId]]](org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef[org.make.api.userhistory.UserHistoryCommand](userHistoryCoordinator).??[org.make.api.userhistory.UserHistoryResponse[Seq[org.make.core.proposal.ProposalId]]](((x$18: akka.actor.typed.ActorRef[org.make.api.userhistory.UserHistoryResponse[Seq[org.make.core.proposal.ProposalId]]]) => org.make.api.userhistory.RequestUserVotedProposalsPaginate.apply(userId, scala.None, scala.None, command.proposalsIds, command.limit, command.offset, x$18)))(scala.concurrent.ExecutionContext.Implicits.global, org.make.api.technical.ActorSystemHelper.contextToSystem(context), timeout))(((x0$1: scala.util.Try[org.make.api.userhistory.UserHistoryResponse[Seq[org.make.core.proposal.ProposalId]]]) => x0$1 match { case (value: org.make.api.userhistory.UserHistoryResponse[Seq[org.make.core.proposal.ProposalId]]): scala.util.Success[org.make.api.userhistory.UserHistoryResponse[Seq[org.make.core.proposal.ProposalId]]]((value @ _)) => UserHistorySuccess.apply[Seq[org.make.core.proposal.ProposalId]](command.id, value.value, command.replyTo) case (exception: Throwable): scala.util.Failure[org.make.api.userhistory.UserHistoryResponse[Seq[org.make.core.proposal.ProposalId]]]((exception @ _)) => UserHistoryFailure.apply[Seq[org.make.core.proposal.ProposalId]](command.id, scala.`package`.Seq.empty[Nothing], exception, command.replyTo) }))
557 17185 23474 - 23484 Select org.make.api.sessionhistory.SessionHistoryCommand.id command.id
557 13491 23486 - 23497 Select org.make.api.userhistory.UserHistoryResponse.value value.value
557 17379 23438 - 23515 Apply org.make.api.sessionhistory.UserHistorySuccess.apply UserHistorySuccess.apply[Seq[org.make.core.proposal.ProposalId]](command.id, value.value, command.replyTo)
557 9989 23499 - 23514 Select org.make.api.sessionhistory.SessionVotedProposalsPaginateCommand.replyTo command.replyTo
559 12990 23557 - 23643 Apply org.make.api.sessionhistory.UserHistoryFailure.apply UserHistoryFailure.apply[Seq[org.make.core.proposal.ProposalId]](command.id, scala.`package`.Seq.empty[Nothing], exception, command.replyTo)
559 16440 23627 - 23642 Select org.make.api.sessionhistory.SessionVotedProposalsPaginateCommand.replyTo command.replyTo
559 10144 23605 - 23614 TypeApply scala.collection.SeqFactory.Delegate.empty scala.`package`.Seq.empty[Nothing]
559 14235 23593 - 23603 Select org.make.api.sessionhistory.SessionHistoryCommand.id command.id
561 17197 23654 - 23668 TypeApply akka.persistence.typed.scaladsl.Effect.noReply akka.persistence.typed.scaladsl.Effect.noReply[Nothing, org.make.api.sessionhistory.State]
565 13839 23795 - 23795 Block <nosymbol> ()
565 15609 23795 - 23795 Literal <nosymbol> ()
565 9878 23825 - 24148 Block <nosymbol> { Closed.this.logger.warn(("Session ".+(command.id).+(" has moved from user ").+(userId.value).+(" to user ").+(command.userId.value): String)); akka.persistence.typed.scaladsl.Effect.persist[org.make.api.sessionhistory.SessionTransformed, Nothing](SessionTransformed.apply(command.id, command.requestContext, SessionAction.apply[org.make.core.user.UserId](org.make.core.DateHelper.now(), "sessionTransformed", command.userId))) }
565 13503 23799 - 23823 Apply java.lang.Object.!= command.userId.!=(userId)
566 9864 23833 - 23938 Apply grizzled.slf4j.Logger.warn Closed.this.logger.warn(("Session ".+(command.id).+(" has moved from user ").+(userId.value).+(" to user ").+(command.userId.value): String))
567 13410 23945 - 24142 Apply akka.persistence.typed.scaladsl.Effect.persist akka.persistence.typed.scaladsl.Effect.persist[org.make.api.sessionhistory.SessionTransformed, Nothing](SessionTransformed.apply(command.id, command.requestContext, SessionAction.apply[org.make.core.user.UserId](org.make.core.DateHelper.now(), "sessionTransformed", command.userId)))
568 16953 23969 - 24134 Apply org.make.api.sessionhistory.SessionTransformed.apply SessionTransformed.apply(command.id, command.requestContext, SessionAction.apply[org.make.core.user.UserId](org.make.core.DateHelper.now(), "sessionTransformed", command.userId))
569 17391 23999 - 24009 Select org.make.api.sessionhistory.SessionHistoryCommand.id command.id
570 13820 24021 - 24043 Select org.make.api.sessionhistory.UserConnected.requestContext command.requestContext
571 10825 24055 - 24124 Apply org.make.api.sessionhistory.SessionAction.apply SessionAction.apply[org.make.core.user.UserId](org.make.core.DateHelper.now(), "sessionTransformed", command.userId)
571 16456 24087 - 24107 Literal <nosymbol> "sessionTransformed"
571 10422 24069 - 24085 Apply org.make.core.DefaultDateHelper.now org.make.core.DateHelper.now()
571 12629 24109 - 24123 Select org.make.api.sessionhistory.UserConnected.userId command.userId
575 16358 24183 - 24196 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Ack.type](Ack)
575 12646 24153 - 24197 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.LogResult], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Ack.type](Ack))
575 10119 24166 - 24181 Select org.make.api.sessionhistory.UserConnected.replyTo command.replyTo
586 9554 24549 - 24549 ApplyToImplicitArgs org.make.api.technical.ActorSystemHelper.contextToSystem org.make.api.technical.ActorSystemHelper.contextToSystem(context)
586 15627 24526 - 24709 ApplyToImplicitArgs org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef.?? org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef[org.make.api.userhistory.UserHistoryCommand](userHistoryCoordinator).??[org.make.api.userhistory.UserHistoryResponse[org.make.api.sessionhistory.Ack.type]](((replyTo: akka.actor.typed.ActorRef[org.make.api.userhistory.UserHistoryResponse[org.make.api.sessionhistory.Ack.type]]) => org.make.api.userhistory.UserHistoryTransactionalEnvelope.apply[org.make.api.userhistory.TransactionalUserHistoryEvent[_$1]](userId, command.event.toUserHistoryEvent(userId), replyTo)))(scala.concurrent.ExecutionContext.Implicits.global, org.make.api.technical.ActorSystemHelper.contextToSystem(context), timeout)
586 13129 24549 - 24549 Select scala.concurrent.ExecutionContext.Implicits.global scala.concurrent.ExecutionContext.Implicits.global
587 17179 24612 - 24703 Apply org.make.api.userhistory.UserHistoryTransactionalEnvelope.apply org.make.api.userhistory.UserHistoryTransactionalEnvelope.apply[org.make.api.userhistory.TransactionalUserHistoryEvent[_$1]](userId, command.event.toUserHistoryEvent(userId), replyTo)
587 10734 24653 - 24693 Apply org.make.api.sessionhistory.LoggableHistoryEvent.toUserHistoryEvent command.event.toUserHistoryEvent(userId)
588 13617 24507 - 24956 Apply akka.actor.typed.scaladsl.ActorContext.pipeToSelf context.pipeToSelf[org.make.api.userhistory.UserHistoryResponse[org.make.api.sessionhistory.Ack.type]](org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef[org.make.api.userhistory.UserHistoryCommand](userHistoryCoordinator).??[org.make.api.userhistory.UserHistoryResponse[org.make.api.sessionhistory.Ack.type]](((replyTo: akka.actor.typed.ActorRef[org.make.api.userhistory.UserHistoryResponse[org.make.api.sessionhistory.Ack.type]]) => org.make.api.userhistory.UserHistoryTransactionalEnvelope.apply[org.make.api.userhistory.TransactionalUserHistoryEvent[_$1]](userId, command.event.toUserHistoryEvent(userId), replyTo)))(scala.concurrent.ExecutionContext.Implicits.global, org.make.api.technical.ActorSystemHelper.contextToSystem(context), timeout))(((x0$1: scala.util.Try[org.make.api.userhistory.UserHistoryResponse[org.make.api.sessionhistory.Ack.type]]) => x0$1 match { case (value: org.make.api.userhistory.UserHistoryResponse[org.make.api.sessionhistory.Ack.type]): scala.util.Success[org.make.api.userhistory.UserHistoryResponse[org.make.api.sessionhistory.Ack.type]]((value: org.make.api.sessionhistory.Ack.type): org.make.api.userhistory.UserHistoryResponse[org.make.api.sessionhistory.Ack.type]((log @ _))) => UserHistorySuccess.apply[org.make.api.sessionhistory.LogResult](command.id, log, command.replyTo) case (exception: Throwable): scala.util.Failure[org.make.api.userhistory.UserHistoryResponse[org.make.api.sessionhistory.Ack.type]]((exception @ _)) => UserHistoryFailure.apply[org.make.api.sessionhistory.LogResult](command.id, Failed, exception, command.replyTo) }))
589 13855 24791 - 24801 Select org.make.api.sessionhistory.SessionHistoryCommand.id command.id
589 16109 24761 - 24824 Apply org.make.api.sessionhistory.UserHistorySuccess.apply UserHistorySuccess.apply[org.make.api.sessionhistory.LogResult](command.id, log, command.replyTo)
589 10617 24808 - 24823 Select org.make.api.sessionhistory.EventEnvelope.replyTo command.replyTo
590 12544 24903 - 24913 Select org.make.api.sessionhistory.SessionHistoryCommand.id command.id
590 10745 24934 - 24949 Select org.make.api.sessionhistory.EventEnvelope.replyTo command.replyTo
590 17190 24873 - 24950 Apply org.make.api.sessionhistory.UserHistoryFailure.apply UserHistoryFailure.apply[org.make.api.sessionhistory.LogResult](command.id, Failed, exception, command.replyTo)
592 9855 24961 - 24975 TypeApply akka.persistence.typed.scaladsl.Effect.noReply akka.persistence.typed.scaladsl.Effect.noReply[Nothing, org.make.api.sessionhistory.State]
597 12862 25079 - 25124 ApplyToImplicitArgs spray.json.ProductFormatsInstances.jsonFormat2 org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest spray.json.DefaultJsonProtocol.jsonFormat2[org.make.core.user.UserId, Option[java.time.ZonedDateTime], org.make.api.sessionhistory.Closed](((userId: org.make.core.user.UserId, lastEventDate: Option[java.time.ZonedDateTime]) => Closed.apply(userId, lastEventDate)))(user.this.UserId.userIdFormatter, spray.json.DefaultJsonProtocol.optionFormat[java.time.ZonedDateTime](Closed.this.zonedDateTimeFormatter), (ClassTag.apply[org.make.api.sessionhistory.Closed](classOf[org.make.api.sessionhistory.Closed]): scala.reflect.ClassTag[org.make.api.sessionhistory.Closed]))
597 15643 25111 - 25123 Apply org.make.api.sessionhistory.Closed.apply org.scalatest.testsuite Closed.apply(userId, lastEventDate)
597 16576 25110 - 25110 ApplyToImplicitArgs spray.json.StandardFormats.optionFormat org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest spray.json.DefaultJsonProtocol.optionFormat[java.time.ZonedDateTime](Closed.this.zonedDateTimeFormatter)
597 10633 25110 - 25110 Select org.make.core.SprayJsonFormatters.zonedDateTimeFormatter org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest Closed.this.zonedDateTimeFormatter
597 14117 25110 - 25110 Select org.make.core.user.UserId.userIdFormatter org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest user.this.UserId.userIdFormatter
610 9069 25656 - 25669 Select org.make.api.sessionhistory.Expired.lastEventDate Expired.this.lastEventDate
610 17097 25613 - 25670 Apply org.make.api.sessionhistory.State.retrieveOrExpireSession Expired.this.retrieveOrExpireSession(command, settings, Expired.this.lastEventDate)
611 15865 25750 - 25778 Apply org.make.api.sessionhistory.SessionHistoryResponse.Error.ExpiredSession.apply org.make.api.sessionhistory.SessionHistoryResponse.Error.ExpiredSession.apply(Expired.this.newSessionId)
611 13834 25720 - 25779 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[_,_], Nothing, org.make.api.sessionhistory.State](command.replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Error.ExpiredSession.apply(Expired.this.newSessionId))
611 13630 25733 - 25748 Select org.make.api.sessionhistory.SessionExpiredCommand.replyTo command.replyTo
611 9762 25765 - 25777 Select org.make.api.sessionhistory.Expired.newSessionId Expired.this.newSessionId
613 10541 25834 - 25850 TypeApply akka.persistence.typed.scaladsl.Effect.unhandled akka.persistence.typed.scaladsl.Effect.unhandled[Nothing, org.make.api.sessionhistory.State]
614 16353 25888 - 25904 TypeApply akka.persistence.typed.scaladsl.Effect.unhandled akka.persistence.typed.scaladsl.Effect.unhandled[Nothing, org.make.api.sessionhistory.State]
615 12880 25942 - 25958 TypeApply akka.persistence.typed.scaladsl.Effect.unhandled akka.persistence.typed.scaladsl.Effect.unhandled[Nothing, org.make.api.sessionhistory.State]
617 13523 26040 - 26076 Apply org.make.api.sessionhistory.Expired.apply Expired.apply(Expired.this.newSessionId, Expired.this.lastEventDate)
617 16824 26062 - 26075 Select org.make.api.sessionhistory.Expired.lastEventDate Expired.this.lastEventDate
617 9769 26031 - 26077 Apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Expired](Expired.apply(Expired.this.newSessionId, Expired.this.lastEventDate))
617 9024 26048 - 26060 Select org.make.api.sessionhistory.Expired.newSessionId Expired.this.newSessionId
617 15881 26009 - 26078 Apply akka.persistence.typed.scaladsl.Effect.reply akka.persistence.typed.scaladsl.Effect.reply[org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.State], Nothing, org.make.api.sessionhistory.State](replyTo)(org.make.api.sessionhistory.SessionHistoryResponse.Envelope.apply[org.make.api.sessionhistory.Expired](Expired.apply(Expired.this.newSessionId, Expired.this.lastEventDate)))
618 10272 26117 - 26164 Apply org.make.api.sessionhistory.State.stopSessionHistoryActor Expired.this.stopSessionHistoryActor(command, Expired.this.lastEventDate)
618 12052 26150 - 26163 Select org.make.api.sessionhistory.Expired.lastEventDate Expired.this.lastEventDate
622 9043 26291 - 26327 Apply org.make.api.sessionhistory.Expired.apply Expired.apply(Expired.this.newSessionId, Expired.this.lastEventDate)
622 16259 26299 - 26311 Select org.make.api.sessionhistory.Expired.newSessionId Expired.this.newSessionId
622 12764 26313 - 26326 Select org.make.api.sessionhistory.Expired.lastEventDate Expired.this.lastEventDate
627 12069 26433 - 26479 ApplyToImplicitArgs spray.json.ProductFormatsInstances.jsonFormat2 org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest spray.json.DefaultJsonProtocol.jsonFormat2[org.make.core.session.SessionId, Option[java.time.ZonedDateTime], org.make.api.sessionhistory.Expired](((newSessionId: org.make.core.session.SessionId, lastEventDate: Option[java.time.ZonedDateTime]) => Expired.apply(newSessionId, lastEventDate)))(session.this.SessionId.sessionIdFormatter, spray.json.DefaultJsonProtocol.optionFormat[java.time.ZonedDateTime](Expired.this.zonedDateTimeFormatter), (ClassTag.apply[org.make.api.sessionhistory.Expired](classOf[org.make.api.sessionhistory.Expired]): scala.reflect.ClassTag[org.make.api.sessionhistory.Expired]))
627 15520 26464 - 26464 ApplyToImplicitArgs spray.json.StandardFormats.optionFormat org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest spray.json.DefaultJsonProtocol.optionFormat[java.time.ZonedDateTime](Expired.this.zonedDateTimeFormatter)
627 16701 26465 - 26478 Apply org.make.api.sessionhistory.Expired.apply org.scalatest.testsuite Expired.apply(newSessionId, lastEventDate)
627 9783 26464 - 26464 Select org.make.core.SprayJsonFormatters.zonedDateTimeFormatter org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest Expired.this.zonedDateTimeFormatter
627 13610 26464 - 26464 Select org.make.core.session.SessionId.sessionIdFormatter org.make.api.sessionhistory.sessionhistorycoordinatortest,org.make.api.technical.crm.crmservicecomponenttest session.this.SessionId.sessionIdFormatter