/** * @param CommitId $commitId * * @return void */ public function commit(CommitId $commitId) { $pendingEventEnvelopes = $this->pendingEventEnvelopes; if ($this->eventEnvelopeDecorator) { $pendingEventEnvelopes = array_map(function ($eventEnvelope) { return $this->eventEnvelopeDecorator->decorateEventEnvelope($eventEnvelope); }, $pendingEventEnvelopes); } $this->persistence->commit($commitId, $this->aggregateType, $this->aggregateId, count($this->committedEventEnvelopes) - 1, $pendingEventEnvelopes); $this->committedEventEnvelopes = array_merge($this->committedEventEnvelopes, $pendingEventEnvelopes); $this->pendingEventEnvelopes = []; }
protected function createCommit(Persistence $persistence, $commitId, $aggregateClassName, $aggregateId, $expectedAggregateVersion, array $eventEnvelopes) { $persistence->commit(CommitId::fromString($commitId), $this->getContractResolver()->resolveFromClassName($aggregateClassName), $aggregateId, $expectedAggregateVersion, $eventEnvelopes); }