/** * @param Event $event * * @throws \Exception */ public function addEvent(Event $event) { $expectedSequenceNumber = $this->nextSequenceNumber(); if (null !== $expectedSequenceNumber && $expectedSequenceNumber !== $event->sequenceNumber()) { throw new \Exception('Corrupted sequence number.'); } $this->events[] = $this->applyRegistrationCallbacks($event); }
/** * @param Event $event * * @return mixed */ public function handle(Event $event) { $payload = $event->payload(); if ($payload instanceof UserRegistered) { $this->handleUserRegistration($payload); } elseif ($payload instanceof ChangedUsername) { $this->handleUsernameChange($payload); } }
/** * @param Event $event * * @return mixed */ public function handle(Event $event) { $payload = $event->payload(); if ($payload instanceof UserRegistered) { $this->insertRegisteredUser($payload); } elseif ($payload instanceof ChangedPassword) { $this->updateUserPassword($payload); } elseif ($payload instanceof ChangedUsername) { $this->updateUsername($payload); } }
public function it_should_apply_registration_callbacks_on_registered_events(Event $event1, Event $event2, Event $event3, Event $event4, Event $event5, EventRegistrationCallback $callback, EventRegistrationCallback $callback2) { $event1->sequenceNumber()->willReturn(1); $event2->sequenceNumber()->willReturn(2); $event3->sequenceNumber()->willReturn(1); $event4->sequenceNumber()->willReturn(2); $this->addEvent($event1); $this->addEvent($event2); $callback->onEventRegistration($event1)->shouldBeCalledTimes(1)->willReturn($event3); $callback->onEventRegistration($event2)->shouldBeCalledTimes(1)->willReturn($event4); $this->addRegistrationCallback($callback); $callback2->onEventRegistration($event3)->shouldBeCalledTimes(1)->willReturn($event3); $callback2->onEventRegistration($event4)->shouldBeCalledTimes(1)->willReturn($event4); $this->addRegistrationCallback($callback2); $event5->sequenceNumber()->willReturn(3); $callback->onEventRegistration($event5)->shouldBeCalledTimes(1)->willReturn($event5); $callback2->onEventRegistration($event5)->shouldBeCalledTimes(1)->willReturn($event5); $this->addEvent($event5); }
/** * Mutate the state of the aggregate by applying the domain event contained into the message. * Synchronize the aggregate version with the one provided by the message. * * @param Event $event */ private final function replayChange(Event $event) { $this->apply($event->payload()); $this->lastCommittedEventSequenceNumber = $event->sequenceNumber(); }
public function it_can_serialize_metadata($serializer, Event $event, Metadata $metadata) { $event->metadata()->shouldBeCalledTimes(1)->willReturn($metadata); $serializer->serialize($metadata)->shouldBeCalledTimes(1)->willReturn('{}'); $this->serializeMetadata($event)->shouldReturn('{}'); }
/** * @param Event $event * * @return mixed */ public function serializeMetadata(Event $event) { return $this->serializer->serialize($event->metadata()); }