/** * @param ServesEventStreamData $eventEnvelope * @param IdentifiesCommit $commit * * @return CommitEnvelope */ public function putEventInEnvelopeForCommit(ServesEventStreamData $eventEnvelope, IdentifiesCommit $commit) { $streamIdentifier = $this->getStreamIdentifierForEventEnvelope($eventEnvelope); $payloadContract = $this->getPayloadContract(); $payloadData = $this->serializeDataWithContract($eventEnvelope->getPayload(), $payloadContract); $metaDataContract = $this->getMetaDataContract(); $metaData = $this->serializeDataWithContract($eventEnvelope->getMetaData(), $metaDataContract); $envelope = new CommitEnvelope(); $envelope->setCommitId($commit->getCommitId()); $envelope->setOccurredOn($eventEnvelope->getOccurredOn()); $envelope->setCommittedOn($commit->getCommittedOn()); $envelope->setStreamId($streamIdentifier->getStreamId()); $envelope->setStreamIdContract($streamIdentifier->getStreamIdContract()); $envelope->setPayloadContract($payloadContract->toString()); $envelope->setPayload($payloadData); $envelope->setMetaDataContract($metaDataContract->toString()); $envelope->setMetaData($metaData); $envelope->setFile($eventEnvelope->getFile()); return $envelope; }