/** * @param Serializable $payload * * @return Command */ public function createFromPayload(Serializable $payload) { $contract = $this->contractFactory->createFromObject($payload); $commandName = $contract->className(); $messageIdentifier = $this->messageIdentifierFactory->generate(); return new GenericCommand($commandName, $messageIdentifier, $payload, new Metadata(), $this->contractFactory); }
/** * @param array $record * * @return Event */ private function translateRecordIntoEventMessage(array $record) { $identifier = $this->messageIdentifierFactory->create($record['event_id']); $payload = $this->eventSerializer->deserializePayload($record['event_payload'], $this->contractFactory->createFromClassName($record['event_payload_type'])); $metadata = $this->eventSerializer->deserializeMetadata($record['event_metadata'], $this->contractFactory->createFromClassName($record['event_metadata_type'])); $sequenceNumber = (int) $record['aggregate_version']; // $commitIdentifier = new CommitIdentifier($record['commit_id']); // $committedAt = new \DateTime($record['committed_at']); $eventMessage = $this->eventFactory->create($this->aggregateRootIdentifier, $sequenceNumber, $identifier, $payload, $metadata, $this->contractFactory); // $eventMessage->setCommitIdentifier($commitIdentifier); // $eventMessage->setCommittedAt($committedAt); return $eventMessage; }
/** * @return Contract */ public function metadataType() { return $this->contractFactory->createFromObject($this->metadata); }